[llvm] [AMDGPU][GlobalISel] Add register bank legalization for G_FADD (PR #163407)

Petar Avramovic via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 30 07:21:55 PDT 2025


================
@@ -616,6 +616,24 @@ void RegBankLegalizeHelper::lowerSplitTo32(MachineInstr &MI) {
   MI.eraseFromParent();
 }
 
+void RegBankLegalizeHelper::lowerSplitTo16(MachineInstr &MI) {
+  Register Dst = MI.getOperand(0).getReg();
+  LLT DstTy = MRI.getType(Dst);
+  assert(DstTy == V2S16);
+  auto [Val0_Lo_32, Val0_Hi_32] = unpackAExt(MI.getOperand(1).getReg());
+  auto [Val1_Lo_32, Val1_Hi_32] = unpackAExt(MI.getOperand(2).getReg());
+  unsigned Opc = MI.getOpcode();
+  auto Flags = MI.getFlags();
+  auto Val0_Lo = B.buildTrunc(SgprRB_S16, Val0_Lo_32);
+  auto Val0_Hi = B.buildTrunc(SgprRB_S16, Val0_Hi_32);
+  auto Val1_Lo = B.buildTrunc(SgprRB_S16, Val1_Lo_32);
+  auto Val1_Hi = B.buildTrunc(SgprRB_S16, Val1_Hi_32);
+  auto Lo = B.buildInstr(Opc, {SgprRB_S16}, {Val0_Lo, Val1_Lo}, Flags);
+  auto Hi = B.buildInstr(Opc, {SgprRB_S16}, {Val0_Hi, Val1_Hi}, Flags);
+  B.buildMergeLikeInstr(Dst, {Lo.getReg(0), Hi.getReg(0)});
----------------
petar-avramovic wrote:

```suggestion
  B.buildMergeLikeInstr(Dst, {Lo, Hi});
```

https://github.com/llvm/llvm-project/pull/163407


More information about the llvm-commits mailing list