1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-unknown-unknown -mcpu=generic -mattr=+sse2 -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=ALL --check-prefix=SSE2 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-unknown-unknown -mcpu=generic -mattr=+avx -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=ALL --check-prefix=AVX 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine double @int_to_double_rr(i32 %a) { 6*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: int_to_double_rr: 7*9880d681SAndroid Build Coastguard Worker; SSE2: cvtsi2sdl %edi, %xmm0 8*9880d681SAndroid Build Coastguard Worker; AVX: vcvtsi2sdl %edi, %xmm0, %xmm0 9*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: ret 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker %0 = sitofp i32 %a to double 12*9880d681SAndroid Build Coastguard Worker ret double %0 13*9880d681SAndroid Build Coastguard Worker} 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine double @int_to_double_rm(i32* %a) { 16*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: int_to_double_rm: 17*9880d681SAndroid Build Coastguard Worker; SSE2: cvtsi2sdl (%rdi), %xmm0 18*9880d681SAndroid Build Coastguard Worker; AVX: vcvtsi2sdl (%rdi), %xmm0, %xmm0 19*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: ret 20*9880d681SAndroid Build Coastguard Workerentry: 21*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %a 22*9880d681SAndroid Build Coastguard Worker %1 = sitofp i32 %0 to double 23*9880d681SAndroid Build Coastguard Worker ret double %1 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine float @int_to_float_rr(i32 %a) { 27*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: int_to_float_rr: 28*9880d681SAndroid Build Coastguard Worker; SSE2: cvtsi2ssl %edi, %xmm0 29*9880d681SAndroid Build Coastguard Worker; AVX: vcvtsi2ssl %edi, %xmm0, %xmm0 30*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: ret 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker %0 = sitofp i32 %a to float 33*9880d681SAndroid Build Coastguard Worker ret float %0 34*9880d681SAndroid Build Coastguard Worker} 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerdefine float @int_to_float_rm(i32* %a) { 37*9880d681SAndroid Build Coastguard Worker; ALL-LABEL: int_to_float_rm: 38*9880d681SAndroid Build Coastguard Worker; SSE2: cvtsi2ssl (%rdi), %xmm0 39*9880d681SAndroid Build Coastguard Worker; AVX: vcvtsi2ssl (%rdi), %xmm0, %xmm0 40*9880d681SAndroid Build Coastguard Worker; ALL-NEXT: ret 41*9880d681SAndroid Build Coastguard Workerentry: 42*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %a 43*9880d681SAndroid Build Coastguard Worker %1 = sitofp i32 %0 to float 44*9880d681SAndroid Build Coastguard Worker ret float %1 45*9880d681SAndroid Build Coastguard Worker} 46