|
4 | 4 | // RUN: %clang_cc1 -x c++ -flax-vector-conversions=none -fms-extensions -fms-compatibility -ffreestanding %s -triple=x86_64-windows-msvc -target-feature +avx512f -emit-llvm -o - -Wall -Werror -Wsign-conversion | FileCheck %s
|
5 | 5 |
|
6 | 6 | #include <immintrin.h>
|
| 7 | +#include "builtin_test_helpers.h" |
7 | 8 |
|
8 | 9 | __m512d test_mm512_sqrt_pd(__m512d a)
|
9 | 10 | {
|
@@ -10615,41 +10616,45 @@ __m128 test_mm_maskz_cvtsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
|
10615 | 10616 | return _mm_maskz_cvtsd_ss(__U, __A, __B);
|
10616 | 10617 | }
|
10617 | 10618 |
|
10618 |
| - |
10619 | 10619 | __m512i test_mm512_setzero_epi32(void)
|
10620 | 10620 | {
|
10621 | 10621 | // CHECK-LABEL: test_mm512_setzero_epi32
|
10622 | 10622 | // CHECK: zeroinitializer
|
10623 | 10623 | return _mm512_setzero_epi32();
|
10624 | 10624 | }
|
| 10625 | +TEST_CONSTEXPR(match_m512i(_mm512_setzero_epi32(), 0, 0, 0, 0, 0, 0, 0, 0)); |
10625 | 10626 |
|
10626 | 10627 | __m512 test_mm512_setzero(void)
|
10627 | 10628 | {
|
10628 | 10629 | // CHECK-LABEL: test_mm512_setzero
|
10629 | 10630 | // CHECK: zeroinitializer
|
10630 | 10631 | return _mm512_setzero();
|
10631 | 10632 | }
|
| 10633 | +TEST_CONSTEXPR(match_m512(_mm512_setzero(), +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f)); |
10632 | 10634 |
|
10633 | 10635 | __m512i test_mm512_setzero_si512(void)
|
10634 | 10636 | {
|
10635 | 10637 | // CHECK-LABEL: test_mm512_setzero_si512
|
10636 | 10638 | // CHECK: zeroinitializer
|
10637 | 10639 | return _mm512_setzero_si512();
|
10638 | 10640 | }
|
| 10641 | +TEST_CONSTEXPR(match_m512i(_mm512_setzero_si512(), 0, 0, 0, 0, 0, 0, 0, 0)); |
10639 | 10642 |
|
10640 | 10643 | __m512 test_mm512_setzero_ps(void)
|
10641 | 10644 | {
|
10642 | 10645 | // CHECK-LABEL: test_mm512_setzero_ps
|
10643 | 10646 | // CHECK: zeroinitializer
|
10644 | 10647 | return _mm512_setzero_ps();
|
10645 | 10648 | }
|
| 10649 | +TEST_CONSTEXPR(match_m512(_mm512_setzero_ps(), +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f)); |
10646 | 10650 |
|
10647 | 10651 | __m512d test_mm512_setzero_pd(void)
|
10648 | 10652 | {
|
10649 | 10653 | // CHECK-LABEL: test_mm512_setzero_pd
|
10650 | 10654 | // CHECK: zeroinitializer
|
10651 | 10655 | return _mm512_setzero_pd();
|
10652 | 10656 | }
|
| 10657 | +TEST_CONSTEXPR(match_m512d(_mm512_setzero_pd(), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)); |
10653 | 10658 |
|
10654 | 10659 | __mmask16 test_mm512_int2mask(int __a)
|
10655 | 10660 | {
|
@@ -10880,25 +10885,3 @@ void test_mm512_mask_i32loscatter_epi64(void *__addr, __mmask8 __mask, __m512i _
|
10880 | 10885 | // CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
|
10881 | 10886 | _mm512_mask_i32loscatter_epi64(__addr, __mask, __index, __v1, 2);
|
10882 | 10887 | }
|
10883 |
| - |
10884 |
| -// Test constexpr handling. |
10885 |
| -#if defined(__cplusplus) && (__cplusplus >= 201103L) |
10886 |
| - |
10887 |
| -void test_constexpr() { |
10888 |
| - constexpr __m512 v_mm512_setzero = _mm512_setzero(); |
10889 |
| - static_assert(v_mm512_setzero[0] == +0.0f && v_mm512_setzero[1] == +0.0f && v_mm512_setzero[2] == +0.0f && v_mm512_setzero[3] == +0.0f && v_mm512_setzero[4] == +0.0f && v_mm512_setzero[5] == +0.0f && v_mm512_setzero[6] == +0.0f && v_mm512_setzero[7] == +0.0f && v_mm512_setzero[8] == +0.0f && v_mm512_setzero[9] == +0.0f && v_mm512_setzero[10] == +0.0f && v_mm512_setzero[11] == +0.0f && v_mm512_setzero[12] == +0.0f && v_mm512_setzero[13] == +0.0f && v_mm512_setzero[14] == +0.0f && v_mm512_setzero[15] == +0.0f); |
10890 |
| - |
10891 |
| - constexpr __m512 v_mm512_setzero_ps = _mm512_setzero_ps(); |
10892 |
| - static_assert(v_mm512_setzero_ps[0] == +0.0f && v_mm512_setzero_ps[1] == +0.0f && v_mm512_setzero_ps[2] == +0.0f && v_mm512_setzero_ps[3] == +0.0f && v_mm512_setzero_ps[4] == +0.0f && v_mm512_setzero_ps[5] == +0.0f && v_mm512_setzero_ps[6] == +0.0f && v_mm512_setzero_ps[7] == +0.0f && v_mm512_setzero_ps[8] == +0.0f && v_mm512_setzero_ps[9] == +0.0f && v_mm512_setzero_ps[10] == +0.0f && v_mm512_setzero_ps[11] == +0.0f && v_mm512_setzero_ps[12] == +0.0f && v_mm512_setzero_ps[13] == +0.0f && v_mm512_setzero_ps[14] == +0.0f && v_mm512_setzero_ps[15] == +0.0f); |
10893 |
| - |
10894 |
| - constexpr __m512d v_mm512_setzero_pd = _mm512_setzero_pd(); |
10895 |
| - static_assert(v_mm512_setzero_pd[0] == +0.0 && v_mm512_setzero_pd[1] == +0.0 && v_mm512_setzero_pd[2] == +0.0 && v_mm512_setzero_pd[3] == +0.0 && v_mm512_setzero_pd[4] == +0.0 && v_mm512_setzero_pd[5] == +0.0 && v_mm512_setzero_pd[6] == +0.0 && v_mm512_setzero_pd[7] == +0.0); |
10896 |
| - |
10897 |
| - constexpr __m512i v_mm512_setzero_si512 = _mm512_setzero_si512(); |
10898 |
| - static_assert(v_mm512_setzero_si512[0] == 0x0000000000000000ULL && v_mm512_setzero_si512[1] == 0x0000000000000000ULL && v_mm512_setzero_si512[2] == 0x0000000000000000ULL && v_mm512_setzero_si512[3] == 0x0000000000000000ULL && v_mm512_setzero_si512[4] == 0x0000000000000000ULL && v_mm512_setzero_si512[5] == 0x0000000000000000ULL && v_mm512_setzero_si512[6] == 0x0000000000000000ULL && v_mm512_setzero_si512[7] == 0x0000000000000000ULL); |
10899 |
| - |
10900 |
| - constexpr __m512i v_mm512_setzero_epi32 = _mm512_setzero_epi32(); |
10901 |
| - static_assert(v_mm512_setzero_epi32[0] == 0x0000000000000000ULL && v_mm512_setzero_epi32[1] == 0x0000000000000000ULL && v_mm512_setzero_epi32[2] == 0x0000000000000000ULL && v_mm512_setzero_epi32[3] == 0x0000000000000000ULL && v_mm512_setzero_epi32[4] == 0x0000000000000000ULL && v_mm512_setzero_epi32[5] == 0x0000000000000000ULL && v_mm512_setzero_epi32[6] == 0x0000000000000000ULL && v_mm512_setzero_epi32[7] == 0x0000000000000000ULL); |
10902 |
| -} |
10903 |
| - |
10904 |
| -#endif |
0 commit comments