[llvm] [AMDGPU] Reland "Remove redundant s_cmp_lg_* sX, 0" (PR #164201)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 20 21:40:09 PDT 2025


================
@@ -10626,6 +10626,59 @@ bool SIInstrInfo::optimizeCompareInstr(MachineInstr &CmpInstr, Register SrcReg,
   if (SrcReg2 && !getFoldableImm(SrcReg2, *MRI, CmpValue))
     return false;
 
+  const auto optimizeCmpSelect = [&CmpInstr, SrcReg, CmpValue, MRI,
+                                  this]() -> bool {
+    if (CmpValue != 0)
+      return false;
+
+    MachineInstr *Def = MRI->getUniqueVRegDef(SrcReg);
+    if (!Def || Def->getParent() != CmpInstr.getParent())
+      return false;
+
+    bool CanOptimize = false;
+
+    // For S_OP that set SCC = DST!=0, do the transformation
+    //
+    //   s_cmp_lg_* (S_OP ...), 0 => (S_OP ...)
+    if (setsSCCifResultIsNonZero(*Def))
+      CanOptimize = true;
----------------
arsenm wrote:

Don't need this CanOptimize variable, just early return at each point? 

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


More information about the llvm-commits mailing list