mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-11 00:39:36 +00:00
Use 'adr' for LEApcrel and LEApcrel. Mark LEApcrel re-materializable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104114 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0560ce471d
commit
27fa722311
@ -849,23 +849,15 @@ def PICSTRB : AXI2stb<(outs), (ins GPR:$src, addrmodepc:$addr, pred:$p),
|
||||
// LEApcrel - Load a pc-relative address into a register without offending the
|
||||
// assembler.
|
||||
let neverHasSideEffects = 1 in {
|
||||
let isReMaterializable = 1 in
|
||||
def LEApcrel : AXI1<0x0, (outs GPR:$dst), (ins i32imm:$label, pred:$p),
|
||||
Pseudo, IIC_iALUi,
|
||||
!strconcat(!strconcat(".set ${:private}PCRELV${:uid}, ($label-(",
|
||||
"${:private}PCRELL${:uid}+8))\n"),
|
||||
!strconcat("${:private}PCRELL${:uid}:\n\t",
|
||||
"add$p\t$dst, pc, #${:private}PCRELV${:uid}")),
|
||||
[]>;
|
||||
"adr$p\t$dst, #$label", []>;
|
||||
|
||||
def LEApcrelJT : AXI1<0x0, (outs GPR:$dst),
|
||||
(ins i32imm:$label, nohash_imm:$id, pred:$p),
|
||||
Pseudo, IIC_iALUi,
|
||||
!strconcat(!strconcat(".set ${:private}PCRELV${:uid}, "
|
||||
"(${label}_${id}-(",
|
||||
"${:private}PCRELL${:uid}+8))\n"),
|
||||
!strconcat("${:private}PCRELL${:uid}:\n\t",
|
||||
"add$p\t$dst, pc, #${:private}PCRELV${:uid}")),
|
||||
[]> {
|
||||
Pseudo, IIC_iALUi,
|
||||
"adr$p\t$dst, #${label}_${id}", []> {
|
||||
let Inst{25} = 1;
|
||||
}
|
||||
} // neverHasSideEffects
|
||||
|
Loading…
x
Reference in New Issue
Block a user