mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
convert over bform and iform instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21349 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
57226fbc7b
commit
a611ab72ca
@ -57,8 +57,8 @@ class I<bits<6> opcode, bit ppc64, bit vmx, dag OL, string asmstr>
|
||||
}
|
||||
|
||||
// 1.7.1 I-Form
|
||||
class IForm<bits<6> opcode, bit aa, bit lk, bit ppc64, bit vmx,
|
||||
dag OL, string asmstr> : I<opcode, ppc64, vmx, OL, asmstr> {
|
||||
class IForm<bits<6> opcode, bit aa, bit lk, dag OL, string asmstr>
|
||||
: I<opcode, 0, 0, OL, asmstr> {
|
||||
bits<24> LI;
|
||||
|
||||
let Inst{6-29} = LI;
|
||||
@ -67,8 +67,8 @@ class IForm<bits<6> opcode, bit aa, bit lk, bit ppc64, bit vmx,
|
||||
}
|
||||
|
||||
// 1.7.2 B-Form
|
||||
class BForm<bits<6> opcode, bit aa, bit lk, bit ppc64, bit vmx,
|
||||
dag OL, string asmstr> : I<opcode, ppc64, vmx, OL, asmstr> {
|
||||
class BForm<bits<6> opcode, bit aa, bit lk,
|
||||
dag OL, string asmstr> : I<opcode, 0, 0, OL, asmstr> {
|
||||
bits<5> BO;
|
||||
bits<3> CRNum;
|
||||
bits<2> BICode;
|
||||
@ -83,8 +83,8 @@ class BForm<bits<6> opcode, bit aa, bit lk, bit ppc64, bit vmx,
|
||||
}
|
||||
|
||||
class BForm_ext<bits<6> opcode, bit aa, bit lk, bits<5> bo, bits<2> bicode,
|
||||
bit ppc64, bit vmx, dag OL, string asmstr>
|
||||
: BForm<opcode, aa, lk, ppc64, vmx, OL, asmstr> {
|
||||
dag OL, string asmstr>
|
||||
: BForm<opcode, aa, lk, OL, asmstr> {
|
||||
let BO = bo;
|
||||
let BICode = bicode;
|
||||
}
|
||||
|
@ -65,24 +65,24 @@ let Defs = [LR] in
|
||||
|
||||
let isBranch = 1, isTerminator = 1 in {
|
||||
def COND_BRANCH : Pseudo<(ops), "; COND_BRANCH">;
|
||||
def B : IForm<18, 0, 0, 0, 0, (ops target:$func), "b $func">;
|
||||
//def BA : IForm<18, 1, 0, 0, 0, (ops target:$func), "ba $func">;
|
||||
def BL : IForm<18, 0, 1, 0, 0, (ops target:$func), "bl $func">;
|
||||
//def BLA : IForm<18, 1, 1, 0, 0, (ops target:$func), "bla $func">;
|
||||
def B : IForm<18, 0, 0, (ops target:$func), "b $func">;
|
||||
//def BA : IForm<18, 1, 0, (ops target:$func), "ba $func">;
|
||||
def BL : IForm<18, 0, 1, (ops target:$func), "bl $func">;
|
||||
//def BLA : IForm<18, 1, 1, (ops target:$func), "bla $func">;
|
||||
|
||||
// FIXME: 4*CR# needs to be added to the BI field!
|
||||
// This will only work for CR0 as it stands now
|
||||
def BLT : BForm_ext<16, 0, 0, 12, 0, 0, 0, (ops CRRC:$crS, target:$block),
|
||||
def BLT : BForm_ext<16, 0, 0, 12, 0, (ops CRRC:$crS, target:$block),
|
||||
"blt $block">;
|
||||
def BLE : BForm_ext<16, 0, 0, 4, 1, 0, 0, (ops CRRC:$crS, target:$block),
|
||||
def BLE : BForm_ext<16, 0, 0, 4, 1, (ops CRRC:$crS, target:$block),
|
||||
"ble $block">;
|
||||
def BEQ : BForm_ext<16, 0, 0, 12, 2, 0, 0, (ops CRRC:$crS, target:$block),
|
||||
def BEQ : BForm_ext<16, 0, 0, 12, 2, (ops CRRC:$crS, target:$block),
|
||||
"beq $block">;
|
||||
def BGE : BForm_ext<16, 0, 0, 4, 0, 0, 0, (ops CRRC:$crS, target:$block),
|
||||
def BGE : BForm_ext<16, 0, 0, 4, 0, (ops CRRC:$crS, target:$block),
|
||||
"bge $block">;
|
||||
def BGT : BForm_ext<16, 0, 0, 12, 1, 0, 0, (ops CRRC:$crS, target:$block),
|
||||
def BGT : BForm_ext<16, 0, 0, 12, 1, (ops CRRC:$crS, target:$block),
|
||||
"bgt $block">;
|
||||
def BNE : BForm_ext<16, 0, 0, 4, 2, 0, 0, (ops CRRC:$crS, target:$block),
|
||||
def BNE : BForm_ext<16, 0, 0, 4, 2, (ops CRRC:$crS, target:$block),
|
||||
"bne $block">;
|
||||
}
|
||||
|
||||
@ -93,7 +93,7 @@ let isBranch = 1, isTerminator = 1, isCall = 1,
|
||||
LR,XER,CTR,
|
||||
CR0,CR1,CR5,CR6,CR7] in {
|
||||
// Convenient aliases for call instructions
|
||||
def CALLpcrel : IForm<18, 0, 1, 0, 0, (ops target:$func), "bl $func">;
|
||||
def CALLpcrel : IForm<18, 0, 1, (ops target:$func), "bl $func">;
|
||||
def CALLindirect : XLForm_2_ext<19, 528, 20, 0, 1, (ops), "bctrl">;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user