forked from OSchip/llvm-project
[mips][sched] Split IIBranch into specific instruction classes.
Summary: Almost no functional change since the InstrItinData's have been duplicated. The one functional change is to remove IIBranch from the MSA branches. The classes will be assigned to the MSA instructions as part of implementing the P5600 scheduler. II_IndirectBranchPseudo and II_ReturnPseudo can probably be removed. I've preserved the itinerary information for the corresponding pseudo instructions to avoid making a functional change to these pseudos in this patch. Reviewers: vkalintiris Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D12189 llvm-svn: 248273
This commit is contained in:
parent
21585757e6
commit
86cce70010
|
@ -217,7 +217,7 @@ class BC_MMR6_DESC : BC_MMR6_DESC_BASE<"bc", brtarget26>;
|
|||
|
||||
class BC16_MMR6_DESC : MicroMipsInst16<(outs), (ins brtarget10_mm:$offset),
|
||||
!strconcat("bc16", "\t$offset"), [],
|
||||
IIBranch, FrmI>,
|
||||
II_BC, FrmI>,
|
||||
MMR6Arch<"bc16">, MicroMipsR6Inst16 {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
|
|
|
@ -37,9 +37,9 @@ def FCMP_S32_MM : MMRel, CEQS_FT<"s", FGR32, II_C_CC_S, MipsFPCmp>,
|
|||
def FCMP_D32_MM : MMRel, CEQS_FT<"d", AFGR64, II_C_CC_D, MipsFPCmp>,
|
||||
CEQS_FM_MM<1>;
|
||||
|
||||
def BC1F_MM : MMRel, BC1F_FT<"bc1f", brtarget_mm, IIBranch, MIPS_BRANCH_F>,
|
||||
def BC1F_MM : MMRel, BC1F_FT<"bc1f", brtarget_mm, II_BC1F, MIPS_BRANCH_F>,
|
||||
BC1F_FM_MM<0x1c>, ISA_MIPS1_NOT_32R6_64R6;
|
||||
def BC1T_MM : MMRel, BC1F_FT<"bc1t", brtarget_mm, IIBranch, MIPS_BRANCH_T>,
|
||||
def BC1T_MM : MMRel, BC1F_FT<"bc1t", brtarget_mm, II_BC1T, MIPS_BRANCH_T>,
|
||||
BC1F_FM_MM<0x1d>, ISA_MIPS1_NOT_32R6_64R6;
|
||||
def CVT_W_S_MM : MMRel, ABSS_FT<"cvt.w.s", FGR32Opnd, FGR32Opnd, II_CVT>,
|
||||
ROUND_W_FM_MM<0, 0x24>;
|
||||
|
|
|
@ -175,7 +175,7 @@ def simm23_lsl2 : Operand<i32> {
|
|||
class CompactBranchMM<string opstr, DAGOperand opnd, PatFrag cond_op,
|
||||
RegisterOperand RO> :
|
||||
InstSE<(outs), (ins RO:$rs, opnd:$offset),
|
||||
!strconcat(opstr, "\t$rs, $offset"), [], IIBranch, FrmI> {
|
||||
!strconcat(opstr, "\t$rs, $offset"), [], II_BCCZC, FrmI> {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
let hasDelaySlot = 0;
|
||||
|
@ -401,7 +401,7 @@ class LoadImmMM16<string opstr, Operand Od, RegisterOperand RO> :
|
|||
// 16-bit Jump and Link (Call)
|
||||
class JumpLinkRegMM16<string opstr, RegisterOperand RO> :
|
||||
MicroMipsInst16<(outs), (ins RO:$rs), !strconcat(opstr, "\t$rs"),
|
||||
[(MipsJmpLink RO:$rs)], IIBranch, FrmR> {
|
||||
[(MipsJmpLink RO:$rs)], II_JALR, FrmR> {
|
||||
let isCall = 1;
|
||||
let hasDelaySlot = 1;
|
||||
let Defs = [RA];
|
||||
|
@ -410,7 +410,7 @@ class JumpLinkRegMM16<string opstr, RegisterOperand RO> :
|
|||
// 16-bit Jump Reg
|
||||
class JumpRegMM16<string opstr, RegisterOperand RO> :
|
||||
MicroMipsInst16<(outs), (ins RO:$rs), !strconcat(opstr, "\t$rs"),
|
||||
[], IIBranch, FrmR> {
|
||||
[], II_JR, FrmR> {
|
||||
let hasDelaySlot = 1;
|
||||
let isBranch = 1;
|
||||
let isIndirectBranch = 1;
|
||||
|
@ -419,7 +419,7 @@ class JumpRegMM16<string opstr, RegisterOperand RO> :
|
|||
// Base class for JRADDIUSP instruction.
|
||||
class JumpRAddiuStackMM16 :
|
||||
MicroMipsInst16<(outs), (ins uimm5_lsl2:$imm), "jraddiusp\t$imm",
|
||||
[], IIBranch, FrmR> {
|
||||
[], II_JRADDIUSP, FrmR> {
|
||||
let isTerminator = 1;
|
||||
let isBarrier = 1;
|
||||
let isBranch = 1;
|
||||
|
@ -429,7 +429,7 @@ class JumpRAddiuStackMM16 :
|
|||
// 16-bit Jump and Link (Call) - Short Delay Slot
|
||||
class JumpLinkRegSMM16<string opstr, RegisterOperand RO> :
|
||||
MicroMipsInst16<(outs), (ins RO:$rs), !strconcat(opstr, "\t$rs"),
|
||||
[], IIBranch, FrmR> {
|
||||
[], II_JALRS, FrmR> {
|
||||
let isCall = 1;
|
||||
let hasDelaySlot = 1;
|
||||
let Defs = [RA];
|
||||
|
@ -438,7 +438,7 @@ class JumpLinkRegSMM16<string opstr, RegisterOperand RO> :
|
|||
// 16-bit Jump Register Compact - No delay slot
|
||||
class JumpRegCMM16<string opstr, RegisterOperand RO> :
|
||||
MicroMipsInst16<(outs), (ins RO:$rs), !strconcat(opstr, "\t$rs"),
|
||||
[], IIBranch, FrmR> {
|
||||
[], II_JRC, FrmR> {
|
||||
let isTerminator = 1;
|
||||
let isBarrier = 1;
|
||||
let isBranch = 1;
|
||||
|
@ -453,7 +453,7 @@ class BrkSdbbp16MM<string opstr> :
|
|||
|
||||
class CBranchZeroMM<string opstr, DAGOperand opnd, RegisterOperand RO> :
|
||||
MicroMipsInst16<(outs), (ins RO:$rs, opnd:$offset),
|
||||
!strconcat(opstr, "\t$rs, $offset"), [], IIBranch, FrmI> {
|
||||
!strconcat(opstr, "\t$rs, $offset"), [], II_BCCZ, FrmI> {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
let hasDelaySlot = 1;
|
||||
|
@ -464,18 +464,18 @@ class CBranchZeroMM<string opstr, DAGOperand opnd, RegisterOperand RO> :
|
|||
let isCall = 1, hasDelaySlot = 1, Defs = [RA] in {
|
||||
class JumpLinkMM<string opstr, DAGOperand opnd> :
|
||||
InstSE<(outs), (ins opnd:$target), !strconcat(opstr, "\t$target"),
|
||||
[], IIBranch, FrmJ, opstr> {
|
||||
[], II_JALS, FrmJ, opstr> {
|
||||
let DecoderMethod = "DecodeJumpTargetMM";
|
||||
}
|
||||
|
||||
class JumpLinkRegMM<string opstr, RegisterOperand RO>:
|
||||
InstSE<(outs RO:$rd), (ins RO:$rs), !strconcat(opstr, "\t$rd, $rs"),
|
||||
[], IIBranch, FrmR>;
|
||||
[], II_JALRS, FrmR>;
|
||||
|
||||
class BranchCompareToZeroLinkMM<string opstr, DAGOperand opnd,
|
||||
RegisterOperand RO> :
|
||||
InstSE<(outs), (ins RO:$rs, opnd:$offset),
|
||||
!strconcat(opstr, "\t$rs, $offset"), [], IIBranch, FrmI, opstr>;
|
||||
!strconcat(opstr, "\t$rs, $offset"), [], II_BCCZALS, FrmI, opstr>;
|
||||
}
|
||||
|
||||
class LoadWordIndexedScaledMM<string opstr, RegisterOperand RO,
|
||||
|
@ -556,7 +556,7 @@ class LoadMultMM16<string opstr,
|
|||
class UncondBranchMM16<string opstr> :
|
||||
MicroMipsInst16<(outs), (ins brtarget10_mm:$offset),
|
||||
!strconcat(opstr, "\t$offset"),
|
||||
[], IIBranch, FrmI> {
|
||||
[], II_B, FrmI> {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
let isBarrier = 1;
|
||||
|
|
|
@ -1380,7 +1380,7 @@ def: Mips16Pat<(brind CPU16Regs:$rs), (JrcRx16 CPU16Regs:$rs)> {
|
|||
let isCall=1, hasDelaySlot=0 in
|
||||
def JumpLinkReg16:
|
||||
FRR16_JALRC<0, 0, 0, (outs), (ins CPU16Regs:$rs),
|
||||
"jalrc \t$rs", [(MipsJmpLink CPU16Regs:$rs)], IIBranch> {
|
||||
"jalrc \t$rs", [(MipsJmpLink CPU16Regs:$rs)], II_JALRC> {
|
||||
let Defs = [RA];
|
||||
}
|
||||
|
||||
|
|
|
@ -347,7 +347,7 @@ class CBranchBitNum<string opstr, DAGOperand opnd, PatFrag cond_op,
|
|||
InstSE<(outs), (ins RO:$rs, uimm5_64:$p, opnd:$offset),
|
||||
!strconcat(opstr, "\t$rs, $p, $offset"),
|
||||
[(brcond (i32 (cond_op (and RO:$rs, (shl shift, immZExt5_64:$p)), 0)),
|
||||
bb:$offset)], IIBranch, FrmI, opstr> {
|
||||
bb:$offset)], II_BBIT, FrmI, opstr> {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
let hasDelaySlot = 1;
|
||||
|
|
|
@ -514,13 +514,13 @@ let AdditionalPredicates = [NoNaNsFPMath],
|
|||
def MIPS_BRANCH_F : PatLeaf<(i32 0)>;
|
||||
def MIPS_BRANCH_T : PatLeaf<(i32 1)>;
|
||||
|
||||
def BC1F : MMRel, BC1F_FT<"bc1f", brtarget, IIBranch, MIPS_BRANCH_F>,
|
||||
def BC1F : MMRel, BC1F_FT<"bc1f", brtarget, II_BC1F, MIPS_BRANCH_F>,
|
||||
BC1F_FM<0, 0>, ISA_MIPS1_NOT_32R6_64R6;
|
||||
def BC1FL : MMRel, BC1F_FT<"bc1fl", brtarget, IIBranch, MIPS_BRANCH_F, 0>,
|
||||
def BC1FL : MMRel, BC1F_FT<"bc1fl", brtarget, II_BC1FL, MIPS_BRANCH_F, 0>,
|
||||
BC1F_FM<1, 0>, ISA_MIPS2_NOT_32R6_64R6;
|
||||
def BC1T : MMRel, BC1F_FT<"bc1t", brtarget, IIBranch, MIPS_BRANCH_T>,
|
||||
def BC1T : MMRel, BC1F_FT<"bc1t", brtarget, II_BC1T, MIPS_BRANCH_T>,
|
||||
BC1F_FM<0, 1>, ISA_MIPS1_NOT_32R6_64R6;
|
||||
def BC1TL : MMRel, BC1F_FT<"bc1tl", brtarget, IIBranch, MIPS_BRANCH_T, 0>,
|
||||
def BC1TL : MMRel, BC1F_FT<"bc1tl", brtarget, II_BC1TL, MIPS_BRANCH_T, 0>,
|
||||
BC1F_FM<1, 1>, ISA_MIPS2_NOT_32R6_64R6;
|
||||
|
||||
/// Floating Point Compare
|
||||
|
|
|
@ -791,7 +791,7 @@ class CBranch<string opstr, DAGOperand opnd, PatFrag cond_op,
|
|||
RegisterOperand RO, bit DelaySlot = 1> :
|
||||
InstSE<(outs), (ins RO:$rs, RO:$rt, opnd:$offset),
|
||||
!strconcat(opstr, "\t$rs, $rt, $offset"),
|
||||
[(brcond (i32 (cond_op RO:$rs, RO:$rt)), bb:$offset)], IIBranch,
|
||||
[(brcond (i32 (cond_op RO:$rs, RO:$rt)), bb:$offset)], II_BCC,
|
||||
FrmI, opstr> {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
|
@ -803,7 +803,7 @@ class CBranchZero<string opstr, DAGOperand opnd, PatFrag cond_op,
|
|||
RegisterOperand RO, bit DelaySlot = 1> :
|
||||
InstSE<(outs), (ins RO:$rs, opnd:$offset),
|
||||
!strconcat(opstr, "\t$rs, $offset"),
|
||||
[(brcond (i32 (cond_op RO:$rs, 0)), bb:$offset)], IIBranch,
|
||||
[(brcond (i32 (cond_op RO:$rs, 0)), bb:$offset)], II_BCCZ,
|
||||
FrmI, opstr> {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
|
@ -829,7 +829,7 @@ class SetCC_I<string opstr, PatFrag cond_op, Operand Od, PatLeaf imm_type,
|
|||
class JumpFJ<DAGOperand opnd, string opstr, SDPatternOperator operator,
|
||||
SDPatternOperator targetoperator, string bopstr> :
|
||||
InstSE<(outs), (ins opnd:$target), !strconcat(opstr, "\t$target"),
|
||||
[(operator targetoperator:$target)], IIBranch, FrmJ, bopstr> {
|
||||
[(operator targetoperator:$target)], II_J, FrmJ, bopstr> {
|
||||
let isTerminator=1;
|
||||
let isBarrier=1;
|
||||
let hasDelaySlot = 1;
|
||||
|
@ -839,7 +839,7 @@ class JumpFJ<DAGOperand opnd, string opstr, SDPatternOperator operator,
|
|||
|
||||
// Unconditional branch
|
||||
class UncondBranch<Instruction BEQInst> :
|
||||
PseudoSE<(outs), (ins brtarget:$offset), [(br bb:$offset)], IIBranch>,
|
||||
PseudoSE<(outs), (ins brtarget:$offset), [(br bb:$offset)], II_B>,
|
||||
PseudoInstExpansion<(BEQInst ZERO, ZERO, brtarget:$offset)> {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
|
@ -853,7 +853,7 @@ class UncondBranch<Instruction BEQInst> :
|
|||
let isTerminator=1, isBarrier=1, hasDelaySlot = 1 in
|
||||
class JumpFR<string opstr, RegisterOperand RO,
|
||||
SDPatternOperator operator = null_frag>:
|
||||
InstSE<(outs), (ins RO:$rs), "jr\t$rs", [(operator RO:$rs)], IIBranch,
|
||||
InstSE<(outs), (ins RO:$rs), "jr\t$rs", [(operator RO:$rs)], II_JR,
|
||||
FrmR, opstr>;
|
||||
|
||||
// Indirect branch
|
||||
|
@ -866,23 +866,23 @@ class IndirectBranch<string opstr, RegisterOperand RO> : JumpFR<opstr, RO> {
|
|||
let isCall=1, hasDelaySlot=1, Defs = [RA] in {
|
||||
class JumpLink<string opstr, DAGOperand opnd> :
|
||||
InstSE<(outs), (ins opnd:$target), !strconcat(opstr, "\t$target"),
|
||||
[(MipsJmpLink imm:$target)], IIBranch, FrmJ, opstr> {
|
||||
[(MipsJmpLink imm:$target)], II_JAL, FrmJ, opstr> {
|
||||
let DecoderMethod = "DecodeJumpTarget";
|
||||
}
|
||||
|
||||
class JumpLinkRegPseudo<RegisterOperand RO, Instruction JALRInst,
|
||||
Register RetReg, RegisterOperand ResRO = RO>:
|
||||
PseudoSE<(outs), (ins RO:$rs), [(MipsJmpLink RO:$rs)], IIBranch>,
|
||||
PseudoSE<(outs), (ins RO:$rs), [(MipsJmpLink RO:$rs)], II_JALR>,
|
||||
PseudoInstExpansion<(JALRInst RetReg, ResRO:$rs)>;
|
||||
|
||||
class JumpLinkReg<string opstr, RegisterOperand RO>:
|
||||
InstSE<(outs RO:$rd), (ins RO:$rs), !strconcat(opstr, "\t$rd, $rs"),
|
||||
[], IIBranch, FrmR>;
|
||||
[], II_JALR, FrmR, opstr>;
|
||||
|
||||
class BGEZAL_FT<string opstr, DAGOperand opnd,
|
||||
RegisterOperand RO, bit DelaySlot = 1> :
|
||||
InstSE<(outs), (ins RO:$rs, opnd:$offset),
|
||||
!strconcat(opstr, "\t$rs, $offset"), [], IIBranch, FrmI, opstr> {
|
||||
!strconcat(opstr, "\t$rs, $offset"), [], II_BCCZAL, FrmI, opstr> {
|
||||
let hasDelaySlot = DelaySlot;
|
||||
}
|
||||
|
||||
|
@ -891,17 +891,17 @@ let isCall=1, hasDelaySlot=1, Defs = [RA] in {
|
|||
let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1, hasDelaySlot = 1,
|
||||
hasExtraSrcRegAllocReq = 1, Defs = [AT] in {
|
||||
class TailCall<Instruction JumpInst> :
|
||||
PseudoSE<(outs), (ins calltarget:$target), [], IIBranch>,
|
||||
PseudoSE<(outs), (ins calltarget:$target), [], II_J>,
|
||||
PseudoInstExpansion<(JumpInst jmptarget:$target)>;
|
||||
|
||||
class TailCallReg<RegisterOperand RO, Instruction JRInst,
|
||||
RegisterOperand ResRO = RO> :
|
||||
PseudoSE<(outs), (ins RO:$rs), [(MipsTailCall RO:$rs)], IIBranch>,
|
||||
PseudoSE<(outs), (ins RO:$rs), [(MipsTailCall RO:$rs)], II_JR>,
|
||||
PseudoInstExpansion<(JRInst ResRO:$rs)>;
|
||||
}
|
||||
|
||||
class BAL_BR_Pseudo<Instruction RealInst> :
|
||||
PseudoSE<(outs), (ins brtarget:$offset), [], IIBranch>,
|
||||
PseudoSE<(outs), (ins brtarget:$offset), [], II_BCCZAL>,
|
||||
PseudoInstExpansion<(RealInst ZERO, brtarget:$offset)> {
|
||||
let isBranch = 1;
|
||||
let isTerminator = 1;
|
||||
|
@ -1415,7 +1415,8 @@ def TAILCALL_R : TailCallReg<GPR32Opnd, JR>;
|
|||
// Indirect branches are matched as PseudoIndirectBranch/PseudoIndirectBranch64
|
||||
// then are expanded to JR, JR64, JALR, or JALR64 depending on the ISA.
|
||||
class PseudoIndirectBranchBase<RegisterOperand RO> :
|
||||
MipsPseudo<(outs), (ins RO:$rs), [(brind RO:$rs)], IIBranch> {
|
||||
MipsPseudo<(outs), (ins RO:$rs), [(brind RO:$rs)],
|
||||
II_IndirectBranchPseudo> {
|
||||
let isTerminator=1;
|
||||
let isBarrier=1;
|
||||
let hasDelaySlot = 1;
|
||||
|
@ -1425,12 +1426,12 @@ class PseudoIndirectBranchBase<RegisterOperand RO> :
|
|||
|
||||
def PseudoIndirectBranch : PseudoIndirectBranchBase<GPR32Opnd>;
|
||||
|
||||
// Return instructions are matched as a RetRA instruction, then ar expanded
|
||||
// Return instructions are matched as a RetRA instruction, then are expanded
|
||||
// into PseudoReturn/PseudoReturn64 after register allocation. Finally,
|
||||
// MipsAsmPrinter expands this into JR, JR64, JALR, or JALR64 depending on the
|
||||
// ISA.
|
||||
class PseudoReturnBase<RegisterOperand RO> : MipsPseudo<(outs), (ins RO:$rs),
|
||||
[], IIBranch> {
|
||||
[], II_ReturnPseudo> {
|
||||
let isTerminator = 1;
|
||||
let isBarrier = 1;
|
||||
let hasDelaySlot = 1;
|
||||
|
|
|
@ -1479,7 +1479,7 @@ class MSA_CBRANCH_DESC_BASE<string instr_asm, RegisterOperand ROWD> {
|
|||
dag InOperandList = (ins ROWD:$wt, brtarget:$offset);
|
||||
string AsmString = !strconcat(instr_asm, "\t$wt, $offset");
|
||||
list<dag> Pattern = [];
|
||||
InstrItinClass Itinerary = IIBranch;
|
||||
InstrItinClass Itinerary = NoItinerary;
|
||||
bit isBranch = 1;
|
||||
bit isTerminator = 1;
|
||||
bit hasDelaySlot = 1;
|
||||
|
|
|
@ -18,7 +18,6 @@ def IMULDIV : FuncUnit;
|
|||
//===----------------------------------------------------------------------===//
|
||||
// IIM16Alu is a placeholder class for most MIPS16 instructions.
|
||||
def IIM16Alu : InstrItinClass;
|
||||
def IIBranch : InstrItinClass;
|
||||
def IIPseudo : InstrItinClass;
|
||||
|
||||
def II_ABS : InstrItinClass;
|
||||
|
@ -29,7 +28,19 @@ def II_ADD_D : InstrItinClass;
|
|||
def II_ADD_S : InstrItinClass;
|
||||
def II_AND : InstrItinClass;
|
||||
def II_ANDI : InstrItinClass;
|
||||
def II_B : InstrItinClass;
|
||||
def II_BADDU : InstrItinClass;
|
||||
def II_BBIT : InstrItinClass; // bbit[01], bbit[01]32
|
||||
def II_BC : InstrItinClass;
|
||||
def II_BC1F : InstrItinClass;
|
||||
def II_BC1FL : InstrItinClass;
|
||||
def II_BC1T : InstrItinClass;
|
||||
def II_BC1TL : InstrItinClass;
|
||||
def II_BCC : InstrItinClass; // beq and bne
|
||||
def II_BCCZ : InstrItinClass; // b[gl][et]z
|
||||
def II_BCCZAL : InstrItinClass; // bgezal and bltzal
|
||||
def II_BCCZALS : InstrItinClass; // bgezals and bltzals
|
||||
def II_BCCZC : InstrItinClass; // beqzc, bnezc
|
||||
def II_CEIL : InstrItinClass;
|
||||
def II_CFC1 : InstrItinClass;
|
||||
def II_CLO : InstrItinClass;
|
||||
|
@ -69,6 +80,17 @@ def II_DSUB : InstrItinClass;
|
|||
def II_EXT : InstrItinClass; // Any EXT instruction
|
||||
def II_FLOOR : InstrItinClass;
|
||||
def II_INS : InstrItinClass; // Any INS instruction
|
||||
def II_IndirectBranchPseudo : InstrItinClass; // Indirect branch pseudo.
|
||||
def II_J : InstrItinClass;
|
||||
def II_JAL : InstrItinClass;
|
||||
def II_JALR : InstrItinClass;
|
||||
def II_JALRC : InstrItinClass;
|
||||
def II_JALRS : InstrItinClass;
|
||||
def II_JALS : InstrItinClass;
|
||||
def II_JR : InstrItinClass;
|
||||
def II_JRADDIUSP : InstrItinClass;
|
||||
def II_JRC : InstrItinClass;
|
||||
def II_ReturnPseudo : InstrItinClass; // Return pseudo.
|
||||
def II_LB : InstrItinClass;
|
||||
def II_LBE : InstrItinClass;
|
||||
def II_LBU : InstrItinClass;
|
||||
|
@ -254,7 +276,29 @@ def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
|
|||
InstrItinData<II_SAVE , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_SEQ_SNE , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_SEQI_SNEI , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<IIBranch , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_B , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BBIT , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BC , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BC1F , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BC1FL , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BC1T , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BC1TL , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BCC , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BCCZ , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BCCZAL , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BCCZALS , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_BCCZC , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_IndirectBranchPseudo, [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_J , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_JAL , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_JALR , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_JALRC , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_JALRS , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_JALS , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_JR , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_JRADDIUSP , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_JRC , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_ReturnPseudo , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_DMUL , [InstrStage<17, [IMULDIV]>]>,
|
||||
InstrItinData<II_DMULT , [InstrStage<17, [IMULDIV]>]>,
|
||||
InstrItinData<II_DMULTU , [InstrStage<17, [IMULDIV]>]>,
|
||||
|
|
Loading…
Reference in New Issue