mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 11:13:28 +01: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 llvm-svn: 232613
This commit is contained in:
parent
37e98c8299
commit
ce26f9c12a
@ -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