Skip to content

Commit 338879a

Browse files
committed
Do not treat atomic.load.sub differently than other atomic binary intrinsics.
llvm-svn: 135418
1 parent 9a5b16b commit 338879a

File tree

2 files changed

+4
-15
lines changed

2 files changed

+4
-15
lines changed

llvm/lib/Target/Mips/MipsISelLowering.cpp

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,6 @@ MipsTargetLowering::EmitAtomicBinaryPartword(MachineInstr *MI,
819819
unsigned Tmp2 = RegInfo.createVirtualRegister(RC);
820820
unsigned Tmp3 = RegInfo.createVirtualRegister(RC);
821821
unsigned Tmp4 = RegInfo.createVirtualRegister(RC);
822-
unsigned Tmp5 = RegInfo.createVirtualRegister(RC);
823822
unsigned Tmp6 = RegInfo.createVirtualRegister(RC);
824823
unsigned Tmp7 = RegInfo.createVirtualRegister(RC);
825824
unsigned Tmp8 = RegInfo.createVirtualRegister(RC);
@@ -863,14 +862,8 @@ MipsTargetLowering::EmitAtomicBinaryPartword(MachineInstr *MI,
863862
BuildMI(BB, dl, TII->get(Mips::ORi), Tmp3).addReg(Mips::ZERO).addImm(MaskImm);
864863
BuildMI(BB, dl, TII->get(Mips::SLL), Mask).addReg(Tmp3).addReg(Shift);
865864
BuildMI(BB, dl, TII->get(Mips::NOR), Mask2).addReg(Mips::ZERO).addReg(Mask);
866-
if (BinOpcode != Mips::SUBu) {
867-
BuildMI(BB, dl, TII->get(Mips::ANDi), Tmp4).addReg(Incr).addImm(MaskImm);
868-
BuildMI(BB, dl, TII->get(Mips::SLL), Incr2).addReg(Tmp4).addReg(Shift);
869-
} else {
870-
BuildMI(BB, dl, TII->get(Mips::SUBu), Tmp4).addReg(Mips::ZERO).addReg(Incr);
871-
BuildMI(BB, dl, TII->get(Mips::ANDi), Tmp5).addReg(Tmp4).addImm(MaskImm);
872-
BuildMI(BB, dl, TII->get(Mips::SLL), Incr2).addReg(Tmp5).addReg(Shift);
873-
}
865+
BuildMI(BB, dl, TII->get(Mips::ANDi), Tmp4).addReg(Incr).addImm(MaskImm);
866+
BuildMI(BB, dl, TII->get(Mips::SLL), Incr2).addReg(Tmp4).addReg(Shift);
874867

875868
BB->addSuccessor(loopMBB);
876869

@@ -899,9 +892,6 @@ MipsTargetLowering::EmitAtomicBinaryPartword(MachineInstr *MI,
899892
// nor tmp7, $0, tmp6
900893
BuildMI(BB, dl, TII->get(Mips::AND), Tmp6).addReg(Oldval).addReg(Incr2);
901894
BuildMI(BB, dl, TII->get(Mips::NOR), Tmp7).addReg(Mips::ZERO).addReg(Tmp6);
902-
} else if (BinOpcode == Mips::SUBu) {
903-
// addu tmp7, oldval, incr2
904-
BuildMI(BB, dl, TII->get(Mips::ADDu), Tmp7).addReg(Oldval).addReg(Incr2);
905895
} else if (BinOpcode) {
906896
// <binop> tmp7, oldval, incr2
907897
BuildMI(BB, dl, TII->get(BinOpcode), Tmp7).addReg(Oldval).addReg(Incr2);

llvm/test/CodeGen/Mips/atomic.ll

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,13 +129,12 @@ entry:
129129
; CHECK: ori $[[R5:[0-9]+]], $zero, 255
130130
; CHECK: sll $[[R6:[0-9]+]], $[[R5]], $[[R4]]
131131
; CHECK: nor $[[R7:[0-9]+]], $zero, $[[R6]]
132-
; CHECK: subu $[[R18:[0-9]+]], $zero, $4
133-
; CHECK: andi $[[R8:[0-9]+]], $[[R18]], 255
132+
; CHECK: andi $[[R8:[0-9]+]], $4, 255
134133
; CHECK: sll $[[R9:[0-9]+]], $[[R8]], $[[R4]]
135134

136135
; CHECK: $[[BB0:[A-Z_0-9]+]]:
137136
; CHECK: ll $[[R10:[0-9]+]], 0($[[R2]])
138-
; CHECK: addu $[[R11:[0-9]+]], $[[R10]], $[[R9]]
137+
; CHECK: subu $[[R11:[0-9]+]], $[[R10]], $[[R9]]
139138
; CHECK: and $[[R12:[0-9]+]], $[[R11]], $[[R6]]
140139
; CHECK: and $[[R13:[0-9]+]], $[[R10]], $[[R7]]
141140
; CHECK: or $[[R14:[0-9]+]], $[[R13]], $[[R12]]

0 commit comments

Comments
 (0)