[AArch64][GlobalISel] Add AArch64::G_DUPLANE[X] opcodes for lane duplicates.
authorAmara Emerson <amara@apple.com>
Thu, 5 Nov 2020 05:21:39 +0000 (21:21 -0800)
committerAmara Emerson <amara@apple.com>
Thu, 5 Nov 2020 19:18:11 +0000 (11:18 -0800)
commitf347d78cca9a6b218e98d562b0e066488279602e
tree0bd03877d6ab375cd0d898e58f881f42415a9f5c
parent5c801de13cc2b615e2248be9845190bd1f5ef60f
[AArch64][GlobalISel] Add AArch64::G_DUPLANE[X] opcodes for lane duplicates.

These were previously handled by pattern matching shuffles in the selector, but
adding a new opcode and making it equivalent to the AArch64duplane SDAG node
allows us to select more patterns, like lane indexed FMLAs (patch adding a test
for that will be committed later).

The pattern matching code has been simply moved to postlegalize lowering.

Differential Revision: https://reviews.llvm.org/D90820
llvm/lib/Target/AArch64/AArch64Combine.td
llvm/lib/Target/AArch64/AArch64InstrGISel.td
llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp
llvm/lib/Target/AArch64/GISel/AArch64PostLegalizerLowering.cpp
llvm/test/CodeGen/AArch64/GlobalISel/postlegalizer-lowering-shuffle-duplane.mir [new file with mode: 0644]
llvm/test/CodeGen/AArch64/GlobalISel/select-shuffle-to-duplane.mir [deleted file]