aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2010-08-18 01:45:52 +0000
committerBob Wilson <bob.wilson@apple.com>2010-08-18 01:45:52 +0000
commit2003bcfbd243716e5599f65705b515c2a229c7d3 (patch)
tree4be751c6cac06cc8b698fdc32e82d11a3e9ea871
parentf9d116376971ed8771c34234b612202654632370 (diff)
Expand ZERO_EXTEND operations for NEON vector types.
Testcase from Nick Lewycky. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111341 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/ARMISelLowering.cpp1
-rw-r--r--test/CodeGen/ARM/neon-ops.ll7
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp
index c2bd471faa..9e9198b726 100644
--- a/lib/Target/ARM/ARMISelLowering.cpp
+++ b/lib/Target/ARM/ARMISelLowering.cpp
@@ -125,6 +125,7 @@ void ARMTargetLowering::addTypeForNEON(EVT VT, EVT PromotedLdStVT,
setOperationAction(ISD::EXTRACT_SUBVECTOR, VT.getSimpleVT(), Expand);
setOperationAction(ISD::SELECT, VT.getSimpleVT(), Expand);
setOperationAction(ISD::SELECT_CC, VT.getSimpleVT(), Expand);
+ setOperationAction(ISD::ZERO_EXTEND, VT.getSimpleVT(), Expand);
if (VT.isInteger()) {
setOperationAction(ISD::SHL, VT.getSimpleVT(), Custom);
setOperationAction(ISD::SRA, VT.getSimpleVT(), Custom);
diff --git a/test/CodeGen/ARM/neon-ops.ll b/test/CodeGen/ARM/neon-ops.ll
new file mode 100644
index 0000000000..d7e893f64f
--- /dev/null
+++ b/test/CodeGen/ARM/neon-ops.ll
@@ -0,0 +1,7 @@
+; RUN: llc -march=arm -mattr=+neon -O2 -o /dev/null
+
+; This used to crash.
+define <4 x i32> @test1(<4 x i16> %a) {
+ %A = zext <4 x i16> %a to <4 x i32>
+ ret <4 x i32> %A
+}