Fix JIT encoding of conditional branches

llvm-svn: 23076
This commit is contained in:
Nate Begeman 2005-08-26 04:11:42 +00:00
parent f3d06c6417
commit 7b809f593b
2 changed files with 19 additions and 27 deletions

View File

@ -66,28 +66,20 @@ class IForm<bits<6> opcode, bit aa, bit lk, dag OL, string asmstr>
}
// 1.7.2 B-Form
class BForm<bits<6> opcode, bit aa, bit lk, dag OL, string asmstr>
: I<opcode, OL, asmstr> {
bits<5> BO;
bits<3> CRNum;
bits<2> BICode;
class BForm<bits<6> opcode, bit aa, bit lk, bits<5> bo, bits<2> bicode, dag OL,
string asmstr>
: I<opcode, OL, asmstr> {
bits<3> CR;
bits<14> BD;
let Inst{6-10} = BO;
let Inst{11-13} = CRNum;
let Inst{14-15} = BICode;
let Inst{6-10} = bo;
let Inst{11-13} = CR;
let Inst{14-15} = bicode;
let Inst{16-29} = BD;
let Inst{30} = aa;
let Inst{31} = lk;
}
class BForm_ext<bits<6> opcode, bit aa, bit lk, bits<5> bo, bits<2> bicode,
dag OL, string asmstr>
: BForm<opcode, aa, lk, OL, asmstr> {
let BO = bo;
let BICode = bicode;
}
// 1.7.4 D-Form
class DForm_base<bits<6> opcode, dag OL, string asmstr> : I<opcode, OL, asmstr>{
bits<5> A;

View File

@ -80,18 +80,18 @@ let isBranch = 1, isTerminator = 1 in {
// 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, (ops CRRC:$crS, target:$block),
"blt $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, (ops CRRC:$crS, target:$block),
"beq $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, (ops CRRC:$crS, target:$block),
"bgt $block">;
def BNE : BForm_ext<16, 0, 0, 4, 2, (ops CRRC:$crS, target:$block),
"bne $block">;
def BLT : BForm<16, 0, 0, 12, 0, (ops CRRC:$crS, target:$block),
"blt $block">;
def BLE : BForm<16, 0, 0, 4, 1, (ops CRRC:$crS, target:$block),
"ble $block">;
def BEQ : BForm<16, 0, 0, 12, 2, (ops CRRC:$crS, target:$block),
"beq $block">;
def BGE : BForm<16, 0, 0, 4, 0, (ops CRRC:$crS, target:$block),
"bge $block">;
def BGT : BForm<16, 0, 0, 12, 1, (ops CRRC:$crS, target:$block),
"bgt $block">;
def BNE : BForm<16, 0, 0, 4, 2, (ops CRRC:$crS, target:$block),
"bne $block">;
}
let isCall = 1,