}
// 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;
// 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,