1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=-avx,+sse2 -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefix=SSE 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mattr=-avx2,+avx -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefix=AVX 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i32 @cvt_test1(float %a) { 5*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: cvt_test1 6*9880d681SAndroid Build Coastguard Worker; SSE: cvttss2si %xmm0, %eax 7*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: cvt_test1 8*9880d681SAndroid Build Coastguard Worker; AVX: vcvttss2si %xmm0, %eax 9*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x float> undef, float %a, i32 0 10*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x float> %1, float 0.000000e+00, i32 1 11*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x float> %2, float 0.000000e+00, i32 2 12*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x float> %3, float 0.000000e+00, i32 3 13*9880d681SAndroid Build Coastguard Worker %5 = call i32 @llvm.x86.sse.cvttss2si(<4 x float> %4) 14*9880d681SAndroid Build Coastguard Worker ret i32 %5 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerdefine i64 @cvt_test2(float %a) { 19*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: cvt_test2 20*9880d681SAndroid Build Coastguard Worker; SSE: cvttss2si %xmm0, %rax 21*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: cvt_test2 22*9880d681SAndroid Build Coastguard Worker; AVX: vcvttss2si %xmm0, %rax 23*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x float> undef, float %a, i32 0 24*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x float> %1, float 0.000000e+00, i32 1 25*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x float> %2, float 0.000000e+00, i32 2 26*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x float> %3, float 0.000000e+00, i32 3 27*9880d681SAndroid Build Coastguard Worker %5 = call i64 @llvm.x86.sse.cvttss2si64(<4 x float> %4) 28*9880d681SAndroid Build Coastguard Worker ret i64 %5 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse.cvttss2si64(<4 x float>) nounwind readnone 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerdefine i32 @cvt_test3(double %a) { 33*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: cvt_test3 34*9880d681SAndroid Build Coastguard Worker; SSE: cvttsd2si %xmm0, %eax 35*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: cvt_test3 36*9880d681SAndroid Build Coastguard Worker; AVX: vcvttsd2si %xmm0, %eax 37*9880d681SAndroid Build Coastguard Worker %1 = insertelement <2 x double> undef, double %a, i32 0 38*9880d681SAndroid Build Coastguard Worker %2 = insertelement <2 x double> %1, double 0.000000e+00, i32 1 39*9880d681SAndroid Build Coastguard Worker %3 = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> %2) 40*9880d681SAndroid Build Coastguard Worker ret i32 %3 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Workerdefine i64 @cvt_test4(double %a) { 45*9880d681SAndroid Build Coastguard Worker; SSE-LABEL: cvt_test4 46*9880d681SAndroid Build Coastguard Worker; SSE: cvttsd2si %xmm0, %rax 47*9880d681SAndroid Build Coastguard Worker; AVX-LABEL: cvt_test4 48*9880d681SAndroid Build Coastguard Worker; AVX: vcvttsd2si %xmm0, %rax 49*9880d681SAndroid Build Coastguard Worker %1 = insertelement <2 x double> undef, double %a, i32 0 50*9880d681SAndroid Build Coastguard Worker %2 = insertelement <2 x double> %1, double 0.000000e+00, i32 1 51*9880d681SAndroid Build Coastguard Worker %3 = call i64 @llvm.x86.sse2.cvttsd2si64(<2 x double> %2) 52*9880d681SAndroid Build Coastguard Worker ret i64 %3 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Workerdeclare i64 @llvm.x86.sse2.cvttsd2si64(<2 x double>) nounwind readnone 55