mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-12 14:17:59 +00:00
[mips] Add itineraries for ext and ins instructions.
Currently, there are no itineraries defined for ext and ins instructions. This patch adds these itineraries and uses them in the instruction definitions. Reviewed By: dsanders Differential Revision: http://reviews.llvm.org/D7209 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232613 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1484f91953
commit
f3f16aa1c9
@ -1000,7 +1000,7 @@ class ExtBase<string opstr, RegisterOperand RO, Operand PosOpnd,
|
||||
SDPatternOperator Op = null_frag>:
|
||||
InstSE<(outs RO:$rt), (ins RO:$rs, PosOpnd:$pos, size_ext:$size),
|
||||
!strconcat(opstr, " $rt, $rs, $pos, $size"),
|
||||
[(set RO:$rt, (Op RO:$rs, imm:$pos, imm:$size))], NoItinerary,
|
||||
[(set RO:$rt, (Op RO:$rs, imm:$pos, imm:$size))], II_EXT,
|
||||
FrmR, opstr>, ISA_MIPS32R2;
|
||||
|
||||
class InsBase<string opstr, RegisterOperand RO, Operand PosOpnd,
|
||||
@ -1008,7 +1008,7 @@ class InsBase<string opstr, RegisterOperand RO, Operand PosOpnd,
|
||||
InstSE<(outs RO:$rt), (ins RO:$rs, PosOpnd:$pos, size_ins:$size, RO:$src),
|
||||
!strconcat(opstr, " $rt, $rs, $pos, $size"),
|
||||
[(set RO:$rt, (Op RO:$rs, imm:$pos, imm:$size, RO:$src))],
|
||||
NoItinerary, FrmR, opstr>, ISA_MIPS32R2 {
|
||||
II_INS, FrmR, opstr>, ISA_MIPS32R2 {
|
||||
let Constraints = "$src = $rt";
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,9 @@ def II_DSRL32 : InstrItinClass;
|
||||
def II_DSRLV : InstrItinClass;
|
||||
def II_DSUBU : InstrItinClass;
|
||||
def II_DSUB : InstrItinClass;
|
||||
def II_EXT : InstrItinClass; // Any EXT instruction
|
||||
def II_FLOOR : InstrItinClass;
|
||||
def II_INS : InstrItinClass; // Any INS instruction
|
||||
def II_LB : InstrItinClass;
|
||||
def II_LBU : InstrItinClass;
|
||||
def II_LD : InstrItinClass;
|
||||
@ -198,6 +200,8 @@ def MipsGenericItineraries : ProcessorItineraries<[ALU, IMULDIV], [], [
|
||||
InstrItinData<II_DSUB , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_DROTR , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_DROTRV , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_EXT , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_INS , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_LUI , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_MOVF , [InstrStage<1, [ALU]>]>,
|
||||
InstrItinData<II_MOVN , [InstrStage<1, [ALU]>]>,
|
||||
|
Loading…
Reference in New Issue
Block a user