Make sure to expand SIGN_EXTEND_INREG for NEON vectors. PR11319, round 3.
authorEli Friedman <eli.friedman@gmail.com>
Fri, 11 Nov 2011 03:16:38 +0000 (03:16 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Fri, 11 Nov 2011 03:16:38 +0000 (03:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144361 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/2011-11-07-PromoteVectorLoadStore.ll

index 6f2b3b83bc33f3ea6fa604640571f42a190cdbbc..b55ef700f5c237a834866d5a02e3eef274fec048 100644 (file)
@@ -127,6 +127,7 @@ void ARMTargetLowering::addTypeForNEON(EVT VT, EVT PromotedLdStVT,
   setOperationAction(ISD::EXTRACT_SUBVECTOR, VT.getSimpleVT(), Legal);
   setOperationAction(ISD::SELECT, VT.getSimpleVT(), Expand);
   setOperationAction(ISD::SELECT_CC, VT.getSimpleVT(), Expand);
+  setOperationAction(ISD::SIGN_EXTEND_INREG, VT.getSimpleVT(), Expand);
   if (VT.isInteger()) {
     setOperationAction(ISD::SHL, VT.getSimpleVT(), Custom);
     setOperationAction(ISD::SRA, VT.getSimpleVT(), Custom);
index af43671791a48901d9db23ffff33d221e67fce7a..113cbfe39620e15d66ff42d9890b5d6bb4fd724c 100644 (file)
@@ -13,3 +13,12 @@ define void @test_neon_vector_add_2xi8() nounwind {
   store <2 x i8> %3, <2 x i8>* @i8_res
   ret void
 }
+
+define void @test_neon_ld_st_volatile_with_ashr_2xi8() {
+; CHECK: test_neon_ld_st_volatile_with_ashr_2xi8:
+  %1 = load volatile <2 x i8>* @i8_src1
+  %2 = load volatile <2 x i8>* @i8_src2
+  %3 = ashr <2 x i8> %1, %2
+  store volatile <2 x i8> %3, <2 x i8>* @i8_res
+  ret void
+}