mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
38ffffeebc
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
76 lines
3.1 KiB
LLVM
76 lines
3.1 KiB
LLVM
; RUN: opt < %s -cost-model -analyze -mtriple=thumbv7-apple-ios6.0.0 -mcpu=swift | FileCheck %s
|
|
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
|
|
target triple = "thumbv7-apple-ios6.0.0"
|
|
|
|
; CHECK: casts
|
|
define void @casts() {
|
|
; Scalar values
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v1 = select i1 undef, i8 undef, i8 undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v2 = select i1 undef, i16 undef, i16 undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v3 = select i1 undef, i32 undef, i32 undef
|
|
; CHECK: cost of 2 {{.*}} select
|
|
%v4 = select i1 undef, i64 undef, i64 undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v5 = select i1 undef, float undef, float undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v6 = select i1 undef, double undef, double undef
|
|
|
|
; Vector values
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v7 = select <2 x i1> undef, <2 x i8> undef, <2 x i8> undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v8 = select <4 x i1> undef, <4 x i8> undef, <4 x i8> undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v9 = select <8 x i1> undef, <8 x i8> undef, <8 x i8> undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v10 = select <16 x i1> undef, <16 x i8> undef, <16 x i8> undef
|
|
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v11 = select <2 x i1> undef, <2 x i16> undef, <2 x i16> undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v12 = select <4 x i1> undef, <4 x i16> undef, <4 x i16> undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v13 = select <8 x i1> undef, <8 x i16> undef, <8 x i16> undef
|
|
; CHECK: cost of 40 {{.*}} select
|
|
%v13b = select <16 x i1> undef, <16 x i16> undef, <16 x i16> undef
|
|
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v14 = select <2 x i1> undef, <2 x i32> undef, <2 x i32> undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v15 = select <4 x i1> undef, <4 x i32> undef, <4 x i32> undef
|
|
; CHECK: cost of 41 {{.*}} select
|
|
%v15b = select <8 x i1> undef, <8 x i32> undef, <8 x i32> undef
|
|
; CHECK: cost of 82 {{.*}} select
|
|
%v15c = select <16 x i1> undef, <16 x i32> undef, <16 x i32> undef
|
|
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v16 = select <2 x i1> undef, <2 x i64> undef, <2 x i64> undef
|
|
; CHECK: cost of 19 {{.*}} select
|
|
%v16a = select <4 x i1> undef, <4 x i64> undef, <4 x i64> undef
|
|
; CHECK: cost of 50 {{.*}} select
|
|
%v16b = select <8 x i1> undef, <8 x i64> undef, <8 x i64> undef
|
|
; CHECK: cost of 100 {{.*}} select
|
|
%v16c = select <16 x i1> undef, <16 x i64> undef, <16 x i64> undef
|
|
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v17 = select <2 x i1> undef, <2 x float> undef, <2 x float> undef
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%v18 = select <4 x i1> undef, <4 x float> undef, <4 x float> undef
|
|
|
|
; CHECK: cost of 1 {{.*}} select
|
|
%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
|
|
}
|