mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-01 01:30:36 +00:00
Fixes ARM LNT bot from SLP change in O3
This patch fixes the multiple breakages on ARM test-suite after the SLP vectorizer was introduced by default on O3. The problem was an illegal vector type on ARMTTI::getCmpSelInstrCost() <3 x i1> which is not simple. The guard protects this code from breaking (cause of the problems) but doesn't fix the issue that is generating the odd vector in the first place, which also needs to be investigated. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187658 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fdabd9f391
commit
38ffffeebc
@ -411,12 +411,14 @@ unsigned ARMTTI::getCmpSelInstrCost(unsigned Opcode, Type *ValTy,
|
|||||||
|
|
||||||
EVT SelCondTy = TLI->getValueType(CondTy);
|
EVT SelCondTy = TLI->getValueType(CondTy);
|
||||||
EVT SelValTy = TLI->getValueType(ValTy);
|
EVT SelValTy = TLI->getValueType(ValTy);
|
||||||
int Idx = ConvertCostTableLookup<MVT>(NEONVectorSelectTbl,
|
if (SelCondTy.isSimple() && SelValTy.isSimple()) {
|
||||||
array_lengthof(NEONVectorSelectTbl),
|
int Idx = ConvertCostTableLookup<MVT>(NEONVectorSelectTbl,
|
||||||
ISD, SelCondTy.getSimpleVT(),
|
array_lengthof(NEONVectorSelectTbl),
|
||||||
SelValTy.getSimpleVT());
|
ISD, SelCondTy.getSimpleVT(),
|
||||||
if (Idx != -1)
|
SelValTy.getSimpleVT());
|
||||||
return NEONVectorSelectTbl[Idx].Cost;
|
if (Idx != -1)
|
||||||
|
return NEONVectorSelectTbl[Idx].Cost;
|
||||||
|
}
|
||||||
|
|
||||||
std::pair<unsigned, MVT> LT = TLI->getTypeLegalizationCost(ValTy);
|
std::pair<unsigned, MVT> LT = TLI->getTypeLegalizationCost(ValTy);
|
||||||
return LT.first;
|
return LT.first;
|
||||||
|
@ -63,5 +63,13 @@ define void @casts() {
|
|||||||
; CHECK: cost of 1 {{.*}} select
|
; CHECK: cost of 1 {{.*}} select
|
||||||
%v19 = select <2 x i1> undef, <2 x double> undef, <2 x double> undef
|
%v19 = select <2 x i1> undef, <2 x double> undef, <2 x double> undef
|
||||||
|
|
||||||
|
; odd vectors get legalized and should have similar costs
|
||||||
|
; CHECK: cost of 1 {{.*}} select
|
||||||
|
%v20 = select <1 x i1> undef, <1 x i32> undef, <1 x i32> undef
|
||||||
|
; CHECK: cost of 1 {{.*}} select
|
||||||
|
%v21 = select <3 x i1> undef, <3 x float> undef, <3 x float> undef
|
||||||
|
; CHECK: cost of 4 {{.*}} select
|
||||||
|
%v22 = select <5 x i1> undef, <5 x double> undef, <5 x double> undef
|
||||||
|
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user