[llvm] [AArch64][SME2] Add FORM_STRIDED_TUPLE pseudo nodes (PR #116399)
Sander de Smalen via llvm-commits
llvm-commits at lists.llvm.org
Wed Dec 11 06:56:22 PST 2024
================
@@ -8666,6 +8718,30 @@ void AArch64TargetLowering::AdjustInstrPostInstrSelection(MachineInstr &MI,
}
}
+ if (MI.getOpcode() == AArch64::FORM_TRANSPOSED_REG_TUPLE_X2_PSEUDO ||
+ MI.getOpcode() == AArch64::FORM_TRANSPOSED_REG_TUPLE_X4_PSEUDO) {
+ // If input values to the FORM_TRANSPOSED_REG_TUPLE pseudo aren't copies
+ // from a StridedOrContiguous class, fall back on REG_SEQUENCE node.
+ if (shouldUseFormStridedPseudo(MI))
+ return;
+
+ static const unsigned SubRegs[] = {AArch64::zsub0, AArch64::zsub1,
+ AArch64::zsub2, AArch64::zsub3};
+
+ const TargetInstrInfo *TII = Subtarget->getInstrInfo();
+ MachineInstrBuilder MIB = BuildMI(*MI.getParent(), MI, MI.getDebugLoc(),
+ TII->get(TargetOpcode::REG_SEQUENCE),
+ MI.getOperand(0).getReg());
+
+ for (unsigned I = 1; I < MI.getNumOperands(); ++I) {
+ MIB.add(MI.getOperand(I));
+ MIB.addImm(SubRegs[I - 1]);
----------------
sdesmalen-arm wrote:
nit:
```suggestion
MIB.addImm(AArch64::zsub0 + (I-1));
```
Then you can remove `SubRegs[]`.
https://github.com/llvm/llvm-project/pull/116399
More information about the llvm-commits
mailing list