[llvm] [AMDGPU] Remove redundant s_cmp_* after add X, 1 (PR #176962)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 22 01:11:58 PST 2026


================
@@ -10963,20 +10963,21 @@ static bool foldableSelect(const MachineInstr &Def) {
   return true;
 }
 
-static bool setsSCCifResultIsZero(const MachineInstr &Def, bool &NeedInversion,
+static bool setsSCCIfResultIsZero(const MachineInstr &Def, bool &NeedInversion,
                                   unsigned &NewDefOpc) {
   // S_ADD_U32 X, 1 sets SCC on carryout which can only happen if result==0.
   // S_ADD_I32 X, 1 can be converted to S_ADD_U32 X, 1 if SCC is dead.
   if (Def.getOpcode() != AMDGPU::S_ADD_I32 &&
       Def.getOpcode() != AMDGPU::S_ADD_U32)
     return false;
-  MachineOperand AddSrc1 = Def.getOperand(1);
-  MachineOperand AddSrc2 = Def.getOperand(2);
+  const MachineOperand &AddSrc1 = Def.getOperand(1);
+  const MachineOperand &AddSrc2 = Def.getOperand(2);
   int64_t addend;
-  if (!(AddSrc1.isImm() && AddSrc1.getImm() == 1) &&
-      !(AddSrc2.isImm() && AddSrc2.getImm() == 1) &&
-      !(getFoldableImm(&AddSrc1, addend) && addend == 1) &&
-      !(getFoldableImm(&AddSrc2, addend) && addend == 1))
+
+  if ((!AddSrc1.isImm() || AddSrc1.getImm() != 1) &&
+      (!AddSrc2.isImm() || AddSrc2.getImm() != 1) &&
+      (!getFoldableImm(&AddSrc1, addend) || addend != 1) &&
+      (!getFoldableImm(&AddSrc2, addend) || addend != 1))
----------------
arsenm wrote:

Missing negative tests for non-1 values 

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


More information about the llvm-commits mailing list