xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/pr11334.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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