Change instruction description to split OperandList into OutOperandList and
[oota-llvm.git] / lib / Target / IA64 / IA64InstrFormats.td
index ba6c574cd4c164a7bc245c497134e9976f0d5d3b..f16109ba8c263c0efd9ae2ac86f6570ef0923eba 100644 (file)
 // Instruction format superclass
 //===----------------------------------------------------------------------===//
 
-class InstIA64<bits<4> op, dag OL, string asmstr> : Instruction { 
+class InstIA64<bits<4> op, dag OOL, dag IOL, string asmstr> : Instruction { 
   // IA64 instruction baseline
   field bits<41> Inst;
   let Namespace = "IA64";
-  let OperandList = OL;
+  let OutOperandList = OOL;
+  let InOperandList = IOL;
   let AsmString = asmstr;
 
   let Inst{40-37} = op;
@@ -30,30 +31,30 @@ class InstIA64<bits<4> op, dag OL, string asmstr> : Instruction {
 //We should have:
 // A, I, M, F, B, L+X
 
-class AForm<bits<4> opcode, bits<6> qpReg, dag OL, string asmstr> : 
-  InstIA64<opcode, OL, asmstr> {
+class AForm<bits<4> opcode, bits<6> qpReg, dag OOL, dag IOL, string asmstr> : 
+  InstIA64<opcode, OOL, IOL, asmstr> {
 
   let Inst{5-0} = qpReg;
 }
 
-class AForm_DAG<bits<4> opcode, bits<6> qpReg, dag OL, string asmstr,
+class AForm_DAG<bits<4> opcode, bits<6> qpReg, dag OOL, dag IOL, string asmstr,
       list<dag> pattern> : 
-  InstIA64<opcode, OL, asmstr> {
+  InstIA64<opcode, OOL, IOL, asmstr> {
 
   let Pattern = pattern;
   let Inst{5-0} = qpReg;
 }
 
 let isBranch = 1, isTerminator = 1 in
-class BForm<bits<4> opcode, bits<6> x6, bits<3> btype, dag OL, string asmstr> :
-  InstIA64<opcode, OL, asmstr> {
+class BForm<bits<4> opcode, bits<6> x6, bits<3> btype, dag OOL, dag IOL, string asmstr> :
+  InstIA64<opcode, OOL, IOL, asmstr> {
 
   let Inst{32-27} = x6;
   let Inst{8-6} = btype;
 }
 
-class MForm<bits<4> opcode, bits<6> x6, dag OL, string asmstr> :
-  InstIA64<opcode, OL, asmstr> {
+class MForm<bits<4> opcode, bits<6> x6, dag OOL, dag IOL, string asmstr> :
+  InstIA64<opcode, OOL, IOL, asmstr> {
     bits<7> Ra;
     bits<7> Rb;
     bits<16> disp;
@@ -63,17 +64,17 @@ class MForm<bits<4> opcode, bits<6> x6, dag OL, string asmstr> :
     let Inst{15-0} = disp;
 }
 
-class RawForm<bits<4> opcode, bits<26> rest, dag OL, string asmstr> :
-  InstIA64<opcode, OL, asmstr> {
+class RawForm<bits<4> opcode, bits<26> rest, dag OOL, dag IOL, string asmstr> :
+  InstIA64<opcode, OOL, IOL, asmstr> {
     let Inst{25-0} = rest;
 }
 
 // Pseudo instructions.
-class PseudoInstIA64<dag OL, string nm> : InstIA64<0, OL, nm>  {
+class PseudoInstIA64<dag OOL, dag IOL, string nm> : InstIA64<0, OOL, IOL, nm>  {
 }
 
-class PseudoInstIA64_DAG<dag OL, string nm, list<dag> pattern>
-  : InstIA64<0, OL, nm> {
+class PseudoInstIA64_DAG<dag OOL, dag IOL, string nm, list<dag> pattern>
+  : InstIA64<0, OOL, IOL, nm> {
   let Pattern = pattern;
 }