Clenup and fix encoding for Mips ins and ext instruction
llvm-svn: 137943
This commit is contained in:
parent
6ddb568ab8
commit
2b8078a2cd
|
|
@ -406,15 +406,13 @@ class ReadHardware: FR<0x1f, 0x3b, (outs CPURegs:$dst), (ins HWRegs:$src),
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ext and Ins
|
// Ext and Ins
|
||||||
class ExtIns<bits<6> _funct, string instr_asm, dag ins,
|
class ExtIns<bits<6> _funct, string instr_asm, dag outs, dag ins,
|
||||||
list<dag> pattern, InstrItinClass itin>:
|
list<dag> pattern, InstrItinClass itin>:
|
||||||
FR<0x1f, _funct, (outs CPURegs:$rt), ins,
|
FR<0x1f, _funct, outs, ins, !strconcat(instr_asm, " $rt, $rs, $pos, $sz"),
|
||||||
!strconcat(instr_asm, "\t$rt, $rs, $pos, $size"), pattern, itin> {
|
pattern, itin>, Requires<[IsMips32r2]> {
|
||||||
bits<5> src;
|
|
||||||
bits<5> pos;
|
bits<5> pos;
|
||||||
bits<5> size;
|
bits<5> sz;
|
||||||
let rs = src;
|
let rd = sz;
|
||||||
let rd = size;
|
|
||||||
let shamt = pos;
|
let shamt = pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -689,21 +687,19 @@ def MUL : ArithR<0x1c, 0x02, "mul", mul, IIImul, 1>, Requires<[IsMips32]>;
|
||||||
|
|
||||||
def RDHWR : ReadHardware;
|
def RDHWR : ReadHardware;
|
||||||
|
|
||||||
let Predicates = [IsMips32r2] in {
|
def EXT : ExtIns<0, "ext", (outs CPURegs:$rt),
|
||||||
|
(ins CPURegs:$rs, uimm16:$pos, uimm16:$sz),
|
||||||
def EXT : ExtIns<0, "ext", (ins CPURegs:$rs, uimm16:$pos, uimm16:$size),
|
[(set CPURegs:$rt,
|
||||||
[(set CPURegs:$rt,
|
(MipsExt CPURegs:$rs, immZExt5:$pos, immZExt5:$sz))],
|
||||||
(MipsExt CPURegs:$rs, immZExt5:$pos, immZExt5:$size))],
|
|
||||||
NoItinerary>;
|
NoItinerary>;
|
||||||
|
|
||||||
let Constraints = "$src = $rt" in
|
let Constraints = "$src = $rt" in
|
||||||
def INS : ExtIns<4, "ins",
|
def INS : ExtIns<4, "ins", (outs CPURegs:$rt),
|
||||||
(ins CPURegs:$rs, uimm16:$pos, uimm16:$size, CPURegs:$src),
|
(ins CPURegs:$rs, uimm16:$pos, uimm16:$sz, CPURegs:$src),
|
||||||
[(set CPURegs:$rt,
|
[(set CPURegs:$rt,
|
||||||
(MipsIns CPURegs:$rs, immZExt5:$pos, immZExt5:$size,
|
(MipsIns CPURegs:$rs, immZExt5:$pos, immZExt5:$sz,
|
||||||
CPURegs:$src))],
|
CPURegs:$src))],
|
||||||
NoItinerary>;
|
NoItinerary>;
|
||||||
}
|
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Arbitrary patterns that map to one or more instructions
|
// Arbitrary patterns that map to one or more instructions
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue