Changes in directory llvm/lib/Target/ARM:
ARMISelDAGToDAG.cpp updated: 1.12 -> 1.13 ARMInstrInfo.cpp updated: 1.2 -> 1.3 ARMRegisterInfo.cpp updated: 1.4 -> 1.5 --- Log message: handle the "mov reg1, reg2" case in isMoveInstr --- Diffs of the changes: (+20 -6) ARMISelDAGToDAG.cpp | 10 ++++++---- ARMInstrInfo.cpp | 14 +++++++++++++- ARMRegisterInfo.cpp | 2 +- 3 files changed, 20 insertions(+), 6 deletions(-) Index: llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp diff -u llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.12 llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.13 --- llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:1.12 Mon Jun 12 07:28:08 2006 +++ llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp Tue Jun 27 16:52:45 2006 @@ -183,10 +183,12 @@ ScheduleAndEmitDAG(DAG); } -static void SelectFrameIndex(SelectionDAG *CurDAG, SDOperand &Result, SDNode *N) { +static void SelectFrameIndex(SelectionDAG *CurDAG, SDOperand &Result, SDNode *N, SDOperand Op) { int FI = cast<FrameIndexSDNode>(N)->getIndex(); - Result = CurDAG->SelectNodeTo(N, ARM::movrr, MVT::i32, - CurDAG->getTargetFrameIndex(FI, MVT::i32)); + + SDOperand TFI = CurDAG->getTargetFrameIndex(FI, Op.getValueType()); + + Result = CurDAG->SelectNodeTo(N, ARM::movri, Op.getValueType(), TFI); } void ARMDAGToDAGISel::Select(SDOperand &Result, SDOperand Op) { @@ -198,7 +200,7 @@ break; case ISD::FrameIndex: - SelectFrameIndex(CurDAG, Result, N); + SelectFrameIndex(CurDAG, Result, N, Op); break; } } Index: llvm/lib/Target/ARM/ARMInstrInfo.cpp diff -u llvm/lib/Target/ARM/ARMInstrInfo.cpp:1.2 llvm/lib/Target/ARM/ARMInstrInfo.cpp:1.3 --- llvm/lib/Target/ARM/ARMInstrInfo.cpp:1.2 Mon May 22 21:48:20 2006 +++ llvm/lib/Target/ARM/ARMInstrInfo.cpp Tue Jun 27 16:52:45 2006 @@ -27,7 +27,19 @@ /// bool ARMInstrInfo::isMoveInstr(const MachineInstr &MI, unsigned &SrcReg, unsigned &DstReg) const { - return false; + MachineOpCode oc = MI.getOpcode(); + switch (oc) { + default: + return false; + case ARM::movrr: + assert(MI.getNumOperands() == 2 && + MI.getOperand(0).isRegister() && + MI.getOperand(1).isRegister() && + "Invalid ARM MOV instruction"); + SrcReg = MI.getOperand(1).getReg();; + DstReg = MI.getOperand(0).getReg();; + return true; + } } /// isLoadFromStackSlot - If the specified machine instruction is a direct Index: llvm/lib/Target/ARM/ARMRegisterInfo.cpp diff -u llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.4 llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.5 --- llvm/lib/Target/ARM/ARMRegisterInfo.cpp:1.4 Sat Jun 17 19:08:07 2006 +++ llvm/lib/Target/ARM/ARMRegisterInfo.cpp Tue Jun 27 16:52:45 2006 @@ -81,7 +81,7 @@ MachineBasicBlock &MBB = *MI.getParent(); MachineFunction &MF = *MBB.getParent(); - assert (MI.getOpcode() == ARM::movrr); + assert (MI.getOpcode() == ARM::movri); unsigned FrameIdx = 1; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits