Skip to content

Commit f1cd900

Browse files
committed
[Xtensa] Fix atomic rmw operation.
Fix register liveness in emitAtomicRMW function.
1 parent 6d91366 commit f1cd900

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

llvm/lib/Target/Xtensa/XtensaISelLowering.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2538,7 +2538,9 @@ MachineBasicBlock *XtensaTargetLowering::emitAtomicRMW(MachineInstr &MI,
25382538
const TargetRegisterClass *RC = getRegClassFor(MVT::i32);
25392539

25402540
unsigned R1 = MRI.createVirtualRegister(RC);
2541-
BuildMI(*BB, MI, DL, TII.get(Xtensa::L32I), R1).add(AtomicValAddr).addImm(0);
2541+
BuildMI(*BB, MI, DL, TII.get(Xtensa::L32I), R1)
2542+
.addReg(AtomicValAddr.getReg())
2543+
.addImm(0);
25422544

25432545
BB = BBLoop;
25442546

@@ -2602,7 +2604,7 @@ MachineBasicBlock *XtensaTargetLowering::emitAtomicRMW(MachineInstr &MI,
26022604
BuildMI(BB, DL, TII.get(Xtensa::WSR), Xtensa::SCOMPARE1).addReg(AtomicValPhi);
26032605
BuildMI(BB, DL, TII.get(Xtensa::S32C1I), R4)
26042606
.addReg(R2)
2605-
.addReg(AtomicValAddr.getReg())
2607+
.addReg(AtomicValAddr.getReg(), getKillRegState(AtomicValAddr.isDead()))
26062608
.addImm(0);
26072609

26082610
BuildMI(BB, DL, TII.get(Xtensa::MOV_N), AtomicValLoop).addReg(R4);

0 commit comments

Comments
 (0)