mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-23 19:17:17 +00:00
Do not assert on too wide splats we don't support.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80409 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2324bdc1ee
commit
71624cc786
@ -2468,11 +2468,13 @@ static SDValue LowerBUILD_VECTOR(SDValue Op, SelectionDAG &DAG) {
|
|||||||
unsigned SplatBitSize;
|
unsigned SplatBitSize;
|
||||||
bool HasAnyUndefs;
|
bool HasAnyUndefs;
|
||||||
if (BVN->isConstantSplat(SplatBits, SplatUndef, SplatBitSize, HasAnyUndefs)) {
|
if (BVN->isConstantSplat(SplatBits, SplatUndef, SplatBitSize, HasAnyUndefs)) {
|
||||||
|
if (SplatBitSize <= 64) {
|
||||||
SDValue Val = isVMOVSplat(SplatBits.getZExtValue(),
|
SDValue Val = isVMOVSplat(SplatBits.getZExtValue(),
|
||||||
SplatUndef.getZExtValue(), SplatBitSize, DAG);
|
SplatUndef.getZExtValue(), SplatBitSize, DAG);
|
||||||
if (Val.getNode())
|
if (Val.getNode())
|
||||||
return BuildSplat(Val, VT, DAG, dl);
|
return BuildSplat(Val, VT, DAG, dl);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If there are only 2 elements in a 128-bit vector, insert them into an
|
// If there are only 2 elements in a 128-bit vector, insert them into an
|
||||||
// undef vector. This handles the common case for 128-bit vector argument
|
// undef vector. This handles the common case for 128-bit vector argument
|
||||||
|
23
test/CodeGen/ARM/2009-08-29-TooLongSplat.ll
Normal file
23
test/CodeGen/ARM/2009-08-29-TooLongSplat.ll
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
; RUN: llvm-as < %s | llc -mattr=+neon
|
||||||
|
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32"
|
||||||
|
target triple = "thumbv7-elf"
|
||||||
|
|
||||||
|
define arm_apcscc void @aaa() nounwind {
|
||||||
|
entry:
|
||||||
|
%0 = fmul <4 x float> undef, <float 1.000000e+00, float 1.000000e+01, float 1.000000e+02, float 0x3EB0C6F7A0000000> ; <<4 x float>> [#uses=1]
|
||||||
|
%tmp31 = extractelement <4 x float> %0, i32 0 ; <float> [#uses=1]
|
||||||
|
%1 = fpext float %tmp31 to double ; <double> [#uses=1]
|
||||||
|
%2 = fsub double 1.000000e+00, %1 ; <double> [#uses=1]
|
||||||
|
%3 = fdiv double %2, 1.000000e+00 ; <double> [#uses=1]
|
||||||
|
%4 = tail call double @fabs(double %3) nounwind readnone ; <double> [#uses=1]
|
||||||
|
%5 = fcmp ogt double %4, 1.000000e-05 ; <i1> [#uses=1]
|
||||||
|
br i1 %5, label %bb, label %bb7
|
||||||
|
|
||||||
|
bb: ; preds = %entry
|
||||||
|
unreachable
|
||||||
|
|
||||||
|
bb7: ; preds = %entry
|
||||||
|
unreachable
|
||||||
|
}
|
||||||
|
|
||||||
|
declare double @fabs(double)
|
Loading…
x
Reference in New Issue
Block a user