From 2003bcfbd243716e5599f65705b515c2a229c7d3 Mon Sep 17 00:00:00 2001 From: Bob Wilson Date: Wed, 18 Aug 2010 01:45:52 +0000 Subject: [PATCH] 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 --- lib/Target/ARM/ARMISelLowering.cpp | 1 + test/CodeGen/ARM/neon-ops.ll | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 test/CodeGen/ARM/neon-ops.ll diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index c2bd471faa1..9e9198b7268 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 00000000000..d7e893f64f9 --- /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 +}