diff options
Diffstat (limited to 'clang/test/CodeGen/X86/avx512f-builtins.c')
-rw-r--r-- | clang/test/CodeGen/X86/avx512f-builtins.c | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/clang/test/CodeGen/X86/avx512f-builtins.c b/clang/test/CodeGen/X86/avx512f-builtins.c index d59799e..048bc30 100644 --- a/clang/test/CodeGen/X86/avx512f-builtins.c +++ b/clang/test/CodeGen/X86/avx512f-builtins.c @@ -439,6 +439,22 @@ __m512d test_mm512_set1_pd(double d) // CHECK: insertelement <8 x double> {{.*}}, i32 7 return _mm512_set1_pd(d); } +TEST_CONSTEXPR(match_m512d(_mm512_set1_pd(-100.0), -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0, -100.0)); + +__m512 test_mm512_set1_ps(float d) +{ + // CHECK-LABEL: test_mm512_set1_ps + // CHECK: insertelement <16 x float> {{.*}}, i32 0 + // CHECK: insertelement <16 x float> {{.*}}, i32 1 + // CHECK: insertelement <16 x float> {{.*}}, i32 2 + // CHECK: insertelement <16 x float> {{.*}}, i32 3 + // CHECK: insertelement <16 x float> {{.*}}, i32 4 + // CHECK: insertelement <16 x float> {{.*}}, i32 5 + // CHECK: insertelement <16 x float> {{.*}}, i32 6 + // CHECK: insertelement <16 x float> {{.*}}, i32 15 + return _mm512_set1_ps(d); +} +TEST_CONSTEXPR(match_m512(_mm512_set1_ps(-55.0f), -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f, -55.0f)); __mmask16 test_mm512_knot(__mmask16 a) { @@ -3824,6 +3840,8 @@ __m512i test_mm512_cvtepi8_epi32(__m128i __A) { return _mm512_cvtepi8_epi32(__A); } +TEST_CONSTEXPR(match_v16si(_mm512_cvtepi8_epi32(_mm_setr_epi8(-3, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12)), -3, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12)); + __m512i test_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A) { // CHECK-LABEL: test_mm512_mask_cvtepi8_epi32 // CHECK: sext <16 x i8> %{{.*}} to <16 x i32> @@ -3844,6 +3862,8 @@ __m512i test_mm512_cvtepi8_epi64(__m128i __A) { return _mm512_cvtepi8_epi64(__A); } +TEST_CONSTEXPR(match_v8di(_mm512_cvtepi8_epi64(_mm_setr_epi8(-3, 2, -1, 0, 1, -2, 3, -4, 0, 0, 0, 0, 0, 0, 0, 0)), -3, 2, -1, 0, 1, -2, 3, -4)); + __m512i test_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: test_mm512_mask_cvtepi8_epi64 // CHECK: sext <8 x i8> %{{.*}} to <8 x i64> @@ -3864,6 +3884,8 @@ __m512i test_mm512_cvtepi32_epi64(__m256i __X) { return _mm512_cvtepi32_epi64(__X); } +TEST_CONSTEXPR(match_v8di(_mm512_cvtepi32_epi64(_mm256_setr_epi32(-70000, 2, -1, 0, 1, -2, 3, -4)), -70000, 2, -1, 0, 1, -2, 3, -4)); + __m512i test_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X) { // CHECK-LABEL: test_mm512_mask_cvtepi32_epi64 // CHECK: sext <8 x i32> %{{.*}} to <8 x i64> @@ -3884,6 +3906,8 @@ __m512i test_mm512_cvtepi16_epi32(__m256i __A) { return _mm512_cvtepi16_epi32(__A); } +TEST_CONSTEXPR(match_v16si(_mm512_cvtepi16_epi32(_mm256_setr_epi16(-300, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12)), -300, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12)); + __m512i test_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A) { // CHECK-LABEL: test_mm512_mask_cvtepi16_epi32 // CHECK: sext <16 x i16> %{{.*}} to <16 x i32> @@ -3904,6 +3928,8 @@ __m512i test_mm512_cvtepi16_epi64(__m128i __A) { return _mm512_cvtepi16_epi64(__A); } +TEST_CONSTEXPR(match_v8di(_mm512_cvtepi16_epi64(_mm_setr_epi16(-300, 2, -1, 0, 1, -2, 3, -4)), -300, 2, -1, 0, 1, -2, 3, -4)); + __m512i test_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: test_mm512_mask_cvtepi16_epi64 // CHECK: sext <8 x i16> %{{.*}} to <8 x i64> @@ -3924,6 +3950,8 @@ __m512i test_mm512_cvtepu8_epi32(__m128i __A) { return _mm512_cvtepu8_epi32(__A); } +TEST_CONSTEXPR(match_v16si(_mm512_cvtepu8_epi32(_mm_setr_epi8(-3, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12)), 253, 2, 255, 0, 1, 254, 3, 252, 5, 250, 7, 248, 9, 246, 11, 244)); + __m512i test_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A) { // CHECK-LABEL: test_mm512_mask_cvtepu8_epi32 // CHECK: zext <16 x i8> %{{.*}} to <16 x i32> @@ -3944,6 +3972,8 @@ __m512i test_mm512_cvtepu8_epi64(__m128i __A) { return _mm512_cvtepu8_epi64(__A); } +TEST_CONSTEXPR(match_v8di(_mm512_cvtepu8_epi64(_mm_setr_epi8(-3, 2, -1, 0, 1, -2, 3, -4, 0, 0, 0, 0, 0, 0, 0, 0)), 253, 2, 255, 0, 1, 254, 3, 252)); + __m512i test_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: test_mm512_mask_cvtepu8_epi64 // CHECK: zext <8 x i8> %{{.*}} to <8 x i64> @@ -3964,6 +3994,8 @@ __m512i test_mm512_cvtepu32_epi64(__m256i __X) { return _mm512_cvtepu32_epi64(__X); } +TEST_CONSTEXPR(match_v8di(_mm512_cvtepu32_epi64(_mm256_setr_epi32(-70000, 2, -1, 0, 1, -2, 3, -4)), 4294897296, 2, 4294967295, 0, 1, 4294967294, 3, 4294967292)); + __m512i test_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X) { // CHECK-LABEL: test_mm512_mask_cvtepu32_epi64 // CHECK: zext <8 x i32> %{{.*}} to <8 x i64> @@ -3984,6 +4016,8 @@ __m512i test_mm512_cvtepu16_epi32(__m256i __A) { return _mm512_cvtepu16_epi32(__A); } +TEST_CONSTEXPR(match_v16si(_mm512_cvtepu16_epi32(_mm256_setr_epi16(-300, 2, -1, 0, 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12)), 65236, 2, 65535, 0, 1, 65534, 3, 65532, 5, 65530, 7, 65528, 9, 65526, 11, 65524)); + __m512i test_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A) { // CHECK-LABEL: test_mm512_mask_cvtepu16_epi32 // CHECK: zext <16 x i16> %{{.*}} to <16 x i32> @@ -4004,6 +4038,8 @@ __m512i test_mm512_cvtepu16_epi64(__m128i __A) { return _mm512_cvtepu16_epi64(__A); } +TEST_CONSTEXPR(match_v8di(_mm512_cvtepu16_epi64(_mm_setr_epi16(-300, 2, -1, 0, 1, -2, 3, -4)), 65236, 2, 65535, 0, 1, 65534, 3, 65532)); + __m512i test_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A) { // CHECK-LABEL: test_mm512_mask_cvtepu16_epi64 // CHECK: zext <8 x i16> %{{.*}} to <8 x i64> @@ -9046,6 +9082,7 @@ __m512i test_mm512_set1_epi8(char d) // CHECK: insertelement <64 x i8> {{.*}}, i32 63 return _mm512_set1_epi8(d); } +TEST_CONSTEXPR(match_v64qi(_mm512_set1_epi8(127), 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, 127)); __m512i test_mm512_set1_epi16(short d) { @@ -9061,6 +9098,7 @@ __m512i test_mm512_set1_epi16(short d) // CHECK: insertelement <32 x i16> {{.*}}, i32 31 return _mm512_set1_epi16(d); } +TEST_CONSTEXPR(match_v32hi(_mm512_set1_epi16(-511), -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511, -511)); __m512i test_mm512_set1_epi32(int d) { @@ -9098,6 +9136,7 @@ __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D) // CHECK: insertelement <16 x i32> {{.*}}, i32 15 return _mm512_set4_epi32 (__A,__B,__C,__D); } +TEST_CONSTEXPR(match_v16si(_mm512_set4_epi32(10, 20, 30, 40), 40, 30, 20, 10, 40, 30, 20, 10, 40, 30, 20, 10, 40, 30, 20, 10)); __m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long long __D) { @@ -9105,6 +9144,7 @@ __m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long // CHECK: insertelement <8 x i64> {{.*}}, i32 7 return _mm512_set4_epi64 (__A,__B,__C,__D); } +TEST_CONSTEXPR(match_v8di(_mm512_set4_epi64(1, -3, 5, -7), -7, 5, -3, 1, -7, 5, -3, 1)); __m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D) { @@ -9112,6 +9152,7 @@ __m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D) // CHECK: insertelement <8 x double> {{.*}}, i32 7 return _mm512_set4_pd (__A,__B,__C,__D); } +TEST_CONSTEXPR(match_m512d(_mm512_set4_pd(10.0, 20.0, 30.0, 40.0), 40.0, 30.0, 20.0, 10.0, 40.0, 30.0, 20.0, 10.0)); __m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D) { @@ -9119,6 +9160,7 @@ __m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D) // CHECK: insertelement <16 x float> {{.*}}, i32 15 return _mm512_set4_ps (__A,__B,__C,__D); } +TEST_CONSTEXPR(match_m512(_mm512_set4_ps(1.1f, 2.2f, 3.3f, 4.4f), 4.4f, 3.3f, 2.2f, 1.1f, 4.4f, 3.3f, 2.2f, 1.1f, 4.4f, 3.3f, 2.2f, 1.1f, 4.4f, 3.3f, 2.2f, 1.1f)); __m512i test_mm512_setr4_epi32(int e0, int e1, int e2, int e3) { @@ -10258,6 +10300,11 @@ __m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0); } +TEST_CONSTEXPR(match_v64qi(_mm512_set_epi8(63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, + 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, + 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, + 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63)); __m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28, short e27, short e26, short e25, short e24, short e23, short e22, @@ -10301,8 +10348,9 @@ __m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28, return _mm512_set_epi16(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0); - } +TEST_CONSTEXPR(match_v32hi(_mm512_set_epi16(-31, 30, -29, 28, -27, 26, -25, 24, -23, 22, -21, 20, -19, 18, -17, 16, -15, 14, -13, 12, -11, 10, -9, 8, -7, 6, -5, 4, -3, 2, -1, 0), 0, -1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, -13, 14, -15, 16, -17, 18, -19, 20, -21, 22, -23, 24, -25, 26, -27, 28, -29, 30, -31)); + __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D, int __E, int __F, int __G, int __H, int __I, int __J, int __K, int __L, @@ -10328,6 +10376,7 @@ __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D, return _mm512_set_epi32( __A, __B, __C, __D,__E, __F, __G, __H, __I, __J, __K, __L,__M, __N, __O, __P); } +TEST_CONSTEXPR(match_v16si(_mm512_set_epi32(-15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0), 0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15)); __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D, int __E, int __F, int __G, int __H, @@ -10370,6 +10419,7 @@ __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D, return _mm512_setr_epi32( __A, __B, __C, __D,__E, __F, __G, __H, __I, __J, __K, __L,__M, __N, __O, __P); } +TEST_CONSTEXPR(match_v16si(_mm512_setr_epi32(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)); __m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A) { @@ -10417,6 +10467,7 @@ __m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C, //CHECK: insertelement{{.*}}i32 7 return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H ); } +TEST_CONSTEXPR(match_v8di(_mm512_set_epi64(-15, 13, -11, 9, -7, 5, -3, 1), 1, -3, 5, -7, 9, -11, 13, -15)); __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C, long long __D, long long __E, long long __F, @@ -10441,6 +10492,7 @@ __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C, //CHECK: insertelement{{.*}}i32 7 return _mm512_setr_epi64(__A, __B, __C, __D, __E, __F, __G, __H ); } +TEST_CONSTEXPR(match_v8di(_mm512_setr_epi64(-1, 3, -5, 7, -9, 11, -13, 15), -1, 3, -5, 7, -9, 11, -13, 15)); __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D, double __E, double __F, double __G, double __H) @@ -10456,6 +10508,7 @@ __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D, //CHECK: insertelement{{.*}}i32 7 return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H); } +TEST_CONSTEXPR(match_m512d(_mm512_set_pd(20.0, 40.0, 60.0, 80.0, 100.0, 120.0, 140.0, 160.0), 160.0, 140.0, 120.0, 100.0, 80.0, 60.0, 40.0, 20.0)); __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D, double __E, double __F, double __G, double __H) @@ -10479,6 +10532,7 @@ __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D, //CHECK: insertelement{{.*}}i32 7 return _mm512_setr_pd( __A, __B, __C, __D, __E, __F, __G, __H); } +TEST_CONSTEXPR(match_m512d(_mm512_setr_pd(-20.0, 40.0, -60.0, 80.0, -100.0, 120.0, -140.0, 160.0), -20.0, 40.0, -60.0, 80.0, -100.0, 120.0, -140.0, 160.0)); __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D, float __E, float __F, float __G, float __H, @@ -10505,6 +10559,7 @@ __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D, return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H, __I, __J, __K, __L, __M, __N, __O, __P); } +TEST_CONSTEXPR(match_m512(_mm512_set_ps(-16.0f, 15.0f, -14.0f, 13.0f, -12.0f, 11.0f, -10.0f, 9.0f, -8.0f, 7.0f, -6.0f, 5.0f, -4.0f, 3.0f, -2.0f, 1.0f), 1.0f, -2.0f, 3.0f, -4.0f, 5.0f, -6.0f, 7.0f, -8.0f, 9.0f, -10.0f, 11.0f, -12.0f, 13.0f, -14.0f, 15.0f, -16.0f)); __m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A) { @@ -10583,6 +10638,7 @@ __m512 test_mm512_setr_ps (float __A, float __B, float __C, float __D, return _mm512_setr_ps( __A, __B, __C, __D, __E, __F, __G, __H, __I, __J, __K, __L, __M, __N, __O, __P); } +TEST_CONSTEXPR(match_m512(_mm512_setr_ps(-1.0f, 2.0f, -3.0f, 4.0f, -5.0f, 6.0f, -7.0f, 8.0f, -9.0f, 10.0f, -11.0f, 12.0f, -13.0f, 14.0f, -15.0f, 16.0f), -1.0f, 2.0f, -3.0f, 4.0f, -5.0f, 6.0f, -7.0f, 8.0f, -9.0f, 10.0f, -11.0f, 12.0f, -13.0f, 14.0f, -15.0f, 16.0f)); int test_mm_cvtss_i32(__m128 A) { // CHECK-LABEL: test_mm_cvtss_i32 |