[llvm] [AMDGPU] siloadstoreopt generate REG_SEQUENCE with aligned operands (PR #162088)
Janek van Oirschot via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 7 10:47:53 PDT 2025
================
@@ -1411,12 +1420,24 @@ SILoadStoreOptimizer::copyFromSrcRegs(CombineInfo &CI, CombineInfo &Paired,
const auto *Src0 = TII->getNamedOperand(*CI.I, OpName);
const auto *Src1 = TII->getNamedOperand(*Paired.I, OpName);
- BuildMI(*MBB, InsertBefore, DL, TII->get(AMDGPU::REG_SEQUENCE), SrcReg)
- .add(*Src0)
- .addImm(SubRegIdx0)
- .add(*Src1)
- .addImm(SubRegIdx1);
-
+ // Make sure the generated REG_SEQUENCE has sensibly aligned registers.
+ if (isCompatibleAlignSubReg(Paired.DataRC, SubRegIdx1, STM, TRI)) {
+ BuildMI(*MBB, InsertBefore, DL, TII->get(AMDGPU::REG_SEQUENCE), SrcReg)
+ .add(*Src0)
+ .addImm(SubRegIdx0)
+ .add(*Src1)
+ .addImm(SubRegIdx1);
+ } else {
----------------
JanekvO wrote:
Played around with `getSubClassWithSubReg` but not quite sure how to use that in this context: a lot of times it'd return the same RC as put in. However, did help me find `getSubRegisterClass`.
https://github.com/llvm/llvm-project/pull/162088
More information about the llvm-commits
mailing list