[llvm] [GlobalISel] Fold G_ICMP if possible (PR #86357)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 28 06:43:50 PDT 2024


================
@@ -3741,9 +3741,11 @@ LegalizerHelper::lower(MachineInstr &MI, unsigned TypeIdx, LLT LowerHintTy) {
   }
   case TargetOpcode::G_ATOMIC_CMPXCHG_WITH_SUCCESS: {
     auto [OldValRes, SuccessRes, Addr, CmpVal, NewVal] = MI.getFirst5Regs();
-    MIRBuilder.buildAtomicCmpXchg(OldValRes, Addr, CmpVal, NewVal,
+    auto Tmp = MRI.createGenericVirtualRegister(MRI.getType(OldValRes));
+    MIRBuilder.buildAtomicCmpXchg(Tmp, Addr, CmpVal, NewVal,
                                   **MI.memoperands_begin());
-    MIRBuilder.buildICmp(CmpInst::ICMP_EQ, SuccessRes, OldValRes, CmpVal);
+    MIRBuilder.buildCopy(OldValRes, Tmp);
----------------
arsenm wrote:

for G_ATOMIC_CMPXCHG_WITH_SUCCESS there are 2 outputs, which I thought was in use for some reason 

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


More information about the llvm-commits mailing list