mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-15 07:59:57 +00:00
NEON does not support truncating vector stores. Radar 8598391.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117940 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4845f99008
commit
24645a1a6d
@ -104,6 +104,10 @@ void ARMTargetLowering::addTypeForNEON(EVT VT, EVT PromotedLdStVT,
|
||||
setOperationAction(ISD::SRL, VT.getSimpleVT(), Custom);
|
||||
setLoadExtAction(ISD::SEXTLOAD, VT.getSimpleVT(), Expand);
|
||||
setLoadExtAction(ISD::ZEXTLOAD, VT.getSimpleVT(), Expand);
|
||||
for (unsigned InnerVT = (unsigned)MVT::FIRST_VECTOR_VALUETYPE;
|
||||
InnerVT <= (unsigned)MVT::LAST_VECTOR_VALUETYPE; ++InnerVT)
|
||||
setTruncStoreAction(VT.getSimpleVT(),
|
||||
(MVT::SimpleValueType)InnerVT, Expand);
|
||||
}
|
||||
setLoadExtAction(ISD::EXTLOAD, VT.getSimpleVT(), Expand);
|
||||
|
||||
|
@ -343,3 +343,13 @@ declare <2 x i32> @llvm.arm.neon.vqmovnu.v2i32(<2 x i64>) nounwind readnone
|
||||
declare <8 x i8> @llvm.arm.neon.vqmovnsu.v8i8(<8 x i16>) nounwind readnone
|
||||
declare <4 x i16> @llvm.arm.neon.vqmovnsu.v4i16(<4 x i32>) nounwind readnone
|
||||
declare <2 x i32> @llvm.arm.neon.vqmovnsu.v2i32(<2 x i64>) nounwind readnone
|
||||
|
||||
; Truncating vector stores are not supported. The following should not crash.
|
||||
; Radar 8598391.
|
||||
define void @noTruncStore(<4 x i32>* %a, <4 x i16>* %b) nounwind {
|
||||
;CHECK: vmovn
|
||||
%tmp1 = load <4 x i32>* %a, align 16
|
||||
%tmp2 = trunc <4 x i32> %tmp1 to <4 x i16>
|
||||
store <4 x i16> %tmp2, <4 x i16>* %b, align 8
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user