[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