mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-26 20:26:07 +00:00
[mips] Big-endian code generation for atomic instructions.
Patch by Jyun-Yan You. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182984 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1073,7 +1073,14 @@ MipsTargetLowering::emitAtomicBinaryPartword(MachineInstr *MI,
|
||||
BuildMI(BB, DL, TII->get(Mips::AND), AlignedAddr)
|
||||
.addReg(Ptr).addReg(MaskLSB2);
|
||||
BuildMI(BB, DL, TII->get(Mips::ANDi), PtrLSB2).addReg(Ptr).addImm(3);
|
||||
BuildMI(BB, DL, TII->get(Mips::SLL), ShiftAmt).addReg(PtrLSB2).addImm(3);
|
||||
if (Subtarget->isLittle()) {
|
||||
BuildMI(BB, DL, TII->get(Mips::SLL), ShiftAmt).addReg(PtrLSB2).addImm(3);
|
||||
} else {
|
||||
unsigned Off = RegInfo.createVirtualRegister(RC);
|
||||
BuildMI(BB, DL, TII->get(Mips::XORi), Off)
|
||||
.addReg(PtrLSB2).addImm((Size == 1) ? 3 : 2);
|
||||
BuildMI(BB, DL, TII->get(Mips::SLL), ShiftAmt).addReg(Off).addImm(3);
|
||||
}
|
||||
BuildMI(BB, DL, TII->get(Mips::ORi), MaskUpper)
|
||||
.addReg(Mips::ZERO).addImm(MaskImm);
|
||||
BuildMI(BB, DL, TII->get(Mips::SLLV), Mask)
|
||||
@@ -1316,7 +1323,14 @@ MipsTargetLowering::emitAtomicCmpSwapPartword(MachineInstr *MI,
|
||||
BuildMI(BB, DL, TII->get(Mips::AND), AlignedAddr)
|
||||
.addReg(Ptr).addReg(MaskLSB2);
|
||||
BuildMI(BB, DL, TII->get(Mips::ANDi), PtrLSB2).addReg(Ptr).addImm(3);
|
||||
BuildMI(BB, DL, TII->get(Mips::SLL), ShiftAmt).addReg(PtrLSB2).addImm(3);
|
||||
if (Subtarget->isLittle()) {
|
||||
BuildMI(BB, DL, TII->get(Mips::SLL), ShiftAmt).addReg(PtrLSB2).addImm(3);
|
||||
} else {
|
||||
unsigned Off = RegInfo.createVirtualRegister(RC);
|
||||
BuildMI(BB, DL, TII->get(Mips::XORi), Off)
|
||||
.addReg(PtrLSB2).addImm((Size == 1) ? 3 : 2);
|
||||
BuildMI(BB, DL, TII->get(Mips::SLL), ShiftAmt).addReg(Off).addImm(3);
|
||||
}
|
||||
BuildMI(BB, DL, TII->get(Mips::ORi), MaskUpper)
|
||||
.addReg(Mips::ZERO).addImm(MaskImm);
|
||||
BuildMI(BB, DL, TII->get(Mips::SLLV), Mask)
|
||||
|
Reference in New Issue
Block a user