mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Addr2 word / byte load encodings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55591 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b7880ac470
commit
17222df0ec
@ -135,10 +135,30 @@ class AsI1<bits<4> opcod, dag oops, dag iops, Format f, string opc,
|
||||
let Inst{21-24} = opcod;
|
||||
let Inst{26-27} = 0;
|
||||
}
|
||||
|
||||
class AI2<bits<4> opcod, dag oops, dag iops, Format f, string opc,
|
||||
string asm, list<dag> pattern>
|
||||
: I<opcod, oops, iops, AddrMode2, Size4Bytes, IndexModeNone, f, opc,
|
||||
asm, "", pattern>;
|
||||
asm, "", pattern> {
|
||||
let Inst{26-27} = 1;
|
||||
}
|
||||
class AI2ldw<bits<4> opcod, dag oops, dag iops, Format f, string opc,
|
||||
string asm, list<dag> pattern>
|
||||
: AI2<opcod, oops, iops, f, opc, asm, pattern> {
|
||||
let Inst{20} = 1; // load bit
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 0; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
}
|
||||
class AI2ldb<bits<4> opcod, dag oops, dag iops, Format f, string opc,
|
||||
string asm, list<dag> pattern>
|
||||
: AI2<opcod, oops, iops, f, opc, asm, pattern> {
|
||||
let Inst{20} = 1; // load bit
|
||||
let Inst{21} = 0; // W bit
|
||||
let Inst{22} = 1; // B bit
|
||||
let Inst{24} = 1; // P bit
|
||||
}
|
||||
|
||||
class AI3<bits<4> opcod, dag oops, dag iops, Format f, string opc,
|
||||
string asm, list<dag> pattern>
|
||||
: I<opcod, oops, iops, AddrMode3, Size4Bytes, IndexModeNone, f, opc,
|
||||
|
@ -587,13 +587,13 @@ let isBranch = 1, isTerminator = 1 in {
|
||||
|
||||
// Load
|
||||
let isSimpleLoad = 1 in
|
||||
def LDR : AI2<0x0, (outs GPR:$dst), (ins addrmode2:$addr), LdFrm,
|
||||
def LDR : AI2ldw<0x0, (outs GPR:$dst), (ins addrmode2:$addr), LdFrm,
|
||||
"ldr", " $dst, $addr",
|
||||
[(set GPR:$dst, (load addrmode2:$addr))]>;
|
||||
|
||||
// Special LDR for loads from non-pc-relative constpools.
|
||||
let isSimpleLoad = 1, mayLoad = 1, isReMaterializable = 1 in
|
||||
def LDRcp : AI2<0x0, (outs GPR:$dst), (ins addrmode2:$addr), LdFrm,
|
||||
def LDRcp : AI2ldw<0x0, (outs GPR:$dst), (ins addrmode2:$addr), LdFrm,
|
||||
"ldr", " $dst, $addr", []>;
|
||||
|
||||
// Loads with zero extension
|
||||
@ -601,7 +601,7 @@ def LDRH : AI3<0xB, (outs GPR:$dst), (ins addrmode3:$addr), LdFrm,
|
||||
"ldr", "h $dst, $addr",
|
||||
[(set GPR:$dst, (zextloadi16 addrmode3:$addr))]>;
|
||||
|
||||
def LDRB : AI2<0x1, (outs GPR:$dst), (ins addrmode2:$addr), LdFrm,
|
||||
def LDRB : AI2ldb<0x1, (outs GPR:$dst), (ins addrmode2:$addr), LdFrm,
|
||||
"ldr", "b $dst, $addr",
|
||||
[(set GPR:$dst, (zextloadi8 addrmode2:$addr))]>;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user