aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Korobeynikov <asl@math.spbu.ru>2009-07-16 13:48:42 +0000
committerAnton Korobeynikov <asl@math.spbu.ru>2009-07-16 13:48:42 +0000
commitf7cefd93163d3078f09e64b69a4bf385e3c346d4 (patch)
tree6e6ae578f7a510641183b222d5ced310ce432e2c
parentd3c94e7a8c76ac1b0d0eb0235d5c9e12be9d7bf8 (diff)
downloadexternal_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.cpp6
-rw-r--r--lib/Target/SystemZ/SystemZISelDAGToDAG.cpp12
-rw-r--r--lib/Target/SystemZ/SystemZInstrInfo.td4
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);
}