Enable more fold (sext (load x)) -> (sext (truncate (sextload x)))
[oota-llvm.git] / lib / Target / Mips / MipsInstrFormats.td
index bda63629f31ac95ede1947f4c61a9d5b7203747b..a4274e6bde624e403d49504124a2aa8493b6d1a3 100644 (file)
@@ -22,8 +22,8 @@
 //===----------------------------------------------------------------------===//
 
 // Generic Mips Format
-class MipsInst<dag outs, dag ins, string asmstr, list<dag> pattern>: 
-      Instruction 
+class MipsInst<dag outs, dag ins, string asmstr, list<dag> pattern, 
+               InstrItinClass itin>: Instruction 
 {
   field bits<32> Inst;
 
@@ -35,19 +35,24 @@ class MipsInst<dag outs, dag ins, string asmstr, list<dag> pattern>:
   let Inst{31-26} = opcode;   
   
   dag OutOperandList = outs;
-  dag InOperandList = ins;
+  dag InOperandList  = ins;
+
   let AsmString   = asmstr;
   let Pattern     = pattern;
+  let Itinerary   = itin;
 }
 
+// Mips Pseudo Instructions Format
+class PseudoInstMips<dag outs, dag ins, string asmstr, list<dag> pattern>:
+      MipsInst<outs, ins, asmstr, pattern, IIPseudo>;
 
 //===----------------------------------------------------------------------===//
 // Format R instruction class in Mips : <|opcode|rs|rt|rd|shamt|funct|>
 //===----------------------------------------------------------------------===//
 
 class FR<bits<6> op, bits<6> _funct, dag outs, dag ins, string asmstr,
-         list<dag> pattern>:
-      MipsInst<outs, ins, asmstr, pattern> 
+         list<dag> pattern, InstrItinClass itin>:
+      MipsInst<outs, ins, asmstr, pattern, itin
 {
   bits<5>  rd;
   bits<5>  rs;
@@ -69,8 +74,8 @@ class FR<bits<6> op, bits<6> _funct, dag outs, dag ins, string asmstr,
 // Format I instruction class in Mips : <|opcode|rs|rt|immediate|>
 //===----------------------------------------------------------------------===//
 
-class FI<bits<6> op, dag outs, dag ins, string asmstr, list<dag> pattern>: 
-      MipsInst<outs, ins, asmstr, pattern> 
+class FI<bits<6> op, dag outs, dag ins, string asmstr, list<dag> pattern,
+         InstrItinClass itin>: MipsInst<outs, ins, asmstr, pattern, itin> 
 {
   bits<5>  rt;
   bits<5>  rs;
@@ -87,8 +92,8 @@ class FI<bits<6> op, dag outs, dag ins, string asmstr, list<dag> pattern>:
 // Format J instruction class in Mips : <|opcode|address|>
 //===----------------------------------------------------------------------===//
 
-class FJ<bits<6> op, dag outs, dag ins, string asmstr, list<dag> pattern>: 
-      MipsInst<outs, ins, asmstr, pattern> 
+class FJ<bits<6> op, dag outs, dag ins, string asmstr, list<dag> pattern,
+         InstrItinClass itin>: MipsInst<outs, ins, asmstr, pattern, itin> 
 {
   bits<26> addr;
 
@@ -96,3 +101,4 @@ class FJ<bits<6> op, dag outs, dag ins, string asmstr, list<dag> pattern>:
   
   let Inst{25-0} = addr;
 }
+