@@ -85,7 +85,9 @@ float4 FillTwoPointFiveFloat(){
85
85
// CHECK: [[vec1Ptr:%.*]] = alloca <1 x float>, align 4
86
86
// CHECK: store <1 x float> <float 5.000000e-01>, ptr [[vec1Ptr]], align 4
87
87
// CHECK: [[vec1:%.*]] = load <1 x float>, ptr [[vec1Ptr]], align 4
88
- // CHECK: [[vec1Ret:%.*]] = shufflevector <1 x float> [[vec1]], <1 x float> undef, <1 x i32> zeroinitializer
88
+ // CHECK: [[el0:%.*]] = extractelement <1 x float> [[vec1]], i32 0
89
+ // CHECK: [[vec1Splat:%.*]] = insertelement <1 x float> poison, float [[el0]], i64 0
90
+ // CHECK: [[vec1Ret:%.*]] = shufflevector <1 x float> [[vec1Splat]], <1 x float> poison, <1 x i32> zeroinitializer
89
91
// CHECK: ret <1 x float> [[vec1Ret]]
90
92
vector <float , 1 > FillOneHalfFloat (){
91
93
return .5f .r;
@@ -113,30 +115,12 @@ float2 HowManyFloats(float V) {
113
115
// up nicely too.
114
116
115
117
// CHECK-LABEL: AllRighty
116
- // CHECK: [[XTmp:%.*]] = alloca <1 x double>, align 8
117
- // CHECK: [[YTmp:%.*]] = alloca <1 x double>, align 8
118
- // CHECK: [[ZTmp:%.*]] = alloca <1 x double>, align 8
119
-
120
- // CHECK: store <1 x double> <double 1.000000e+00>, ptr [[XTmp]], align 8
121
- // CHECK: [[XVec:%.*]] = load <1 x double>, ptr [[XTmp]], align 8
122
- // CHECK: [[XVec3:%.*]] = shufflevector <1 x double> [[XVec]], <1 x double> poison, <3 x i32> zeroinitializer
123
- // CHECK: [[XVal:%.*]] = extractelement <3 x double> [[XVec3]], i32 0
124
- // CHECK: [[XValF:%.*]] = fptrunc double [[XVal]] to float
125
- // CHECK: [[Vec3F1:%.*]] = insertelement <3 x float> undef, float [[XValF]], i32 0
126
-
127
- // CHECK: store <1 x double> <double 1.000000e+00>, ptr [[YTmp]], align 8
128
- // CHECK: [[YVec:%.*]] = load <1 x double>, ptr [[YTmp]], align 8
129
- // CHECK: [[YVec3:%.*]] = shufflevector <1 x double> [[YVec]], <1 x double> poison, <3 x i32> zeroinitializer
130
- // CHECK: [[YVal:%.*]] = extractelement <3 x double> [[YVec3]], i32 1
131
- // CHECK: [[YValF:%.*]] = fptrunc double [[YVal]] to float
132
- // CHECK: [[Vec3F2:%.*]] = insertelement <3 x float> [[Vec3F1]], float [[YValF]], i32 1
133
-
134
- // CHECK: store <1 x double> <double 1.000000e+00>, ptr [[ZTmp]], align 8
135
- // CHECK: [[ZVec:%.*]] = load <1 x double>, ptr [[ZTmp]], align 8
136
- // CHECK: [[ZVec3:%.*]] = shufflevector <1 x double> [[ZVec]], <1 x double> poison, <3 x i32> zeroinitializer
137
- // CHECK: [[ZVal:%.*]] = extractelement <3 x double> [[ZVec3]], i32 2
138
- // CHECK: [[ZValF:%.*]] = fptrunc double [[ZVal]] to float
139
- // CHECK: [[Vec3F3:%.*]] = insertelement <3 x float> [[Vec3F2]], float [[ZValF]], i32 2
118
+ // CHECK: [[Tmp:%.*]] = alloca <1 x double>, align 8
119
+ // CHECK: store <1 x double> <double 1.000000e+00>, ptr [[Tmp]], align 8
120
+ // CHECK: [[vec1:%.*]] = load <1 x double>, ptr [[Tmp]], align 8
121
+ // CHECK: [[vec3:%.*]] = shufflevector <1 x double> [[vec1]], <1 x double> poison, <3 x i32> zeroinitializer
122
+ // CHECK: [[vec3f:%.*]] = fptrunc <3 x double> [[vec3]] to <3 x float>
123
+ // ret <3 x float> [[vec3f]]
140
124
141
125
// ret <3 x float> [[Vec3F3]]
142
126
float3 AllRighty () {
0 commit comments