diff options
author | Bob Wilson <bob.wilson@apple.com> | 2009-07-01 23:16:05 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2009-07-01 23:16:05 +0000 |
commit | deb35afd235efa34c49bbed3519e51203c269d46 (patch) | |
tree | 1640742c9d56c204d4a42cb83fb3693a2ceb5f0f /llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | |
parent | ecaeaa81b1fa0c2bfaa9025be56fb30b10313987 (diff) | |
download | bcm5719-llvm-deb35afd235efa34c49bbed3519e51203c269d46.tar.gz bcm5719-llvm-deb35afd235efa34c49bbed3519e51203c269d46.zip |
Add a new addressing mode for NEON load/store instructions.
llvm-svn: 74658
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp index 258adb583ac..15136909bf9 100644 --- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -76,9 +76,11 @@ public: SDValue &Offset, SDValue &Opc); bool SelectAddrMode5(SDValue Op, SDValue N, SDValue &Base, SDValue &Offset); + bool SelectAddrMode6(SDValue Op, SDValue N, SDValue &Addr, SDValue &Update, + SDValue &Opc); bool SelectAddrModePC(SDValue Op, SDValue N, SDValue &Offset, - SDValue &Label); + SDValue &Label); bool SelectThumbAddrModeRR(SDValue Op, SDValue N, SDValue &Base, SDValue &Offset); @@ -105,7 +107,6 @@ public: bool SelectT2AddrModeSoReg(SDValue Op, SDValue N, SDValue &Base, SDValue &OffReg, SDValue &ShImm); - // Include the pieces autogenerated from the target description. #include "ARMGenDAGISel.inc" @@ -415,6 +416,16 @@ bool ARMDAGToDAGISel::SelectAddrMode5(SDValue Op, SDValue N, return true; } +bool ARMDAGToDAGISel::SelectAddrMode6(SDValue Op, SDValue N, + SDValue &Addr, SDValue &Update, + SDValue &Opc) { + Addr = N; + // The optional writeback is handled in ARMLoadStoreOpt. + Update = CurDAG->getRegister(0, MVT::i32); + Opc = CurDAG->getTargetConstant(ARM_AM::getAM6Opc(false), MVT::i32); + return true; +} + bool ARMDAGToDAGISel::SelectAddrModePC(SDValue Op, SDValue N, SDValue &Offset, SDValue &Label) { if (N.getOpcode() == ARMISD::PIC_ADD && N.hasOneUse()) { |