@@ -10085,20 +10085,23 @@ __m512 test_mm512_castpd_ps (__m512d __A)
1008510085 // CHECK: bitcast <8 x double> %{{.}} to <16 x float>
1008610086 return _mm512_castpd_ps (__A);
1008710087}
10088+ TEST_CONSTEXPR(match_m512(_mm512_castpd_ps((__m512d){-1.0, +2.0, +4.0, -6.0, -1.0, +2.0, +4.0, -6.0}), +0.0f, -1.875f, +0.0f, +2.0f, +0.0f, +2.25f, 0.0f, -2.375f, +0.0f, -1.875f, +0.0f, +2.0f, +0.0f, +2.25f, 0.0f, -2.375f));
1008810089
1008910090__m512d test_mm512_castps_pd (__m512 __A)
1009010091{
1009110092 // CHECK-LABEL: test_mm512_castps_pd
1009210093 // CHECK: bitcast <16 x float> %{{.}} to <8 x double>
1009310094 return _mm512_castps_pd (__A);
1009410095}
10096+ TEST_CONSTEXPR(match_m512d(_mm512_castps_pd((__m512){0.0f, -1.0f, 0.0f, 4.0f, 0.0f, -2.0f, 0.0f, 6.0f, 0.0f, -1.0f, 0.0f, 4.0f, 0.0f, -2.0f, 0.0f, 6.0f}), -0.0078125, 512.0, -2.0, +8192.0, -0.0078125, 512.0, -2.0, +8192.0));
1009510097
1009610098__m512i test_mm512_castpd_si512 (__m512d __A)
1009710099{
1009810100 // CHECK-LABEL: test_mm512_castpd_si512
1009910101 // CHECK: bitcast <8 x double> %{{.}} to <8 x i64>
1010010102 return _mm512_castpd_si512 (__A);
1010110103}
10104+ TEST_CONSTEXPR(match_m512i(_mm512_castpd_si512((__m512d){-1.0, +2.0, -3.0, +4.0, -1.0, +2.0, -3.0, +4.0}), 0xBFF0000000000000ULL, 0x4000000000000000ULL, 0xC008000000000000ULL, 0x4010000000000000ULL, 0xBFF0000000000000ULL, 0x4000000000000000ULL, 0xC008000000000000ULL, 0x4010000000000000ULL));
1010210105
1010310106__m512 test_mm512_castps128_ps512(__m128 __A) {
1010410107 // CHECK-LABEL: test_mm512_castps128_ps512
@@ -10252,20 +10255,36 @@ __m512d test_mm512_castpd256_pd512(__m256d a)
1025210255 return _mm512_castpd256_pd512(a);
1025310256}
1025410257
10258+ __m128d test_mm512_castpd512_pd128 (__m512d __A)
10259+ {
10260+ // CHECK-LABEL: test_mm512_castpd512_pd128
10261+ // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <2 x i32> <i32 0, i32 1>
10262+ return _mm512_castpd512_pd128 (__A);
10263+ }
10264+ TEST_CONSTEXPR(match_m128d(_mm512_castpd512_pd128((__m512d){0.0, 1.0, 2.0, 4.0, -8.0, -16.0, -32.0, -64.0}), 0.0, 1.0));
10265+
1025510266__m256d test_mm512_castpd512_pd256 (__m512d __A)
1025610267{
1025710268 // CHECK-LABEL: test_mm512_castpd512_pd256
1025810269 // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1025910270 return _mm512_castpd512_pd256 (__A);
1026010271}
10272+ TEST_CONSTEXPR(match_m256d(_mm512_castpd512_pd256((__m512d){0.0, 1.0, 2.0, 4.0, -8.0, -16.0, -32.0, -64.0}), 0.0, 1.0, 2.0, 4.0));
10273+
10274+ __m128 test_mm512_castps512_ps128 (__m512 __A)
10275+ {
10276+ // CHECK-LABEL: test_mm512_castps512_ps128
10277+ // CHECK: shufflevector <16 x float> %{{.}}, <16 x float> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
10278+ return _mm512_castps512_ps128 (__A);
10279+ }
10280+ TEST_CONSTEXPR(match_m128(_mm512_castps512_ps128((__m512){0.0f, 1.0f, 2.0f, 4.0f, -8.0f, -16.0f, -32.0f, -64.0f, -128.0f, -256.0f, -512.0f, -1024.0f, -2048.0f, -4096.0f, -8192.0f, -16384.0f}), 0.0f, 1.0f, 2.0f, 4.0f));
1026110281
1026210282__m256 test_mm512_castps512_ps256 (__m512 __A)
1026310283{
1026410284 // CHECK-LABEL: test_mm512_castps512_ps256
1026510285 // CHECK: shufflevector <16 x float> %{{.}}, <16 x float> %{{.}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
1026610286 return _mm512_castps512_ps256 (__A);
1026710287}
10268-
1026910288TEST_CONSTEXPR(match_m256(_mm512_castps512_ps256((__m512){0.0f, 1.0f, 2.0f, 4.0f, -8.0f, -16.0f, -32.0f, -64.0f, -128.0f, -256.0f, -512.0f, -1024.0f, -2048.0f, -4096.0f, -8192.0f, -16384.0f}), 0.0f, 1.0f, 2.0f, 4.0f, -8.0f, -16.0f, -32.0f, -64.0f));
1027010289
1027110290__m512i test_mm512_castps_si512 (__m512 __A)
@@ -10274,6 +10293,8 @@ __m512i test_mm512_castps_si512 (__m512 __A)
1027410293 // CHECK: bitcast <16 x float> %{{.}} to <8 x i64>
1027510294 return _mm512_castps_si512 (__A);
1027610295}
10296+ TEST_CONSTEXPR(match_m512i(_mm512_castps_si512((__m512){1.0f, -2.0f, -4.0f, 8.0f, -16.0f, +16.0f, +32.0f, -32.0f, 1.0f, -2.0f, -4.0f, 8.0f, -16.0f, +16.0f, +32.0f, -32.0f}), 0xC00000003F800000ULL, 0x41000000c0800000ULL, 0x41800000C1800000ULL, 0xC200000042000000ULL, 0xC00000003F800000ULL, 0x41000000c0800000ULL, 0x41800000C1800000ULL, 0xC200000042000000ULL));
10297+
1027710298__m512i test_mm512_castsi128_si512(__m128i __A) {
1027810299 // CHECK-LABEL: test_mm512_castsi128_si512
1027910300 // CHECK: [[B:%.*]] = freeze <4 x i64> poison
@@ -10298,28 +10319,30 @@ __m512 test_mm512_castsi512_ps (__m512i __A)
1029810319 // CHECK: bitcast <8 x i64> %{{.}} to <16 x float>
1029910320 return _mm512_castsi512_ps (__A);
1030010321}
10322+ TEST_CONSTEXPR(match_m512(_mm512_castsi512_ps((__m512i)(__v8du){0x42000000c1800000ULL, 0x43000000c2800000ULL, 0x41000000c0800000ULL, 0xC00000003F800000ULL, 0x42000000c1800000ULL, 0x43000000c2800000ULL, 0x41000000c0800000ULL, 0xC00000003F800000ULL}), -16.0f, 32.0f, -64.0f, 128.0f, -4.0f, 8.0f, 1.0f, -2.0f, -16.0f, 32.0f, -64.0f, 128.0f, -4.0f, 8.0f, 1.0f, -2.0f));
1030110323
1030210324__m512d test_mm512_castsi512_pd (__m512i __A)
1030310325{
1030410326 // CHECK-LABEL: test_mm512_castsi512_pd
1030510327 // CHECK: bitcast <8 x i64> %{{.}} to <8 x double>
1030610328 return _mm512_castsi512_pd (__A);
1030710329}
10330+ TEST_CONSTEXPR(match_m512d(_mm512_castsi512_pd((__m512i)(__v8du){0x4070000000000000ULL, 0xC000000000000000ULL, 0xBFF0000000000000ULL, 0xC008000000000000ULL, 0x4070000000000000ULL, 0xC000000000000000ULL, 0xBFF0000000000000ULL, 0xC008000000000000ULL}), 256.0, -2.0, -1.0, -3.0, 256.0, -2.0, -1.0, -3.0));
1030810331
1030910332__m128i test_mm512_castsi512_si128 (__m512i __A)
1031010333{
1031110334 // CHECK-LABEL: test_mm512_castsi512_si128
1031210335 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <2 x i32> <i32 0, i32 1>
1031310336 return _mm512_castsi512_si128 (__A);
1031410337}
10338+ TEST_CONSTEXPR(match_m128i(_mm512_castsi512_si128((__m512i)(__v8du){0xBFF0000000000000ULL, 0x4070000000000000ULL, 0xC000000000000000ULL, 0xC008000000000000ULL, 0xBFF0000000000000ULL, 0x4070000000000000ULL, 0xC000000000000000ULL, 0xC008000000000000ULL}), 0xBFF0000000000000ULL, 0x4070000000000000ULL));
1031510339
1031610340__m256i test_mm512_castsi512_si256 (__m512i __A)
1031710341{
1031810342 // CHECK-LABEL: test_mm512_castsi512_si256
1031910343 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
1032010344 return _mm512_castsi512_si256 (__A);
1032110345}
10322-
1032310346TEST_CONSTEXPR(match_v8si(_mm512_castsi512_si256((__m512i)(__v16si){0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384}), 0, 1, 2, 4, 8, 16, 32, 64));
1032410347
1032510348__m128 test_mm_cvt_roundsd_ss(__m128 __A, __m128d __B) {
0 commit comments