mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-28 04:19:09 +00:00
[Hexagon] Update instruction itineraries
llvm-svn: 275578
This commit is contained in:
parent
ea41f356bb
commit
771c34513a
@ -342,6 +342,10 @@ class JInst<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "", InstrItinClass itin = J_tc_2early_SLOT23>
|
||||
: InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeJ>, OpcodeHexagon;
|
||||
|
||||
class JInst_CJUMP_UCJUMP<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "", InstrItinClass itin = J_tc_2early_CJUMP_UCJUMP_ARCHDEPSLOT>
|
||||
: InstHexagon<outs, ins, asmstr, pattern, cstr, itin, TypeJ>, OpcodeHexagon;
|
||||
|
||||
// JR Instruction Class in V2/V3/V4.
|
||||
// Definition of the instruction class NOT CHANGED.
|
||||
class JRInst<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
@ -412,21 +416,11 @@ class STInstPI<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "">
|
||||
: STInst<outs, ins, asmstr, pattern, cstr>;
|
||||
|
||||
let mayStore = 1 in
|
||||
class STInst2PI<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "">
|
||||
: STInst<outs, ins, asmstr, pattern, cstr>;
|
||||
|
||||
// Post increment LD Instruction.
|
||||
class LDInstPI<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "">
|
||||
: LDInst<outs, ins, asmstr, pattern, cstr>;
|
||||
|
||||
let mayLoad = 1 in
|
||||
class LDInst2PI<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "">
|
||||
: LDInst<outs, ins, asmstr, pattern, cstr>;
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// V4 Instruction Format Definitions +
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -139,7 +139,6 @@ class MEMInst_V4<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "", InstrItinClass itin = V4LDST_tc_st_SLOT0>
|
||||
: MEMInst<outs, ins, asmstr, pattern, cstr, itin>;
|
||||
|
||||
let isCodeGenOnly = 1 in
|
||||
class EXTENDERInst<dag outs, dag ins, string asmstr, list<dag> pattern = []>
|
||||
: InstHexagon<outs, ins, asmstr, pattern, "", EXTENDER_tc_1_SLOT0123,
|
||||
TypePREFIX>, OpcodeHexagon;
|
||||
@ -151,5 +150,11 @@ class SUBInst<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
|
||||
class CJInst<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "">
|
||||
: InstHexagon<outs, ins, asmstr, pattern, cstr, COMPOUND_CJ_ARCHDEPSLOT, TypeCOMPOUND>,
|
||||
OpcodeHexagon;
|
||||
|
||||
class CJInst_JMPSET<dag outs, dag ins, string asmstr, list<dag> pattern = [],
|
||||
string cstr = "">
|
||||
: InstHexagon<outs, ins, asmstr, pattern, cstr, COMPOUND, TypeCOMPOUND>,
|
||||
OpcodeHexagon;
|
||||
|
||||
|
@ -1447,9 +1447,9 @@ let isBranch = 1, isBarrier = 1, Defs = [PC], hasSideEffects = 0,
|
||||
isExtendable = 1, opExtendable = 0, isExtentSigned = 1,
|
||||
opExtentBits = 24, opExtentAlign = 2, InputType = "imm" in
|
||||
class T_JMP<string ExtStr>
|
||||
: JInst<(outs), (ins brtarget:$dst),
|
||||
: JInst_CJUMP_UCJUMP<(outs), (ins brtarget:$dst),
|
||||
"jump " # ExtStr # "$dst",
|
||||
[], "", J_tc_2early_SLOT23> {
|
||||
[], "", J_tc_2early_CJUMP_UCJUMP_ARCHDEPSLOT> {
|
||||
bits<24> dst;
|
||||
let IClass = 0b0101;
|
||||
|
||||
@ -1462,11 +1462,11 @@ let isBranch = 1, Defs = [PC], hasSideEffects = 0, isPredicated = 1,
|
||||
isExtendable = 1, opExtendable = 1, isExtentSigned = 1,
|
||||
opExtentBits = 17, opExtentAlign = 2, InputType = "imm" in
|
||||
class T_JMP_c<bit PredNot, bit isPredNew, bit isTak, string ExtStr>
|
||||
: JInst<(outs), (ins PredRegs:$src, brtarget:$dst),
|
||||
: JInst_CJUMP_UCJUMP<(outs), (ins PredRegs:$src, brtarget:$dst),
|
||||
CondStr<"$src", !if(PredNot,0,1), isPredNew>.S #
|
||||
JumpOpcStr<"jump", isPredNew, isTak>.S # " " #
|
||||
ExtStr # "$dst",
|
||||
[], "", J_tc_2early_SLOT23>, ImmRegRel {
|
||||
[], "", J_tc_2early_CJUMP_UCJUMP_ARCHDEPSLOT>, ImmRegRel {
|
||||
let isTaken = isTak;
|
||||
let isPredicatedFalse = PredNot;
|
||||
let isPredicatedNew = isPredNew;
|
||||
|
@ -4151,7 +4151,7 @@ class CJInst_tstbit_R0<string px, bit np, string tnt>
|
||||
: InstHexagon<(outs), (ins IntRegs:$Rs, brtarget:$r9_2),
|
||||
""#px#" = tstbit($Rs, #0); if ("
|
||||
#!if(np, "!","")#""#px#".new) jump:"#tnt#" $r9_2",
|
||||
[], "", COMPOUND, TypeCOMPOUND>, OpcodeHexagon {
|
||||
[], "", COMPOUND_CJ_ARCHDEPSLOT, TypeCOMPOUND>, OpcodeHexagon {
|
||||
bits<4> Rs;
|
||||
bits<11> r9_2;
|
||||
|
||||
@ -4197,7 +4197,7 @@ class CJInst_RR<string px, string op, bit np, string tnt>
|
||||
: InstHexagon<(outs), (ins IntRegs:$Rs, IntRegs:$Rt, brtarget:$r9_2),
|
||||
""#px#" = cmp."#op#"($Rs, $Rt); if ("
|
||||
#!if(np, "!","")#""#px#".new) jump:"#tnt#" $r9_2",
|
||||
[], "", COMPOUND, TypeCOMPOUND>, OpcodeHexagon {
|
||||
[], "", COMPOUND_CJ_ARCHDEPSLOT, TypeCOMPOUND>, OpcodeHexagon {
|
||||
bits<4> Rs;
|
||||
bits<4> Rt;
|
||||
bits<11> r9_2;
|
||||
@ -4251,7 +4251,7 @@ class CJInst_RU5<string px, string op, bit np, string tnt>
|
||||
: InstHexagon<(outs), (ins IntRegs:$Rs, u5Imm:$U5, brtarget:$r9_2),
|
||||
""#px#" = cmp."#op#"($Rs, #$U5); if ("
|
||||
#!if(np, "!","")#""#px#".new) jump:"#tnt#" $r9_2",
|
||||
[], "", COMPOUND, TypeCOMPOUND>, OpcodeHexagon {
|
||||
[], "", COMPOUND_CJ_ARCHDEPSLOT, TypeCOMPOUND>, OpcodeHexagon {
|
||||
bits<4> Rs;
|
||||
bits<5> U5;
|
||||
bits<11> r9_2;
|
||||
@ -4306,7 +4306,7 @@ class CJInst_Rn1<string px, string op, bit np, string tnt>
|
||||
: InstHexagon<(outs), (ins IntRegs:$Rs, brtarget:$r9_2),
|
||||
""#px#" = cmp."#op#"($Rs,#-1); if ("
|
||||
#!if(np, "!","")#""#px#".new) jump:"#tnt#" $r9_2",
|
||||
[], "", COMPOUND, TypeCOMPOUND>, OpcodeHexagon {
|
||||
[], "", COMPOUND_CJ_ARCHDEPSLOT, TypeCOMPOUND>, OpcodeHexagon {
|
||||
bits<4> Rs;
|
||||
bits<11> r9_2;
|
||||
|
||||
@ -4355,7 +4355,7 @@ defm gt : T_pnp_CJInst_Rn1<"gt">;
|
||||
let Defs = [PC], isBranch = 1, hasSideEffects = 0, hasNewValue = 1,
|
||||
isExtentSigned = 1, opNewValue = 0, isExtendable = 1, opExtentBits = 11,
|
||||
opExtentAlign = 2, opExtendable = 2 in
|
||||
def J4_jumpseti: CJInst <
|
||||
def J4_jumpseti: CJInst_JMPSET <
|
||||
(outs IntRegs:$Rd),
|
||||
(ins u6Imm:$U6, brtarget:$r9_2),
|
||||
"$Rd = #$U6 ; jump $r9_2"> {
|
||||
@ -4375,7 +4375,7 @@ def J4_jumpseti: CJInst <
|
||||
let Defs = [PC], isBranch = 1, hasSideEffects = 0, hasNewValue = 1,
|
||||
isExtentSigned = 1, opNewValue = 0, isExtendable = 1, opExtentBits = 11,
|
||||
opExtentAlign = 2, opExtendable = 2 in
|
||||
def J4_jumpsetr: CJInst <
|
||||
def J4_jumpsetr: CJInst_JMPSET <
|
||||
(outs IntRegs:$Rd),
|
||||
(ins IntRegs:$Rs, brtarget:$r9_2),
|
||||
"$Rd = $Rs ; jump $r9_2"> {
|
||||
|
@ -49,7 +49,6 @@ def ALU32_3op_tc_1_SLOT0123 : InstrItinClass;
|
||||
def ALU32_3op_tc_2_SLOT0123 : InstrItinClass;
|
||||
def ALU32_ADDI_tc_1_SLOT0123 : InstrItinClass;
|
||||
def ALU64_tc_1_SLOT23 : InstrItinClass;
|
||||
def ALU64_tc_1or2_SLOT23 : InstrItinClass;
|
||||
def ALU64_tc_2_SLOT23 : InstrItinClass;
|
||||
def ALU64_tc_2early_SLOT23 : InstrItinClass;
|
||||
def ALU64_tc_3x_SLOT23 : InstrItinClass;
|
||||
@ -64,10 +63,9 @@ def J_tc_2early_SLOT2 : InstrItinClass;
|
||||
def LD_tc_ld_SLOT01 : InstrItinClass;
|
||||
def LD_tc_ld_SLOT0 : InstrItinClass;
|
||||
def LD_tc_3or4stall_SLOT0 : InstrItinClass;
|
||||
def M_tc_1_SLOT23 : InstrItinClass;
|
||||
def M_tc_1or2_SLOT23 : InstrItinClass;
|
||||
def M_tc_2_SLOT23 : InstrItinClass;
|
||||
def M_tc_3_SLOT23 : InstrItinClass;
|
||||
def M_tc_1_SLOT23 : InstrItinClass;
|
||||
def M_tc_3x_SLOT23 : InstrItinClass;
|
||||
def M_tc_3or4x_SLOT23 : InstrItinClass;
|
||||
def ST_tc_st_SLOT01 : InstrItinClass;
|
||||
@ -79,7 +77,6 @@ def S_2op_tc_2_SLOT23 : InstrItinClass;
|
||||
def S_2op_tc_2early_SLOT23 : InstrItinClass;
|
||||
def S_2op_tc_3or4x_SLOT23 : InstrItinClass;
|
||||
def S_3op_tc_1_SLOT23 : InstrItinClass;
|
||||
def S_3op_tc_1or2_SLOT23 : InstrItinClass;
|
||||
def S_3op_tc_2_SLOT23 : InstrItinClass;
|
||||
def S_3op_tc_2early_SLOT23 : InstrItinClass;
|
||||
def S_3op_tc_3_SLOT23 : InstrItinClass;
|
||||
@ -95,7 +92,6 @@ def J_tc_2early_SLOT0123 : InstrItinClass;
|
||||
def EXTENDER_tc_1_SLOT0123 : InstrItinClass;
|
||||
def S_3op_tc_3stall_SLOT23 : InstrItinClass;
|
||||
|
||||
|
||||
def HexagonItinerariesV4 :
|
||||
ProcessorItineraries<[SLOT0, SLOT1, SLOT2, SLOT3, SLOT_ENDLOOP], [], [
|
||||
// ALU32
|
||||
@ -114,7 +110,6 @@ def HexagonItinerariesV4 :
|
||||
|
||||
// ALU64
|
||||
InstrItinData<ALU64_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<ALU64_tc_1or2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<ALU64_tc_2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<ALU64_tc_2early_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<ALU64_tc_3x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
@ -130,6 +125,7 @@ def HexagonItinerariesV4 :
|
||||
InstrItinData<CR_tc_3x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
// J
|
||||
InstrItinData<J_tc_2early_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<J_tc_2early_CJUMP_UCJUMP_ARCHDEPSLOT , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
// JR
|
||||
InstrItinData<J_tc_2early_SLOT2 , [InstrStage<1, [SLOT2]>]>,
|
||||
|
||||
@ -140,7 +136,6 @@ def HexagonItinerariesV4 :
|
||||
|
||||
// M
|
||||
InstrItinData<M_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_1or2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_3_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_3x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
@ -159,11 +154,11 @@ def HexagonItinerariesV4 :
|
||||
InstrItinData<S_2op_tc_2early_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_2op_tc_3or4x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_1or2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_2early_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_3_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_3x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_3stall_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
|
||||
// SYS
|
||||
InstrItinData<ST_tc_3stall_SLOT0 , [InstrStage<1, [SLOT0]>]>,
|
||||
@ -188,6 +183,7 @@ def HexagonItinerariesV4 :
|
||||
InstrItinData<EXTENDER_tc_1_SLOT0123,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
|
||||
InstrItinData<COMPOUND_CJ_ARCHDEPSLOT , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<COMPOUND , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<PSEUDO , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
InstrItinData<PSEUDOM, [InstrStage<1, [SLOT2, SLOT3], 0>,
|
||||
|
@ -31,131 +31,154 @@ def COPROC_VX_vtc_SLOT23 : InstrItinClass;
|
||||
def J_tc_3stall_SLOT2 : InstrItinClass;
|
||||
def MAPPING_tc_1_SLOT0123 : InstrItinClass;
|
||||
def M_tc_3stall_SLOT23 : InstrItinClass;
|
||||
def SUBINSN_tc_1_SLOT01 : InstrItinClass;
|
||||
def SUBINSN_tc_2early_SLOT0 : InstrItinClass;
|
||||
def SUBINSN_tc_2early_SLOT01 : InstrItinClass;
|
||||
def SUBINSN_tc_3stall_SLOT0 : InstrItinClass;
|
||||
def SUBINSN_tc_ld_SLOT0 : InstrItinClass;
|
||||
def SUBINSN_tc_ld_SLOT01 : InstrItinClass;
|
||||
def SUBINSN_tc_st_SLOT01 : InstrItinClass;
|
||||
|
||||
def HexagonItinerariesV55 :
|
||||
ProcessorItineraries<[SLOT0, SLOT1, SLOT2, SLOT3, SLOT_ENDLOOP], [], [
|
||||
// ALU32
|
||||
InstrItinData<ALU32_2op_tc_1_SLOT0123 ,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>], [1, 1, 1]>,
|
||||
InstrItinData<ALU32_2op_tc_2early_SLOT0123,
|
||||
[InstrStage<2, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>], [2, 1, 1]>,
|
||||
InstrItinData<ALU32_3op_tc_1_SLOT0123 ,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>], [1, 1, 1]>,
|
||||
InstrItinData<ALU32_3op_tc_2_SLOT0123 ,
|
||||
[InstrStage<2, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>], [2, 1, 1]>,
|
||||
InstrItinData<ALU32_3op_tc_2early_SLOT0123,
|
||||
[InstrStage<2, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>], [2, 1, 1]>,
|
||||
InstrItinData<ALU32_ADDI_tc_1_SLOT0123 ,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>], [1, 1, 1]>,
|
||||
|
||||
// ALU64
|
||||
InstrItinData<ALU64_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<ALU64_tc_2_SLOT23 , [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<ALU64_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<ALU64_tc_3x_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<ALU64_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<ALU64_tc_2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1]>,
|
||||
InstrItinData<ALU64_tc_2early_SLOT23, [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1]>,
|
||||
InstrItinData<ALU64_tc_3x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1]>,
|
||||
|
||||
// CR -> System
|
||||
InstrItinData<CR_tc_2_SLOT3 , [InstrStage<2, [SLOT3]>]>,
|
||||
InstrItinData<CR_tc_2early_SLOT3 , [InstrStage<2, [SLOT3]>]>,
|
||||
InstrItinData<CR_tc_3x_SLOT3 , [InstrStage<3, [SLOT3]>]>,
|
||||
InstrItinData<CR_tc_2_SLOT3 , [InstrStage<1, [SLOT3]>], [2, 1, 1]>,
|
||||
InstrItinData<CR_tc_2early_SLOT3 , [InstrStage<1, [SLOT3]>], [2, 1, 1]>,
|
||||
InstrItinData<CR_tc_3x_SLOT3 , [InstrStage<1, [SLOT3]>], [3, 1, 1]>,
|
||||
|
||||
// Jump (conditional/unconditional/return etc)
|
||||
InstrItinData<CR_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<CR_tc_3x_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<CJ_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<CJ_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<J_tc_2early_SLOT23 , [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<J_tc_2early_CJUMP_UCJUMP_ARCHDEPSLOT , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<CR_tc_2early_SLOT23, [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1, 1]>,
|
||||
InstrItinData<CR_tc_3x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1, 1]>,
|
||||
InstrItinData<CJ_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[1, 1, 1, 1]>,
|
||||
InstrItinData<CJ_tc_2early_SLOT23, [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1, 1]>,
|
||||
InstrItinData<J_tc_2early_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1, 1]>,
|
||||
InstrItinData<J_tc_2early_CJUMP_UCJUMP_ARCHDEPSLOT,
|
||||
[InstrStage<1, [SLOT2, SLOT3]>], [2, 1, 1, 1]>,
|
||||
|
||||
// JR
|
||||
InstrItinData<J_tc_2early_SLOT2 , [InstrStage<2, [SLOT2]>]>,
|
||||
InstrItinData<J_tc_3stall_SLOT2 , [InstrStage<3, [SLOT2]>]>,
|
||||
InstrItinData<J_tc_2early_SLOT2 , [InstrStage<1, [SLOT2]>], [2, 1, 1]>,
|
||||
InstrItinData<J_tc_3stall_SLOT2 , [InstrStage<1, [SLOT2]>], [3, 1, 1]>,
|
||||
|
||||
// Extender
|
||||
InstrItinData<EXTENDER_tc_1_SLOT0123,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>], [1, 1, 1]>,
|
||||
|
||||
// Load
|
||||
InstrItinData<LD_tc_ld_SLOT01 , [InstrStage<3, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<LD_tc_3or4stall_SLOT0, [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<LD_tc_ld_SLOT0 , [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<LD_tc_ld_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>],
|
||||
[2, 1]>,
|
||||
InstrItinData<LD_tc_3or4stall_SLOT0, [InstrStage<1, [SLOT0]>], [2, 1]>,
|
||||
InstrItinData<LD_tc_ld_SLOT0 , [InstrStage<1, [SLOT0]>], [2, 1]>,
|
||||
|
||||
// M
|
||||
InstrItinData<M_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_2_SLOT23 , [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_3_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_3x_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_3or4x_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_3stall_SLOT23, [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<M_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<M_tc_2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1]>,
|
||||
InstrItinData<M_tc_3_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<M_tc_3x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1]>,
|
||||
InstrItinData<M_tc_3or4x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1]>,
|
||||
InstrItinData<M_tc_3stall_SLOT23, [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1]>,
|
||||
|
||||
// Store
|
||||
InstrItinData<ST_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<ST_tc_3stall_SLOT0, [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<ST_tc_ld_SLOT0 , [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<ST_tc_st_SLOT0 , [InstrStage<1, [SLOT0]>]>,
|
||||
|
||||
// Subinsn
|
||||
InstrItinData<SUBINSN_tc_2early_SLOT0, [InstrStage<2, [SLOT0]>]>,
|
||||
InstrItinData<SUBINSN_tc_3stall_SLOT0, [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<SUBINSN_tc_ld_SLOT0 , [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<SUBINSN_tc_1_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<SUBINSN_tc_2early_SLOT01,
|
||||
[InstrStage<2, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<SUBINSN_tc_ld_SLOT01 , [InstrStage<3, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<SUBINSN_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<ST_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<ST_tc_3stall_SLOT0, [InstrStage<1, [SLOT0]>], [2, 1, 1]>,
|
||||
InstrItinData<ST_tc_ld_SLOT0 , [InstrStage<1, [SLOT0]>], [2, 1, 1]>,
|
||||
InstrItinData<ST_tc_st_SLOT0 , [InstrStage<1, [SLOT0]>], [1, 1, 1]>,
|
||||
|
||||
// S
|
||||
InstrItinData<S_2op_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_2op_tc_2_SLOT23 , [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_2op_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_2op_tc_3or4x_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_2_SLOT23 , [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_2early_SLOT23, [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_3_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_3stall_SLOT23, [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_3op_tc_3x_SLOT23 , [InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_2op_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<S_2op_tc_2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1]>,
|
||||
InstrItinData<S_2op_tc_2early_SLOT23, [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1]>,
|
||||
InstrItinData<S_2op_tc_3or4x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1]>,
|
||||
InstrItinData<S_3op_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<S_3op_tc_2_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1]>,
|
||||
InstrItinData<S_3op_tc_2early_SLOT23, [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[2, 1, 1]>,
|
||||
InstrItinData<S_3op_tc_3_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1]>,
|
||||
InstrItinData<S_3op_tc_3stall_SLOT23, [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1]>,
|
||||
InstrItinData<S_3op_tc_3x_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[3, 1, 1]>,
|
||||
|
||||
// New Value Compare Jump
|
||||
InstrItinData<NCJ_tc_3or4stall_SLOT0, [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<NCJ_tc_3or4stall_SLOT0, [InstrStage<1, [SLOT0]>],
|
||||
[3, 1, 1, 1]>,
|
||||
|
||||
// Mem ops
|
||||
InstrItinData<V2LDST_tc_st_SLOT0 , [InstrStage<1, [SLOT0]>]>,
|
||||
InstrItinData<V2LDST_tc_ld_SLOT01 , [InstrStage<2, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<V2LDST_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<V4LDST_tc_st_SLOT0 , [InstrStage<1, [SLOT0]>]>,
|
||||
InstrItinData<V4LDST_tc_ld_SLOT01 , [InstrStage<3, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<V4LDST_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<V2LDST_tc_st_SLOT0 , [InstrStage<1, [SLOT0]>],
|
||||
[1, 1, 1, 1]>,
|
||||
InstrItinData<V2LDST_tc_ld_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>],
|
||||
[2, 1, 1, 1]>,
|
||||
InstrItinData<V2LDST_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>],
|
||||
[1, 1, 1, 1]>,
|
||||
InstrItinData<V4LDST_tc_st_SLOT0 , [InstrStage<1, [SLOT0]>],
|
||||
[1, 1, 1, 1]>,
|
||||
InstrItinData<V4LDST_tc_ld_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>],
|
||||
[3, 1, 1, 1]>,
|
||||
InstrItinData<V4LDST_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>],
|
||||
[1, 1, 1, 1]>,
|
||||
|
||||
// Endloop
|
||||
InstrItinData<J_tc_2early_SLOT0123, [InstrStage<2, [SLOT_ENDLOOP]>]>,
|
||||
InstrItinData<J_tc_2early_SLOT0123, [InstrStage<1, [SLOT_ENDLOOP]>],
|
||||
[2]>,
|
||||
|
||||
// Vector
|
||||
InstrItinData<COPROC_VMEM_vtc_long_SLOT01,
|
||||
[InstrStage<3, [SLOT0, SLOT1]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1]>], [2, 1, 1, 1]>,
|
||||
InstrItinData<COPROC_VX_vtc_long_SLOT23 ,
|
||||
[InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT2, SLOT3]>], [3, 1, 1, 1]>,
|
||||
InstrItinData<COPROC_VX_vtc_SLOT23 ,
|
||||
[InstrStage<3, [SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT2, SLOT3]>], [3, 1, 1, 1]>,
|
||||
InstrItinData<MAPPING_tc_1_SLOT0123 ,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
[InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>],
|
||||
[1, 1, 1, 1]>,
|
||||
|
||||
// Misc
|
||||
InstrItinData<COMPOUND_CJ_ARCHDEPSLOT , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<COMPOUND , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<DUPLEX , [InstrStage<1, [SLOT0]>]>,
|
||||
InstrItinData<PREFIX , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
InstrItinData<PSEUDO , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>]>,
|
||||
InstrItinData<COMPOUND_CJ_ARCHDEPSLOT , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<COMPOUND , [InstrStage<1, [SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<DUPLEX , [InstrStage<1, [SLOT0]>], [1, 1, 1]>,
|
||||
InstrItinData<PREFIX , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<PSEUDO , [InstrStage<1, [SLOT0, SLOT1, SLOT2, SLOT3]>],
|
||||
[1, 1, 1]>,
|
||||
InstrItinData<PSEUDOM, [InstrStage<1, [SLOT2, SLOT3], 0>,
|
||||
InstrStage<1, [SLOT2, SLOT3]>]>
|
||||
|
||||
InstrStage<1, [SLOT2, SLOT3]>], [1, 1, 1]>
|
||||
]>;
|
||||
|
||||
def HexagonModelV55 : SchedMachineModel {
|
||||
|
@ -167,16 +167,6 @@ def HexagonItinerariesV60 :
|
||||
InstrItinData<ST_tc_ld_SLOT0 , [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<ST_tc_st_SLOT0 , [InstrStage<1, [SLOT0]>]>,
|
||||
|
||||
// Subinsn
|
||||
InstrItinData<SUBINSN_tc_2early_SLOT0, [InstrStage<2, [SLOT0]>]>,
|
||||
InstrItinData<SUBINSN_tc_3stall_SLOT0, [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<SUBINSN_tc_ld_SLOT0 , [InstrStage<3, [SLOT0]>]>,
|
||||
InstrItinData<SUBINSN_tc_1_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<SUBINSN_tc_2early_SLOT01,
|
||||
[InstrStage<2, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<SUBINSN_tc_ld_SLOT01 , [InstrStage<3, [SLOT0, SLOT1]>]>,
|
||||
InstrItinData<SUBINSN_tc_st_SLOT01 , [InstrStage<1, [SLOT0, SLOT1]>]>,
|
||||
|
||||
// S
|
||||
InstrItinData<S_2op_tc_1_SLOT23 , [InstrStage<1, [SLOT2, SLOT3]>]>,
|
||||
InstrItinData<S_2op_tc_2_SLOT23 , [InstrStage<2, [SLOT2, SLOT3]>]>,
|
||||
|
Loading…
x
Reference in New Issue
Block a user