@@ -167,6 +167,7 @@ __m128 test_mm_cvt_pi2ps(__m128 a, __m64 b) {
167
167
// CHECK: sitofp <4 x i32> {{%.*}} to <4 x float>
168
168
return _mm_cvt_pi2ps (a , b );
169
169
}
170
+ TEST_CONSTEXPR (match_m128 (_mm_cvt_pi2ps ((__m128 ){-5.0f , +7.0f , -9.0f , +11.0f }, (__m64 )(__v2si ){-2 ,+4 }), -2.0f , +4.0f , -9.0f , +11.0f ));
170
171
171
172
__m64 test_mm_cvt_ps2pi (__m128 a ) {
172
173
// CHECK-LABEL: test_mm_cvt_ps2pi
@@ -180,29 +181,40 @@ __m64 test_mm_cvtpd_pi32(__m128d a) {
180
181
return _mm_cvtpd_pi32 (a );
181
182
}
182
183
184
+ __m128 test_mm_cvtpi8_ps (__m64 a ) {
185
+ // CHECK-LABEL: test_mm_cvtpi8_ps
186
+ // CHECK: sitofp <4 x i8> {{%.*}} to <4 x float>
187
+ return _mm_cvtpi8_ps (a );
188
+ }
189
+ TEST_CONSTEXPR (match_m128 (_mm_cvtpi8_ps ((__m64 )(__v8qi ){1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 }), +1.0f , +2.0f , +3.0f , +4.0f ));
190
+
183
191
__m128 test_mm_cvtpi16_ps (__m64 a ) {
184
192
// CHECK-LABEL: test_mm_cvtpi16_ps
185
193
// CHECK: sitofp <4 x i16> {{%.*}} to <4 x float>
186
194
return _mm_cvtpi16_ps (a );
187
195
}
196
+ TEST_CONSTEXPR (match_m128 (_mm_cvtpi16_ps ((__m64 )(__v4hi ){-3 , +9 , -8 , +256 }), -3.0f , +9.0f , -8.0f , +256.0f ));
188
197
189
198
__m128d test_mm_cvtpi32_pd (__m64 a ) {
190
199
// CHECK-LABEL: test_mm_cvtpi32_pd
191
200
// CHECK: sitofp <2 x i32> {{%.*}} to <2 x double>
192
201
return _mm_cvtpi32_pd (a );
193
202
}
203
+ TEST_CONSTEXPR (match_m128d (_mm_cvtpi32_pd ((__m64 )(__v2si ){-10 ,+17 }), -10.0 , +17.0 ));
194
204
195
205
__m128 test_mm_cvtpi32_ps (__m128 a , __m64 b ) {
196
206
// CHECK-LABEL: test_mm_cvtpi32_ps
197
207
// CHECK: sitofp <4 x i32> {{%.*}} to <4 x float>
198
208
return _mm_cvtpi32_ps (a , b );
199
209
}
210
+ TEST_CONSTEXPR (match_m128 (_mm_cvtpi32_ps ((__m128 ){+1.0f , -2.0f , +3.0f , +5.0f }, (__m64 )(__v2si ){+100 ,-200 }), +100.0f , -200.0f , +3.0f , +5.0f ));
200
211
201
212
__m128 test_mm_cvtpi32x2_ps (__m64 a , __m64 b ) {
202
213
// CHECK-LABEL: test_mm_cvtpi32x2_ps
203
214
// CHECK: sitofp <4 x i32> {{%.*}} to <4 x float>
204
215
return _mm_cvtpi32x2_ps (a , b );
205
216
}
217
+ TEST_CONSTEXPR (match_m128 (_mm_cvtpi32x2_ps ((__m64 )(__v2si ){-8 ,+7 }, (__m64 )(__v2si ){+100 ,-200 }), -8.0f , +7.0f , +100.0f , -200.0f ));
206
218
207
219
__m64 test_mm_cvtps_pi16 (__m128 a ) {
208
220
// CHECK-LABEL: test_mm_cvtps_pi16
@@ -217,6 +229,20 @@ __m64 test_mm_cvtps_pi32(__m128 a) {
217
229
return _mm_cvtps_pi32 (a );
218
230
}
219
231
232
+ __m128 test_mm_cvtpu8_ps (__m64 a ) {
233
+ // CHECK-LABEL: test_mm_cvtpu8_ps
234
+ // CHECK: uitofp <4 x i8> {{%.*}} to <4 x float>
235
+ return _mm_cvtpu8_ps (a );
236
+ }
237
+ TEST_CONSTEXPR (match_m128 (_mm_cvtpu8_ps ((__m64 )(__v8qi ){8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 }), 8.0f , 7.0f , 6.0f , 5.0f ));
238
+
239
+ __m128 test_mm_cvtpu16_ps (__m64 a ) {
240
+ // CHECK-LABEL: test_mm_cvtpu16_ps
241
+ // CHECK: uitofp <4 x i16> {{%.*}} to <4 x float>
242
+ return _mm_cvtpu16_ps (a );
243
+ }
244
+ TEST_CONSTEXPR (match_m128 (_mm_cvtpu16_ps ((__m64 )(__v4hi ){-3 , +9 , -8 , +256 }), 65533.0f , 9.0f , 65528.0f , 256.0f ));
245
+
220
246
__m64 test_mm_cvtsi32_si64 (int a ) {
221
247
// CHECK-LABEL: test_mm_cvtsi32_si64
222
248
// CHECK: insertelement <2 x i32>
0 commit comments