Skip to content

Commit f257e9b

Browse files
committed
[clang][x86] Update AVX/AVX512 setzero constexpr tests to use the TEST_CONSTEXPR macro
1 parent 340cd4e commit f257e9b

File tree

3 files changed

+41
-46
lines changed

3 files changed

+41
-46
lines changed

clang/test/CodeGen/X86/avx-builtins.c

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212

1313
#include <immintrin.h>
14+
#include "builtin_test_helpers.h"
1415

1516
// NOTE: This should match the tests in llvm/test/CodeGen/X86/avx-intrinsics-fast-isel.ll
1617

@@ -1740,18 +1741,21 @@ __m256d test_mm256_setzero_pd(void) {
17401741
// CHECK: store <4 x double> zeroinitializer
17411742
return _mm256_setzero_pd();
17421743
}
1744+
TEST_CONSTEXPR(match_m256d(_mm256_setzero_pd(), +0.0, +0.0, +0.0, +0.0));
17431745

17441746
__m256 test_mm256_setzero_ps(void) {
17451747
// CHECK-LABEL: test_mm256_setzero_ps
17461748
// CHECK: store <8 x float> zeroinitializer
17471749
return _mm256_setzero_ps();
17481750
}
1751+
TEST_CONSTEXPR(match_m256(_mm256_setzero_ps(), +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f, +0.0f));
17491752

17501753
__m256i test_mm256_setzero_si256(void) {
17511754
// CHECK-LABEL: test_mm256_setzero_si256
17521755
// CHECK: store <4 x i64> zeroinitializer
17531756
return _mm256_setzero_si256();
17541757
}
1758+
TEST_CONSTEXPR(match_m256i(_mm256_setzero_si256(), 0, 0, 0, 0));
17551759

17561760
__m256d test_mm256_shuffle_pd(__m256d A, __m256d B) {
17571761
// CHECK-LABEL: test_mm256_shuffle_pd
@@ -2097,19 +2101,3 @@ float test_mm256_cvtss_f32(__m256 __a)
20972101
// CHECK: extractelement <8 x float> %{{.*}}, i32 0
20982102
return _mm256_cvtss_f32(__a);
20992103
}
2100-
2101-
// Test constexpr handling.
2102-
#if defined(__cplusplus) && (__cplusplus >= 201103L)
2103-
2104-
void test_constexpr() {
2105-
constexpr __m256d v_mm256_setzero_pd = _mm256_setzero_pd();
2106-
static_assert(v_mm256_setzero_pd[0] == +0.0 && v_mm256_setzero_pd[1] == +0.0 && v_mm256_setzero_pd[2] == +0.0 && v_mm256_setzero_pd[3] == +0.0);
2107-
2108-
constexpr __m256 v_mm256_setzero_ps = _mm256_setzero_ps();
2109-
static_assert(v_mm256_setzero_ps[0] == +0.0f && v_mm256_setzero_ps[1] == +0.0f && v_mm256_setzero_ps[2] == +0.0f && v_mm256_setzero_ps[3] == +0.0f && v_mm256_setzero_ps[4] == +0.0f && v_mm256_setzero_ps[5] == +0.0f && v_mm256_setzero_ps[6] == +0.0f && v_mm256_setzero_ps[7] == +0.0f);
2110-
2111-
constexpr __m256i v_mm256_setzero_si256 = _mm256_setzero_si256();
2112-
static_assert(v_mm256_setzero_si256[0] == 0x0000000000000000ULL && v_mm256_setzero_si256[1] == 0x0000000000000000ULL && v_mm256_setzero_si256[2] == 0x0000000000000000ULL && v_mm256_setzero_si256[3] == 0x0000000000000000ULL);
2113-
}
2114-
2115-
#endif

clang/test/CodeGen/X86/avx512f-builtins.c

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
// 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
55

66
#include <immintrin.h>
7+
#include "builtin_test_helpers.h"
78

89
__m512d test_mm512_sqrt_pd(__m512d a)
910
{
@@ -10615,41 +10616,45 @@ __m128 test_mm_maskz_cvtsd_ss(__mmask8 __U, __m128 __A, __m128d __B) {
1061510616
return _mm_maskz_cvtsd_ss(__U, __A, __B);
1061610617
}
1061710618

10618-
1061910619
__m512i test_mm512_setzero_epi32(void)
1062010620
{
1062110621
// CHECK-LABEL: test_mm512_setzero_epi32
1062210622
// CHECK: zeroinitializer
1062310623
return _mm512_setzero_epi32();
1062410624
}
10625+
TEST_CONSTEXPR(match_m512i(_mm512_setzero_epi32(), 0, 0, 0, 0, 0, 0, 0, 0));
1062510626

1062610627
__m512 test_mm512_setzero(void)
1062710628
{
1062810629
// CHECK-LABEL: test_mm512_setzero
1062910630
// CHECK: zeroinitializer
1063010631
return _mm512_setzero();
1063110632
}
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));
1063210634

1063310635
__m512i test_mm512_setzero_si512(void)
1063410636
{
1063510637
// CHECK-LABEL: test_mm512_setzero_si512
1063610638
// CHECK: zeroinitializer
1063710639
return _mm512_setzero_si512();
1063810640
}
10641+
TEST_CONSTEXPR(match_m512i(_mm512_setzero_si512(), 0, 0, 0, 0, 0, 0, 0, 0));
1063910642

1064010643
__m512 test_mm512_setzero_ps(void)
1064110644
{
1064210645
// CHECK-LABEL: test_mm512_setzero_ps
1064310646
// CHECK: zeroinitializer
1064410647
return _mm512_setzero_ps();
1064510648
}
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));
1064610650

1064710651
__m512d test_mm512_setzero_pd(void)
1064810652
{
1064910653
// CHECK-LABEL: test_mm512_setzero_pd
1065010654
// CHECK: zeroinitializer
1065110655
return _mm512_setzero_pd();
1065210656
}
10657+
TEST_CONSTEXPR(match_m512d(_mm512_setzero_pd(), 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
1065310658

1065410659
__mmask16 test_mm512_int2mask(int __a)
1065510660
{
@@ -10880,25 +10885,3 @@ void test_mm512_mask_i32loscatter_epi64(void *__addr, __mmask8 __mask, __m512i _
1088010885
// CHECK: @llvm.x86.avx512.mask.scatter.dpq.512
1088110886
_mm512_mask_i32loscatter_epi64(__addr, __mask, __index, __v1, 2);
1088210887
}
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

clang/test/CodeGen/X86/builtin_test_helpers.h

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,40 @@
44

55
#if defined(__cplusplus) && (__cplusplus >= 201103L)
66

7-
constexpr bool match_m128(__m128 v, float x, float y, float z, float w) {
8-
return v[0] == x && v[1] == y && v[2] == z && v[3] == w;
7+
constexpr bool match_m128(__m128 v, float a, float b, float c, float d) {
8+
return v[0] == a && v[1] == b && v[2] == c && v[3] == d;
99
}
1010

11-
constexpr bool match_m128d(__m128d v, double x, double y) {
12-
return v[0] == x && v[1] == y;
11+
constexpr bool match_m128d(__m128d v, double a, double b) {
12+
return v[0] == a && v[1] == b;
1313
}
1414

15-
constexpr bool match_m128i(__m128i v, unsigned long long x, unsigned long long y) {
16-
return v[0] == x && v[1] == y;
15+
constexpr bool match_m128i(__m128i v, unsigned long long a, unsigned long long b) {
16+
return v[0] == a && v[1] == b;
17+
}
18+
19+
constexpr bool match_m256(__m256 v, float a, float b, float c, float d, float e, float f, float g, float h) {
20+
return v[0] == a && v[1] == b && v[2] == c && v[3] == d && v[4] == e && v[5] == f && v[6] == g && v[7] == h;
21+
}
22+
23+
constexpr bool match_m256d(__m256d v, double a, double b, double c, double d) {
24+
return v[0] == a && v[1] == b && v[2] == c && v[3] == d;
25+
}
26+
27+
constexpr bool match_m256i(__m256i v, unsigned long long a, unsigned long long b, unsigned long long c, unsigned long long d) {
28+
return v[0] == a && v[1] == b && v[2] == c && v[3] == d;
29+
}
30+
31+
constexpr bool match_m512(__m512 v, float a, float b, float c, float d, float e, float f, float g, float h, float i, float j, float k, float l, float m, float n, float o, float p) {
32+
return v[0] == a && v[1] == b && v[2] == c && v[3] == d && v[4] == e && v[5] == f && v[6] == g && v[7] == h && v[8] == i && v[9] == j && v[10] == k && v[11] == l && v[12] == m && v[13] == n && v[14] == o && v[15] == p;
33+
}
34+
35+
constexpr bool match_m512d(__m512d v, double a, double b, double c, double d, double e, double f, double g, double h) {
36+
return v[0] == a && v[1] == b && v[2] == c && v[3] == d && v[4] == e && v[5] == f && v[6] == g && v[7] == h;
37+
}
38+
39+
constexpr bool match_m512i(__m512i v, unsigned long long a, unsigned long long b, unsigned long long c, unsigned long long d, unsigned long long e, unsigned long long f, unsigned long long g, unsigned long long h) {
40+
return v[0] == a && v[1] == b && v[2] == c && v[3] == d && v[4] == e && v[5] == f && v[6] == g && v[7] == h;
1741
}
1842

1943
#define TEST_CONSTEXPR(...) static_assert(__VA_ARGS__)
@@ -22,4 +46,4 @@ constexpr bool match_m128i(__m128i v, unsigned long long x, unsigned long long y
2246

2347
#define TEST_CONSTEXPR(...)
2448

25-
#endif
49+
#endif

0 commit comments

Comments
 (0)