Swap the order of imm and idx field for rri addrmode in order to make handling of...
authorAnton Korobeynikov <asl@math.spbu.ru>
Thu, 16 Jul 2009 13:48:42 +0000 (13:48 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Thu, 16 Jul 2009 13:48:42 +0000 (13:48 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75937 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/SystemZ/AsmPrinter/SystemZAsmPrinter.cpp
lib/Target/SystemZ/SystemZISelDAGToDAG.cpp
lib/Target/SystemZ/SystemZInstrInfo.td

index 025119c703816905cd5c08fadbf11c7b1c2d4562..20814d0efdb422fe2f4173b853b652673825f6b1 100644 (file)
@@ -208,10 +208,10 @@ void SystemZAsmPrinter::printRIAddrOperand(const MachineInstr *MI, int OpNum,
 void SystemZAsmPrinter::printRRIAddrOperand(const MachineInstr *MI, int OpNum,
                                             const char* Modifier) {
   const MachineOperand &Base = MI->getOperand(OpNum);
-  const MachineOperand &Index = MI->getOperand(OpNum+1);
+  const MachineOperand &Index = MI->getOperand(OpNum+2);
 
   // Print displacement operand.
-  printOperand(MI, OpNum+2);
+  printOperand(MI, OpNum+1);
 
   // Print base operand (if any)
   if (Base.getReg()) {
@@ -219,7 +219,7 @@ void SystemZAsmPrinter::printRRIAddrOperand(const MachineInstr *MI, int OpNum,
     printOperand(MI, OpNum);
     if (Index.getReg()) {
       O << ',';
-      printOperand(MI, OpNum+1);
+      printOperand(MI, OpNum+2);
     }
     O << ')';
   } else
index 84081b4afcab9fc18dbccd1bae4ebacf5ec79630..3e1cc3c544d8a2f57a0920d199a87d2dd8312bf1 100644 (file)
@@ -105,14 +105,14 @@ namespace {
     #include "SystemZGenDAGISel.inc"
 
   private:
+    bool SelectAddrRI(const SDValue& Op, SDValue& Addr,
+                      SDValue &Base, SDValue &Disp);
     bool SelectAddrRRI(SDValue Op, SDValue Addr,
-                       SDValue &Base, SDValue &Index, SDValue &Disp);
+                       SDValue &Base, SDValue &Disp, SDValue &Index);
     bool SelectLAAddr(SDValue Op, SDValue Addr,
-                      SDValue &Base, SDValue &Index, SDValue &Disp);
+                      SDValue &Base, SDValue &Disp, SDValue &Index);
 
     SDNode *Select(SDValue Op);
-    bool SelectAddrRI(const SDValue& Op, SDValue& Addr,
-                      SDValue &Base, SDValue &Disp);
     bool MatchAddress(SDValue N, SystemZRRIAddressMode &AM, unsigned Depth = 0);
     bool MatchAddressBase(SDValue N, SystemZRRIAddressMode &AM);
 
@@ -368,7 +368,7 @@ bool SystemZDAGToDAGISel::MatchAddressBase(SDValue N,
 /// Returns true if the address can be represented by a base register plus
 /// index register plus a signed 20-bit displacement [base + idx + imm].
 bool SystemZDAGToDAGISel::SelectAddrRRI(SDValue Op, SDValue Addr,
-                                SDValue &Base, SDValue &Index, SDValue &Disp) {
+                                SDValue &Base, SDValue &Disp, SDValue &Index) {
   SystemZRRIAddressMode AM;
   bool Done = false;
 
@@ -417,7 +417,7 @@ bool SystemZDAGToDAGISel::SelectAddrRRI(SDValue Op, SDValue Addr,
 /// SelectLAAddr - it calls SelectAddr and determines if the maximal addressing
 /// mode it matches can be cost effectively emitted as an LA/LAY instruction.
 bool SystemZDAGToDAGISel::SelectLAAddr(SDValue Op, SDValue Addr,
-                                SDValue &Base, SDValue &Index, SDValue &Disp) {
+                                  SDValue &Base, SDValue &Disp, SDValue &Index) {
   SystemZRRIAddressMode AM;
 
   if (MatchAddress(Addr, AM))
index 9ca4be1759b172a68c0084186bae72ec4b829fe0..978562e9c3e1106121d62be8eba16f41a3f15040 100644 (file)
@@ -164,12 +164,12 @@ def riaddr : Operand<i64>,
 def rriaddr : Operand<i64>,
               ComplexPattern<i64, 3, "SelectAddrRRI", [], []> {
   let PrintMethod = "printRRIAddrOperand";
-  let MIOperandInfo = (ops ADDR64:$base, ADDR64:$index, i64imm:$disp);
+  let MIOperandInfo = (ops ADDR64:$base, i64imm:$disp, ADDR64:$index);
 }
 def laaddr : Operand<i64>,
              ComplexPattern<i64, 3, "SelectLAAddr", [add, sub, or, frameindex], []> {
   let PrintMethod = "printRRIAddrOperand";
-  let MIOperandInfo = (ops ADDR64:$base, ADDR64:$index, i64imm:$disp);
+  let MIOperandInfo = (ops ADDR64:$base, i64imm:$disp, ADDR64:$index);
 }