forked from OSchip/llvm-project
Fix instruction encoding for "bd(n)z" on PowerPC,
by using a new instruction format BForm_1. llvm-svn: 167861
This commit is contained in:
parent
84ee76acfe
commit
0117718580
|
@ -234,10 +234,10 @@ def : Pat<(PPCtc_return CTRRC8:$dst, imm:$imm),
|
||||||
|
|
||||||
let isBranch = 1, isTerminator = 1, hasCtrlDep = 1, PPC970_Unit = 7 in {
|
let isBranch = 1, isTerminator = 1, hasCtrlDep = 1, PPC970_Unit = 7 in {
|
||||||
let Defs = [CTR8], Uses = [CTR8] in {
|
let Defs = [CTR8], Uses = [CTR8] in {
|
||||||
def BDZ8 : IForm_ext<16, 18, 0, 0, (outs), (ins condbrtarget:$dst),
|
def BDZ8 : BForm_1<16, 18, 0, 0, (outs), (ins condbrtarget:$dst),
|
||||||
"bdz $dst", BrB, []>;
|
"bdz $dst">;
|
||||||
def BDNZ8 : IForm_ext<16, 16, 0, 0, (outs), (ins condbrtarget:$dst),
|
def BDNZ8 : BForm_1<16, 16, 0, 0, (outs), (ins condbrtarget:$dst),
|
||||||
"bdnz $dst", BrB, []>;
|
"bdnz $dst">;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -94,12 +94,6 @@ class IForm<bits<6> opcode, bit aa, bit lk, dag OOL, dag IOL, string asmstr,
|
||||||
let Inst{31} = lk;
|
let Inst{31} = lk;
|
||||||
}
|
}
|
||||||
|
|
||||||
class IForm_ext<bits<6> opcode, bits<5> bo, bit aa, bit lk, dag OOL, dag IOL,
|
|
||||||
string asmstr, InstrItinClass itin, list<dag> pattern>
|
|
||||||
: IForm<opcode, aa, lk, OOL, IOL, asmstr, itin, pattern> {
|
|
||||||
let LI{0-4} = bo;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 1.7.2 B-Form
|
// 1.7.2 B-Form
|
||||||
class BForm<bits<6> opcode, bit aa, bit lk, dag OOL, dag IOL, string asmstr>
|
class BForm<bits<6> opcode, bit aa, bit lk, dag OOL, dag IOL, string asmstr>
|
||||||
: I<opcode, OOL, IOL, asmstr, BrB> {
|
: I<opcode, OOL, IOL, asmstr, BrB> {
|
||||||
|
@ -118,6 +112,13 @@ class BForm<bits<6> opcode, bit aa, bit lk, dag OOL, dag IOL, string asmstr>
|
||||||
let Inst{31} = lk;
|
let Inst{31} = lk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class BForm_1<bits<6> opcode, bits<5> bo, bit aa, bit lk, dag OOL, dag IOL,
|
||||||
|
string asmstr>
|
||||||
|
: BForm<opcode, aa, lk, OOL, IOL, asmstr> {
|
||||||
|
let BIBO{4-0} = bo;
|
||||||
|
let BIBO{6-5} = 0;
|
||||||
|
let CR = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// 1.7.4 D-Form
|
// 1.7.4 D-Form
|
||||||
class DForm_base<bits<6> opcode, dag OOL, dag IOL, string asmstr,
|
class DForm_base<bits<6> opcode, dag OOL, dag IOL, string asmstr,
|
||||||
|
|
|
@ -446,10 +446,10 @@ let isBranch = 1, isTerminator = 1, hasCtrlDep = 1, PPC970_Unit = 7 in {
|
||||||
/*[(PPCcondbranch CRRC:$crS, imm:$opc, bb:$dst)]*/>;
|
/*[(PPCcondbranch CRRC:$crS, imm:$opc, bb:$dst)]*/>;
|
||||||
|
|
||||||
let Defs = [CTR], Uses = [CTR] in {
|
let Defs = [CTR], Uses = [CTR] in {
|
||||||
def BDZ : IForm_ext<16, 18, 0, 0, (outs), (ins condbrtarget:$dst),
|
def BDZ : BForm_1<16, 18, 0, 0, (outs), (ins condbrtarget:$dst),
|
||||||
"bdz $dst", BrB, []>;
|
"bdz $dst">;
|
||||||
def BDNZ : IForm_ext<16, 16, 0, 0, (outs), (ins condbrtarget:$dst),
|
def BDNZ : BForm_1<16, 16, 0, 0, (outs), (ins condbrtarget:$dst),
|
||||||
"bdnz $dst", BrB, []>;
|
"bdnz $dst">;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue