diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-07-16 13:48:42 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-07-16 13:48:42 +0000 |
commit | f7cefd93163d3078f09e64b69a4bf385e3c346d4 (patch) | |
tree | 6e6ae578f7a510641183b222d5ced310ce432e2c | |
parent | d3c94e7a8c76ac1b0d0eb0235d5c9e12be9d7bf8 (diff) | |
download | external_llvm-f7cefd93163d3078f09e64b69a4bf385e3c346d4.zip external_llvm-f7cefd93163d3078f09e64b69a4bf385e3c346d4.tar.gz external_llvm-f7cefd93163d3078f09e64b69a4bf385e3c346d4.tar.bz2 |
Swap the order of imm and idx field for rri addrmode in order to make handling of rri and ri addrmodes common
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75937 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/SystemZ/AsmPrinter/SystemZAsmPrinter.cpp | 6 | ||||
-rw-r--r-- | lib/Target/SystemZ/SystemZISelDAGToDAG.cpp | 12 | ||||
-rw-r--r-- | lib/Target/SystemZ/SystemZInstrInfo.td | 4 |
3 files changed, 11 insertions, 11 deletions
diff --git a/lib/Target/SystemZ/AsmPrinter/SystemZAsmPrinter.cpp b/lib/Target/SystemZ/AsmPrinter/SystemZAsmPrinter.cpp index 025119c..20814d0 100644 --- a/lib/Target/SystemZ/AsmPrinter/SystemZAsmPrinter.cpp +++ b/lib/Target/SystemZ/AsmPrinter/SystemZAsmPrinter.cpp @@ -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 diff --git a/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp b/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp index 84081b4..3e1cc3c 100644 --- a/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp +++ b/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp @@ -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)) diff --git a/lib/Target/SystemZ/SystemZInstrInfo.td b/lib/Target/SystemZ/SystemZInstrInfo.td index 9ca4be1..978562e 100644 --- a/lib/Target/SystemZ/SystemZInstrInfo.td +++ b/lib/Target/SystemZ/SystemZInstrInfo.td @@ -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); } |