diff options
author | Jim Grosbach <grosbach@apple.com> | 2012-04-11 16:53:25 +0000 |
---|---|---|
committer | Jim Grosbach <grosbach@apple.com> | 2012-04-11 16:53:25 +0000 |
commit | 4640c8169fb2f8b3eb73d1aeb1fcc4fc0b29f678 (patch) | |
tree | df9086f0007025ba17558b8818ba3577009c1fe7 /llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | |
parent | 804de01c333e37958e10cc2932ec47417826a43a (diff) | |
download | bcm5719-llvm-4640c8169fb2f8b3eb73d1aeb1fcc4fc0b29f678.tar.gz bcm5719-llvm-4640c8169fb2f8b3eb73d1aeb1fcc4fc0b29f678.zip |
ARM 'vzip.32 Dd, Dm' is a pseudo-instruction.
While there is an encoding for it in VZIP, the result of that is undefined,
so we should avoid it. Define the instruction as a pseudo for VTRN.32
instead, as the ARM ARM indicates.
rdar://11221911
llvm-svn: 154505
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp index ffb9acb2f2c..435d6a97438 100644 --- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp +++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp @@ -2825,7 +2825,8 @@ SDNode *ARMDAGToDAGISel::Select(SDNode *N) { case MVT::v8i8: Opc = ARM::VZIPd8; break; case MVT::v4i16: Opc = ARM::VZIPd16; break; case MVT::v2f32: - case MVT::v2i32: Opc = ARM::VZIPd32; break; + // vzip.32 Dd, Dm is a pseudo-instruction expanded to vtrn.32 Dd, Dm. + case MVT::v2i32: Opc = ARM::VTRNd32; break; case MVT::v16i8: Opc = ARM::VZIPq8; break; case MVT::v8i16: Opc = ARM::VZIPq16; break; case MVT::v4f32: |