mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Fix incorrect atomics codegen introduced in r154705, and extend test to catch it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154845 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1fbfea7b06
commit
2c651fe6f4
@ -11420,7 +11420,7 @@ X86TargetLowering::EmitAtomicBitwiseWithCustomInserter(MachineInstr *bInstr,
|
||||
t3 = t2;
|
||||
|
||||
MIB = BuildMI(newMBB, dl, TII->get(TargetOpcode::COPY), EAXreg);
|
||||
MIB.addReg(t3);
|
||||
MIB.addReg(t1);
|
||||
|
||||
MIB = BuildMI(newMBB, dl, TII->get(CXchgOpc));
|
||||
for (int i=0; i <= lastAddrIndx; ++i)
|
||||
|
@ -107,10 +107,15 @@ entry:
|
||||
; CHECK: cmpxchgl
|
||||
%17 = cmpxchg i32* %val2, i32 1976, i32 1 monotonic
|
||||
store i32 %17, i32* %old
|
||||
; CHECK: andl
|
||||
; CHECK: notl
|
||||
; CHECK: movl $1401, %[[R17mask:[a-z]*]]
|
||||
; CHECK: movl [[R17atomic:.*]], %eax
|
||||
; CHECK: movl %eax, %[[R17newval:[a-z]*]]
|
||||
; CHECK: andl %[[R17mask]], %[[R17newval]]
|
||||
; CHECK: notl %[[R17newval]]
|
||||
; CHECK: lock
|
||||
; CHECK: cmpxchgl
|
||||
; CHECK: cmpxchgl %[[R17newval]], [[R17atomic]]
|
||||
; CHECK: jne
|
||||
; CHECK: movl %eax,
|
||||
%18 = atomicrmw nand i32* %val2, i32 1401 monotonic
|
||||
store i32 %18, i32* %old
|
||||
; CHECK: andl
|
||||
|
Loading…
Reference in New Issue
Block a user