[llvm] [AMDGPU] Delete redundant s_cmp_or32 (PR #165261)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 27 08:17:24 PDT 2025


================
@@ -10663,25 +10687,32 @@ bool SIInstrInfo::optimizeCompareInstr(MachineInstr &CmpInstr, Register SrcReg,
     if (!setsSCCifResultIsNonZero(*Def) && !foldableSelect(Def))
       return false;
 
-    MachineInstr *KillsSCC = nullptr;
-    for (MachineInstr &MI :
-         make_range(std::next(Def->getIterator()), CmpInstr.getIterator())) {
-      if (MI.modifiesRegister(AMDGPU::SCC, &RI))
-        return false;
-      if (MI.killsRegister(AMDGPU::SCC, &RI))
-        KillsSCC = &MI;
-    }
+    if (!optimizeSCC(Def, &CmpInstr))
+      return false;
 
-    if (MachineOperand *SccDef =
-            Def->findRegisterDefOperand(AMDGPU::SCC, /*TRI=*/nullptr))
-      SccDef->setIsDead(false);
-    if (KillsSCC)
-      KillsSCC->clearRegisterKills(AMDGPU::SCC, /*TRI=*/nullptr);
-    CmpInstr.eraseFromParent();
+    // If s_or_32 result is unused (i.e. it is effectively a 64-bit s_cmp_lg of
----------------
jayfoad wrote:

```suggestion
    // If s_or_b32 result is unused (i.e. it is effectively a 64-bit s_cmp_lg of
```

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


More information about the llvm-commits mailing list