[llvm] [AMDGPU] Remove setcc by using add/sub carryout (PR #155255)

via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 19 10:14:05 PDT 2025


================
@@ -5959,9 +5962,13 @@ SITargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
         .add(Src1);
     // clang-format on
 
-    BuildMI(*BB, MI, DL, TII->get(AMDGPU::S_CSELECT_B64), Dest1.getReg())
-        .addImm(1)
-        .addImm(0);
+    const TargetRegisterClass *Dest1RC = MRI.getRegClass(Dest1.getReg());
+    unsigned Dest1Size = TRI->getRegSizeInBits(*Dest1RC);
+    assert(Dest1Size == 64 || Dest1Size == 32);
+    unsigned SelOpc =
+        (Dest1Size == 64) ? AMDGPU::S_CSELECT_B64 : AMDGPU::S_CSELECT_B32;
+
----------------
LU-JOHN wrote:

This code is checking for the $scc_out (Dest1) size which can be 32 or 64, not the 32-bit Dest0.  The old code always generated a 64-bit select.  Change moved to a separate PR https://github.com/llvm/llvm-project/pull/159814.

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


More information about the llvm-commits mailing list