[llvm-commits] [llvm] r112170 - in /llvm/trunk/lib/Target/ARM: ARMExpandPseudoInsts.cpp ARMISelDAGToDAG.cpp ARMInstrNEON.td NEONPreAllocPass.cpp
Bob Wilson
bob.wilson at apple.com
Wed Aug 25 22:33:30 PDT 2010
Author: bwilson
Date: Thu Aug 26 00:33:30 2010
New Revision: 112170
URL: http://llvm.org/viewvc/llvm-project?rev=112170&view=rev
Log:
Use pseudo instructions for VST1d64Q.
Modified:
llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
llvm/trunk/lib/Target/ARM/NEONPreAllocPass.cpp
Modified: llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp?rev=112170&r1=112169&r2=112170&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMExpandPseudoInsts.cpp Thu Aug 26 00:33:30 2010
@@ -229,12 +229,16 @@
ExpandVST4(MBBI, ARM::VST4d16, false, SingleSpc); break;
case ARM::VST4d32Pseudo:
ExpandVST4(MBBI, ARM::VST4d32, false, SingleSpc); break;
+ case ARM::VST1d64QPseudo:
+ ExpandVST4(MBBI, ARM::VST1d64Q, false, SingleSpc); break;
case ARM::VST4d8Pseudo_UPD:
ExpandVST4(MBBI, ARM::VST4d8_UPD, true, SingleSpc); break;
case ARM::VST4d16Pseudo_UPD:
ExpandVST4(MBBI, ARM::VST4d16_UPD, true, SingleSpc); break;
case ARM::VST4d32Pseudo_UPD:
ExpandVST4(MBBI, ARM::VST4d32_UPD, true, SingleSpc); break;
+ case ARM::VST1d64QPseudo_UPD:
+ ExpandVST4(MBBI, ARM::VST1d64Q_UPD, true, SingleSpc); break;
case ARM::VST4q8Pseudo_UPD:
ExpandVST4(MBBI, ARM::VST4q8_UPD, true, EvenDblSpc); break;
case ARM::VST4q16Pseudo_UPD:
Modified: llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp?rev=112170&r1=112169&r2=112170&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp Thu Aug 26 00:33:30 2010
@@ -1262,8 +1262,7 @@
// FIXME: This is a temporary flag to distinguish VSTs that have been
// converted to pseudo instructions.
- bool usePseudoInstrs = (NumVecs == 4 &&
- VT.getSimpleVT().SimpleTy != MVT::v1i64);
+ bool usePseudoInstrs = (NumVecs == 4);
if (is64BitVector) {
if (NumVecs >= 2) {
@@ -2331,7 +2330,7 @@
case Intrinsic::arm_neon_vst4: {
unsigned DOpcodes[] = { ARM::VST4d8Pseudo, ARM::VST4d16Pseudo,
- ARM::VST4d32Pseudo, ARM::VST1d64Q };
+ ARM::VST4d32Pseudo, ARM::VST1d64QPseudo };
unsigned QOpcodes0[] = { ARM::VST4q8Pseudo_UPD,
ARM::VST4q16Pseudo_UPD,
ARM::VST4q32Pseudo_UPD };
Modified: llvm/trunk/lib/Target/ARM/ARMInstrNEON.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrNEON.td?rev=112170&r1=112169&r2=112170&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMInstrNEON.td (original)
+++ llvm/trunk/lib/Target/ARM/ARMInstrNEON.td Thu Aug 26 00:33:30 2010
@@ -583,6 +583,9 @@
def VST1d32Q_UPD : VST1D4WB<0b1000, "32">;
def VST1d64Q_UPD : VST1D4WB<0b1100, "64">;
+def VST1d64QPseudo : VSTQQPseudo;
+def VST1d64QPseudo_UPD : VSTQQWBPseudo;
+
// VST2 : Vector Store (multiple 2-element structures)
class VST2D<bits<4> op11_8, bits<4> op7_4, string Dt>
: NLdSt<0, 0b00, op11_8, op7_4, (outs),
Modified: llvm/trunk/lib/Target/ARM/NEONPreAllocPass.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/NEONPreAllocPass.cpp?rev=112170&r1=112169&r2=112170&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/NEONPreAllocPass.cpp (original)
+++ llvm/trunk/lib/Target/ARM/NEONPreAllocPass.cpp Thu Aug 26 00:33:30 2010
@@ -260,7 +260,6 @@
Stride = 2;
return true;
- case ARM::VST1d64Q:
case ARM::VST4LNd8:
case ARM::VST4LNd16:
case ARM::VST4LNd32:
More information about the llvm-commits
mailing list