mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-14 16:33:28 +00:00
LA is really addi. Be consistent with operand ordering to avoid confusing the code emitter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18138 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e9cf6b9278
commit
6540c6c344
@ -698,14 +698,16 @@ void PPC32ISel::copyConstantToRegister(MachineBasicBlock *MBB,
|
||||
|
||||
unsigned GlobalBase = makeAnotherReg(Type::IntTy);
|
||||
unsigned TmpReg = makeAnotherReg(GV->getType());
|
||||
unsigned Opcode = (GV->hasWeakLinkage()
|
||||
|| GV->isExternal()
|
||||
|| dyn_cast<Function>(GV)) ? PPC::LWZ : PPC::LA;
|
||||
|
||||
// Move value at base + distance into return reg
|
||||
BuildMI(*MBB, IP, PPC::LOADHiAddr, 2, TmpReg)
|
||||
.addReg(getGlobalBaseReg(MBB, IP)).addGlobalAddress(GV);
|
||||
BuildMI(*MBB, IP, Opcode, 2, R).addGlobalAddress(GV).addReg(TmpReg);
|
||||
|
||||
if (GV->hasWeakLinkage() || GV->isExternal() || dyn_cast<Function>(GV)) {
|
||||
BuildMI(*MBB, IP, PPC::LWZ, 2, R).addGlobalAddress(GV).addReg(TmpReg);
|
||||
} else {
|
||||
BuildMI(*MBB, IP, PPC::LA, 2, R).addReg(TmpReg).addGlobalAddress(GV);
|
||||
}
|
||||
|
||||
// Add the GV to the list of things whose addresses have been taken.
|
||||
TM.AddressTaken.insert(GV);
|
||||
|
@ -113,7 +113,7 @@ def ADDICo : DForm_2<13, 0, 0, (ops GPRC:$rD, GPRC:$rA, s16imm:$imm),
|
||||
"addic. $rD, $rA, $imm">;
|
||||
def ADDIS : DForm_2<15, 0, 0, (ops GPRC:$rD, GPRC:$rA, s16imm:$imm),
|
||||
"addis $rD, $rA, $imm">;
|
||||
def LA : DForm_2<14, 0, 0, (ops GPRC:$rD, symbolLo:$sym, GPRC:$rA),
|
||||
def LA : DForm_2<14, 0, 0, (ops GPRC:$rD, GPRC:$rA, symbolLo:$sym),
|
||||
"la $rD, $sym($rA)">;
|
||||
def LOADHiAddr : DForm_2<15, 0, 0, (ops GPRC:$rD, GPRC:$rA, symbolHi:$sym),
|
||||
"addis $rD, $rA, $sym">;
|
||||
|
Loading…
x
Reference in New Issue
Block a user