BuildMI(LoopMBB, DL, TII->get(LoongArch::AND), ScratchReg)
.addReg(DestReg)
.addReg(IncrReg);
- BuildMI(LoopMBB, DL, TII->get(LoongArch::NOR), ScratchReg)
+ BuildMI(LoopMBB, DL, TII->get(LoongArch::XORI), ScratchReg)
.addReg(ScratchReg)
- .addReg(LoongArch::R0);
+ .addImm(-1);
break;
case AtomicRMWInst::Add:
BuildMI(LoopMBB, DL, TII->get(LoongArch::ADD_W), ScratchReg)
BuildMI(LoopMBB, DL, TII->get(LoongArch::AND), ScratchReg)
.addReg(DestReg)
.addReg(IncrReg);
- BuildMI(LoopMBB, DL, TII->get(LoongArch::NOR), ScratchReg)
+ BuildMI(LoopMBB, DL, TII->get(LoongArch::XORI), ScratchReg)
.addReg(ScratchReg)
- .addReg(LoongArch::R0);
+ .addImm(-1);
// TODO: support other AtomicRMWInst.
}
; LA32-NEXT: dbar 0
; LA32-NEXT: ll.w $a4, $a2, 0
; LA32-NEXT: and $a5, $a4, $a1
-; LA32-NEXT: nor $a5, $a5, $zero
+; LA32-NEXT: xori $a5, $a5, -1
; LA32-NEXT: xor $a5, $a4, $a5
; LA32-NEXT: and $a5, $a5, $a3
; LA32-NEXT: xor $a5, $a4, $a5
; LA64-NEXT: dbar 0
; LA64-NEXT: ll.w $a4, $a2, 0
; LA64-NEXT: and $a5, $a4, $a1
-; LA64-NEXT: nor $a5, $a5, $zero
+; LA64-NEXT: xori $a5, $a5, -1
; LA64-NEXT: xor $a5, $a4, $a5
; LA64-NEXT: and $a5, $a5, $a3
; LA64-NEXT: xor $a5, $a4, $a5
; LA32-NEXT: dbar 0
; LA32-NEXT: ll.w $a4, $a2, 0
; LA32-NEXT: and $a5, $a4, $a1
-; LA32-NEXT: nor $a5, $a5, $zero
+; LA32-NEXT: xori $a5, $a5, -1
; LA32-NEXT: xor $a5, $a4, $a5
; LA32-NEXT: and $a5, $a5, $a3
; LA32-NEXT: xor $a5, $a4, $a5
; LA64-NEXT: dbar 0
; LA64-NEXT: ll.w $a4, $a2, 0
; LA64-NEXT: and $a5, $a4, $a1
-; LA64-NEXT: nor $a5, $a5, $zero
+; LA64-NEXT: xori $a5, $a5, -1
; LA64-NEXT: xor $a5, $a4, $a5
; LA64-NEXT: and $a5, $a5, $a3
; LA64-NEXT: xor $a5, $a4, $a5
; LA32-NEXT: dbar 0
; LA32-NEXT: ll.w $a2, $a1, 0
; LA32-NEXT: and $a3, $a2, $a0
-; LA32-NEXT: nor $a3, $a3, $zero
+; LA32-NEXT: xori $a3, $a3, -1
; LA32-NEXT: sc.w $a3, $a1, 0
; LA32-NEXT: beqz $a3, .LBB14_1
; LA32-NEXT: # %bb.2:
; LA64-NEXT: dbar 0
; LA64-NEXT: ll.w $a2, $a1, 0
; LA64-NEXT: and $a3, $a2, $a0
-; LA64-NEXT: nor $a3, $a3, $zero
+; LA64-NEXT: xori $a3, $a3, -1
; LA64-NEXT: sc.w $a3, $a1, 0
; LA64-NEXT: beqz $a3, .LBB14_1
; LA64-NEXT: # %bb.2:
; LA64-NEXT: dbar 0
; LA64-NEXT: ll.d $a2, $a1, 0
; LA64-NEXT: and $a3, $a2, $a0
-; LA64-NEXT: nor $a3, $a3, $zero
+; LA64-NEXT: xori $a3, $a3, -1
; LA64-NEXT: sc.d $a3, $a1, 0
; LA64-NEXT: beqz $a3, .LBB15_1
; LA64-NEXT: # %bb.2: