[llvm] [AMDGPU] Add regbankselect rules for G_ADD/SUB and variants (PR #159860)
Petar Avramovic via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 21 03:46:53 PDT 2025
================
@@ -500,6 +500,27 @@ void RegBankLegalizeHelper::lowerUnpackMinMax(MachineInstr &MI) {
MI.eraseFromParent();
}
+void RegBankLegalizeHelper::lowerScalarizeV2S16(MachineInstr &MI) {
+ auto Op1 = B.buildUnmerge({SgprRB, S16}, MI.getOperand(1).getReg());
+ auto Hi1 = Op1.getReg(0);
+ auto Lo1 = Op1.getReg(1);
+ auto Op2 = B.buildUnmerge({SgprRB, S16}, MI.getOperand(2).getReg());
+ auto Hi2 = Op2.getReg(0);
+ auto Lo2 = Op2.getReg(1);
+
+ auto CastHi1 = B.buildZExt(SgprRB_S32, Hi1);
+ auto CastLo1 = B.buildZExt(SgprRB_S32, Lo1);
+ auto CastHi2 = B.buildZExt(SgprRB_S32, Hi2);
+ auto CastLo2 = B.buildZExt(SgprRB_S32, Lo2);
+
+ auto ResHi = B.buildInstr(MI.getOpcode(), {SgprRB_S32}, {CastHi1, CastHi2});
+ auto ResLo = B.buildInstr(MI.getOpcode(), {SgprRB_S32}, {CastLo1, CastLo2});
+
+ B.buildBuildVectorTrunc(MI.getOperand(0).getReg(),
+ {ResHi.getReg(0), ResLo.getReg(0)});
----------------
petar-avramovic wrote:
build vector and similar pack in "little endian way" index 0 are low bits
https://github.com/llvm/llvm-project/pull/159860
More information about the llvm-commits
mailing list