1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=corei7 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=core-avx-i | FileCheck %s --check-prefix=AVX 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine <2 x double> @v2f2d_ext_vec(<2 x float> %v1) nounwind { 5*9880d681SAndroid Build Coastguard Workerentry: 6*9880d681SAndroid Build Coastguard Worker; CHECK: v2f2d_ext_vec 7*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 8*9880d681SAndroid Build Coastguard Worker; AVX: v2f2d_ext_vec 9*9880d681SAndroid Build Coastguard Worker; AVX: vcvtps2pd 10*9880d681SAndroid Build Coastguard Worker %f1 = fpext <2 x float> %v1 to <2 x double> 11*9880d681SAndroid Build Coastguard Worker ret <2 x double> %f1 12*9880d681SAndroid Build Coastguard Worker} 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine <3 x double> @v3f2d_ext_vec(<3 x float> %v1) nounwind { 15*9880d681SAndroid Build Coastguard Workerentry: 16*9880d681SAndroid Build Coastguard Worker; CHECK: v3f2d_ext_vec 17*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 18*9880d681SAndroid Build Coastguard Worker; CHECK: shufpd 19*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 20*9880d681SAndroid Build Coastguard Worker; AVX: v3f2d_ext_vec 21*9880d681SAndroid Build Coastguard Worker; AVX: vcvtps2pd 22*9880d681SAndroid Build Coastguard Worker; AVX: ret 23*9880d681SAndroid Build Coastguard Worker %f1 = fpext <3 x float> %v1 to <3 x double> 24*9880d681SAndroid Build Coastguard Worker ret <3 x double> %f1 25*9880d681SAndroid Build Coastguard Worker} 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @v4f2d_ext_vec(<4 x float> %v1) nounwind { 28*9880d681SAndroid Build Coastguard Workerentry: 29*9880d681SAndroid Build Coastguard Worker; CHECK: v4f2d_ext_vec 30*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 31*9880d681SAndroid Build Coastguard Worker; CHECK: shufpd 32*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 33*9880d681SAndroid Build Coastguard Worker; AVX: v4f2d_ext_vec 34*9880d681SAndroid Build Coastguard Worker; AVX: vcvtps2pd 35*9880d681SAndroid Build Coastguard Worker; AVX: ret 36*9880d681SAndroid Build Coastguard Worker %f1 = fpext <4 x float> %v1 to <4 x double> 37*9880d681SAndroid Build Coastguard Worker ret <4 x double> %f1 38*9880d681SAndroid Build Coastguard Worker} 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Workerdefine <8 x double> @v8f2d_ext_vec(<8 x float> %v1) nounwind { 41*9880d681SAndroid Build Coastguard Workerentry: 42*9880d681SAndroid Build Coastguard Worker; CHECK: v8f2d_ext_vec 43*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 44*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 45*9880d681SAndroid Build Coastguard Worker; CHECK: shufpd 46*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 47*9880d681SAndroid Build Coastguard Worker; CHECK: shufpd 48*9880d681SAndroid Build Coastguard Worker; CHECK: cvtps2pd 49*9880d681SAndroid Build Coastguard Worker; AVX: v8f2d_ext_vec 50*9880d681SAndroid Build Coastguard Worker; AVX: vcvtps2pd 51*9880d681SAndroid Build Coastguard Worker; AVX: vextractf128 52*9880d681SAndroid Build Coastguard Worker; AVX: vcvtps2pd 53*9880d681SAndroid Build Coastguard Worker; AVX: ret 54*9880d681SAndroid Build Coastguard Worker %f1 = fpext <8 x float> %v1 to <8 x double> 55*9880d681SAndroid Build Coastguard Worker ret <8 x double> %f1 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Workerdefine void @test_vector_creation() nounwind { 59*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x double> undef, double 0.000000e+00, i32 2 60*9880d681SAndroid Build Coastguard Worker %2 = load double, double addrspace(1)* null 61*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x double> %1, double %2, i32 3 62*9880d681SAndroid Build Coastguard Worker store <4 x double> %3, <4 x double>* undef 63*9880d681SAndroid Build Coastguard Worker ret void 64*9880d681SAndroid Build Coastguard Worker} 65