[llvm] [AMDGPU][GlobalISel] Add RegBankLegalize support for G_FPTRUNC (PR #171723)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 12 05:09:24 PST 2025


================
@@ -260,6 +260,34 @@ bool AMDGPURegBankLegalizeCombiner::tryEliminateReadAnyLane(
     RALDst = SrcMI.getOperand(1).getReg();
 
   Register RALSrc = getReadAnyLaneSrc(RALDst);
+
+  // Sgpr0 = G_AMDGPU_READANYLANE Vgpr0
+  // Sgpr1 = G_AMDGPU_READANYLANE Vgpr1
+  // Sgpr2 = G_AMDGPU_READANYLANE Vgpr2
+  // ...
+  // Src = G_BUILD_VECTOR Sgpr0, Sgpr1, Sgpr2, ...
+  // Dst = COPY Src
+  // ->
+  // Dst = G_BUILD_VECTOR Vgpr0, Vgpr1, Vgpr2, ...
+  if (!RALSrc) {
+    if (auto *BV = getOpcodeDef<GBuildVector>(RALDst, MRI)) {
+      unsigned NumElts = BV->getNumSources();
+      SmallVector<Register, 4> VgprSrcs;
+      for (unsigned i = 0; i < NumElts; ++i) {
+        auto [RAL, VgprSrc] =
+            tryMatch(BV->getSourceReg(i), AMDGPU::G_AMDGPU_READANYLANE);
+        if (!RAL)
+          break;
+        VgprSrcs.push_back(VgprSrc);
+      }
+      if (VgprSrcs.size() == NumElts) {
+        B.setInstr(Copy);
----------------
arsenm wrote:

Is this handling debug info correctly? 

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


More information about the llvm-commits mailing list