Skip to content

Commit 26a0962

Browse files
authored
[Headers][X86] Allow AVX512 _mm512_set* intrinsics to be used in constexpr (#152910)
This PR adds constexpr support for the following AVX512F/BW/FP16 set intrinsics: - _mm512_set4_pd - _mm512_set4_ps - _mm512_set4_epi32 - _mm512_set4_epi64 - _mm512_set_pd - _mm512_set_ps - _mm512_set_epi8 - _mm512_set_epi16 - _mm512_set_epi32 - _mm512_set_epi64 - _mm512_setr_pd - _mm512_setr_ps - _mm512_setr_epi32 - _mm512_setr_epi64 - _mm512_set1_ph - _mm512_set_ph - _mm512_setr_ph - _mm_setzero_ph - _mm256_setzero_ph - _mm512_setzero_ph Closes #152288. Part of #30794.
1 parent 372d86d commit 26a0962

File tree

5 files changed

+123
-60
lines changed

5 files changed

+123
-60
lines changed

clang/lib/Headers/avx512fintrin.h

Lines changed: 40 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -351,32 +351,27 @@ _mm512_broadcastss_ps(__m128 __A)
351351
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
352352
}
353353

354-
static __inline __m512i __DEFAULT_FN_ATTRS512
355-
_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
356-
{
354+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
355+
_mm512_set4_epi32(int __A, int __B, int __C, int __D) {
357356
return __extension__ (__m512i)(__v16si)
358357
{ __D, __C, __B, __A, __D, __C, __B, __A,
359358
__D, __C, __B, __A, __D, __C, __B, __A };
360359
}
361360

362-
static __inline __m512i __DEFAULT_FN_ATTRS512
363-
_mm512_set4_epi64 (long long __A, long long __B, long long __C,
364-
long long __D)
365-
{
361+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
362+
_mm512_set4_epi64(long long __A, long long __B, long long __C, long long __D) {
366363
return __extension__ (__m512i) (__v8di)
367364
{ __D, __C, __B, __A, __D, __C, __B, __A };
368365
}
369366

370-
static __inline __m512d __DEFAULT_FN_ATTRS512
371-
_mm512_set4_pd (double __A, double __B, double __C, double __D)
372-
{
367+
static __inline __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
368+
_mm512_set4_pd(double __A, double __B, double __C, double __D) {
373369
return __extension__ (__m512d)
374370
{ __D, __C, __B, __A, __D, __C, __B, __A };
375371
}
376372

377-
static __inline __m512 __DEFAULT_FN_ATTRS512
378-
_mm512_set4_ps (float __A, float __B, float __C, float __D)
379-
{
373+
static __inline __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
374+
_mm512_set4_ps(float __A, float __B, float __C, float __D) {
380375
return __extension__ (__m512)
381376
{ __D, __C, __B, __A, __D, __C, __B, __A,
382377
__D, __C, __B, __A, __D, __C, __B, __A };
@@ -9181,18 +9176,18 @@ _mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
91819176
(__v8di) __O);
91829177
}
91839178

9184-
static __inline __m512i __DEFAULT_FN_ATTRS512
9185-
_mm512_set_epi8 (char __e63, char __e62, char __e61, char __e60, char __e59,
9186-
char __e58, char __e57, char __e56, char __e55, char __e54, char __e53,
9187-
char __e52, char __e51, char __e50, char __e49, char __e48, char __e47,
9188-
char __e46, char __e45, char __e44, char __e43, char __e42, char __e41,
9189-
char __e40, char __e39, char __e38, char __e37, char __e36, char __e35,
9190-
char __e34, char __e33, char __e32, char __e31, char __e30, char __e29,
9191-
char __e28, char __e27, char __e26, char __e25, char __e24, char __e23,
9192-
char __e22, char __e21, char __e20, char __e19, char __e18, char __e17,
9193-
char __e16, char __e15, char __e14, char __e13, char __e12, char __e11,
9194-
char __e10, char __e9, char __e8, char __e7, char __e6, char __e5,
9195-
char __e4, char __e3, char __e2, char __e1, char __e0) {
9179+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_set_epi8(
9180+
char __e63, char __e62, char __e61, char __e60, char __e59, char __e58,
9181+
char __e57, char __e56, char __e55, char __e54, char __e53, char __e52,
9182+
char __e51, char __e50, char __e49, char __e48, char __e47, char __e46,
9183+
char __e45, char __e44, char __e43, char __e42, char __e41, char __e40,
9184+
char __e39, char __e38, char __e37, char __e36, char __e35, char __e34,
9185+
char __e33, char __e32, char __e31, char __e30, char __e29, char __e28,
9186+
char __e27, char __e26, char __e25, char __e24, char __e23, char __e22,
9187+
char __e21, char __e20, char __e19, char __e18, char __e17, char __e16,
9188+
char __e15, char __e14, char __e13, char __e12, char __e11, char __e10,
9189+
char __e9, char __e8, char __e7, char __e6, char __e5, char __e4, char __e3,
9190+
char __e2, char __e1, char __e0) {
91969191

91979192
return __extension__ (__m512i)(__v64qi)
91989193
{__e0, __e1, __e2, __e3, __e4, __e5, __e6, __e7,
@@ -9205,27 +9200,23 @@ _mm512_set_epi8 (char __e63, char __e62, char __e61, char __e60, char __e59,
92059200
__e56, __e57, __e58, __e59, __e60, __e61, __e62, __e63};
92069201
}
92079202

9208-
static __inline __m512i __DEFAULT_FN_ATTRS512
9209-
_mm512_set_epi16(short __e31, short __e30, short __e29, short __e28,
9210-
short __e27, short __e26, short __e25, short __e24, short __e23,
9211-
short __e22, short __e21, short __e20, short __e19, short __e18,
9212-
short __e17, short __e16, short __e15, short __e14, short __e13,
9213-
short __e12, short __e11, short __e10, short __e9, short __e8,
9214-
short __e7, short __e6, short __e5, short __e4, short __e3,
9215-
short __e2, short __e1, short __e0) {
9203+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_set_epi16(
9204+
short __e31, short __e30, short __e29, short __e28, short __e27,
9205+
short __e26, short __e25, short __e24, short __e23, short __e22,
9206+
short __e21, short __e20, short __e19, short __e18, short __e17,
9207+
short __e16, short __e15, short __e14, short __e13, short __e12,
9208+
short __e11, short __e10, short __e9, short __e8, short __e7, short __e6,
9209+
short __e5, short __e4, short __e3, short __e2, short __e1, short __e0) {
92169210
return __extension__ (__m512i)(__v32hi)
92179211
{__e0, __e1, __e2, __e3, __e4, __e5, __e6, __e7,
92189212
__e8, __e9, __e10, __e11, __e12, __e13, __e14, __e15,
92199213
__e16, __e17, __e18, __e19, __e20, __e21, __e22, __e23,
92209214
__e24, __e25, __e26, __e27, __e28, __e29, __e30, __e31 };
92219215
}
92229216

9223-
static __inline __m512i __DEFAULT_FN_ATTRS512
9224-
_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9225-
int __E, int __F, int __G, int __H,
9226-
int __I, int __J, int __K, int __L,
9227-
int __M, int __N, int __O, int __P)
9228-
{
9217+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_set_epi32(
9218+
int __A, int __B, int __C, int __D, int __E, int __F, int __G, int __H,
9219+
int __I, int __J, int __K, int __L, int __M, int __N, int __O, int __P) {
92299220
return __extension__ (__m512i)(__v16si)
92309221
{ __P, __O, __N, __M, __L, __K, __J, __I,
92319222
__H, __G, __F, __E, __D, __C, __B, __A };
@@ -9236,35 +9227,30 @@ _mm512_set_epi32 (int __A, int __B, int __C, int __D,
92369227
_mm512_set_epi32((e15),(e14),(e13),(e12),(e11),(e10),(e9),(e8),(e7),(e6), \
92379228
(e5),(e4),(e3),(e2),(e1),(e0))
92389229

9239-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
9240-
_mm512_set_epi64 (long long __A, long long __B, long long __C,
9241-
long long __D, long long __E, long long __F,
9242-
long long __G, long long __H)
9243-
{
9230+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
9231+
_mm512_set_epi64(long long __A, long long __B, long long __C, long long __D,
9232+
long long __E, long long __F, long long __G, long long __H) {
92449233
return __extension__ (__m512i) (__v8di)
92459234
{ __H, __G, __F, __E, __D, __C, __B, __A };
92469235
}
92479236

92489237
#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
92499238
_mm512_set_epi64((e7),(e6),(e5),(e4),(e3),(e2),(e1),(e0))
92509239

9251-
static __inline__ __m512d __DEFAULT_FN_ATTRS512
9252-
_mm512_set_pd (double __A, double __B, double __C, double __D,
9253-
double __E, double __F, double __G, double __H)
9254-
{
9240+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
9241+
_mm512_set_pd(double __A, double __B, double __C, double __D, double __E,
9242+
double __F, double __G, double __H) {
92559243
return __extension__ (__m512d)
92569244
{ __H, __G, __F, __E, __D, __C, __B, __A };
92579245
}
92589246

92599247
#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
92609248
_mm512_set_pd((e7),(e6),(e5),(e4),(e3),(e2),(e1),(e0))
92619249

9262-
static __inline__ __m512 __DEFAULT_FN_ATTRS512
9263-
_mm512_set_ps (float __A, float __B, float __C, float __D,
9264-
float __E, float __F, float __G, float __H,
9265-
float __I, float __J, float __K, float __L,
9266-
float __M, float __N, float __O, float __P)
9267-
{
9250+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
9251+
_mm512_set_ps(float __A, float __B, float __C, float __D, float __E, float __F,
9252+
float __G, float __H, float __I, float __J, float __K, float __L,
9253+
float __M, float __N, float __O, float __P) {
92689254
return __extension__ (__m512)
92699255
{ __P, __O, __N, __M, __L, __K, __J, __I,
92709256
__H, __G, __F, __E, __D, __C, __B, __A };

clang/lib/Headers/avx512fp16intrin.h

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,26 @@ typedef _Float16 __m512h_u __attribute__((__vector_size__(64), __aligned__(1)));
3333
__target__("avx512fp16,no-evex512"), \
3434
__min_vector_width__(128)))
3535

36+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
37+
#define __DEFAULT_FN_ATTRS512_CONSTEXPR __DEFAULT_FN_ATTRS512 constexpr
38+
#define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256 constexpr
39+
#define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128 constexpr
40+
#else
41+
#define __DEFAULT_FN_ATTRS512_CONSTEXPR __DEFAULT_FN_ATTRS512
42+
#define __DEFAULT_FN_ATTRS256_CONSTEXPR __DEFAULT_FN_ATTRS256
43+
#define __DEFAULT_FN_ATTRS128_CONSTEXPR __DEFAULT_FN_ATTRS128
44+
#endif
45+
3646
static __inline__ _Float16 __DEFAULT_FN_ATTRS512 _mm512_cvtsh_h(__m512h __a) {
3747
return __a[0];
3848
}
3949

40-
static __inline __m128h __DEFAULT_FN_ATTRS128 _mm_setzero_ph(void) {
50+
static __inline __m128h __DEFAULT_FN_ATTRS128_CONSTEXPR _mm_setzero_ph(void) {
4151
return (__m128h){0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4252
}
4353

44-
static __inline __m256h __DEFAULT_FN_ATTRS256 _mm256_setzero_ph(void) {
54+
static __inline __m256h __DEFAULT_FN_ATTRS256_CONSTEXPR
55+
_mm256_setzero_ph(void) {
4556
return (__m256h){0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
4657
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
4758
}
@@ -50,7 +61,8 @@ static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_undefined_ph(void) {
5061
return (__m256h)__builtin_ia32_undef256();
5162
}
5263

53-
static __inline __m512h __DEFAULT_FN_ATTRS512 _mm512_setzero_ph(void) {
64+
static __inline __m512h __DEFAULT_FN_ATTRS512_CONSTEXPR
65+
_mm512_setzero_ph(void) {
5466
return (__m512h){0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5567
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
5668
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0};
@@ -64,14 +76,15 @@ static __inline__ __m512h __DEFAULT_FN_ATTRS512 _mm512_undefined_ph(void) {
6476
return (__m512h)__builtin_ia32_undef512();
6577
}
6678

67-
static __inline __m512h __DEFAULT_FN_ATTRS512 _mm512_set1_ph(_Float16 __h) {
79+
static __inline __m512h __DEFAULT_FN_ATTRS512_CONSTEXPR
80+
_mm512_set1_ph(_Float16 __h) {
6881
return (__m512h)(__v32hf){__h, __h, __h, __h, __h, __h, __h, __h,
6982
__h, __h, __h, __h, __h, __h, __h, __h,
7083
__h, __h, __h, __h, __h, __h, __h, __h,
7184
__h, __h, __h, __h, __h, __h, __h, __h};
7285
}
7386

74-
static __inline __m512h __DEFAULT_FN_ATTRS512
87+
static __inline __m512h __DEFAULT_FN_ATTRS512_CONSTEXPR
7588
_mm512_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
7689
_Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8,
7790
_Float16 __h9, _Float16 __h10, _Float16 __h11, _Float16 __h12,
@@ -3348,6 +3361,9 @@ _mm512_permutexvar_ph(__m512i __A, __m512h __B) {
33483361
#undef __DEFAULT_FN_ATTRS128
33493362
#undef __DEFAULT_FN_ATTRS256
33503363
#undef __DEFAULT_FN_ATTRS512
3364+
#undef __DEFAULT_FN_ATTRS128_CONSTEXPR
3365+
#undef __DEFAULT_FN_ATTRS256_CONSTEXPR
3366+
#undef __DEFAULT_FN_ATTRS512_CONSTEXPR
33513367

33523368
#endif
33533369
#endif

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

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9136,27 +9136,31 @@ __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D)
91369136
// CHECK: insertelement <16 x i32> {{.*}}, i32 15
91379137
return _mm512_set4_epi32 (__A,__B,__C,__D);
91389138
}
9139+
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));
91399140

91409141
__m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long long __D)
91419142
{
91429143
// CHECK-LABEL: test_mm512_set4_epi64
91439144
// CHECK: insertelement <8 x i64> {{.*}}, i32 7
91449145
return _mm512_set4_epi64 (__A,__B,__C,__D);
91459146
}
9147+
TEST_CONSTEXPR(match_v8di(_mm512_set4_epi64(1, -3, 5, -7), -7, 5, -3, 1, -7, 5, -3, 1));
91469148

91479149
__m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D)
91489150
{
91499151
// CHECK-LABEL: test_mm512_set4_pd
91509152
// CHECK: insertelement <8 x double> {{.*}}, i32 7
91519153
return _mm512_set4_pd (__A,__B,__C,__D);
91529154
}
9155+
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));
91539156

91549157
__m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D)
91559158
{
91569159
// CHECK-LABEL: test_mm512_set4_ps
91579160
// CHECK: insertelement <16 x float> {{.*}}, i32 15
91589161
return _mm512_set4_ps (__A,__B,__C,__D);
91599162
}
9163+
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));
91609164

91619165
__m512i test_mm512_setr4_epi32(int e0, int e1, int e2, int e3)
91629166
{
@@ -10296,6 +10300,11 @@ __m512i test_mm512_set_epi8(char e63, char e62, char e61, char e60, char e59,
1029610300
e25, e24, e23, e22, e21, e20, e19, e18, e17, e16, e15, e14, e13, e12,
1029710301
e11, e10, e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
1029810302
}
10303+
TEST_CONSTEXPR(match_v64qi(_mm512_set_epi8(63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48,
10304+
47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32,
10305+
31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,
10306+
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,
10307+
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));
1029910308

1030010309
__m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
1030110310
short e27, short e26, short e25, short e24, short e23, short e22,
@@ -10339,8 +10348,9 @@ __m512i test_mm512_set_epi16(short e31, short e30, short e29, short e28,
1033910348
return _mm512_set_epi16(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22,
1034010349
e21, e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10, e9, e8, e7,
1034110350
e6, e5, e4, e3, e2, e1, e0);
10342-
1034310351
}
10352+
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));
10353+
1034410354
__m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D,
1034510355
int __E, int __F, int __G, int __H,
1034610356
int __I, int __J, int __K, int __L,
@@ -10366,6 +10376,7 @@ __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D,
1036610376
return _mm512_set_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
1036710377
__I, __J, __K, __L,__M, __N, __O, __P);
1036810378
}
10379+
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));
1036910380

1037010381
__m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D,
1037110382
int __E, int __F, int __G, int __H,
@@ -10408,6 +10419,7 @@ __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D,
1040810419
return _mm512_setr_epi32( __A, __B, __C, __D,__E, __F, __G, __H,
1040910420
__I, __J, __K, __L,__M, __N, __O, __P);
1041010421
}
10422+
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));
1041110423

1041210424
__m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
1041310425
{
@@ -10455,6 +10467,7 @@ __m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C,
1045510467
//CHECK: insertelement{{.*}}i32 7
1045610468
return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
1045710469
}
10470+
TEST_CONSTEXPR(match_v8di(_mm512_set_epi64(-15, 13, -11, 9, -7, 5, -3, 1), 1, -3, 5, -7, 9, -11, 13, -15));
1045810471

1045910472
__m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C,
1046010473
long long __D, long long __E, long long __F,
@@ -10479,6 +10492,7 @@ __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C,
1047910492
//CHECK: insertelement{{.*}}i32 7
1048010493
return _mm512_setr_epi64(__A, __B, __C, __D, __E, __F, __G, __H );
1048110494
}
10495+
TEST_CONSTEXPR(match_v8di(_mm512_setr_epi64(-1, 3, -5, 7, -9, 11, -13, 15), -1, 3, -5, 7, -9, 11, -13, 15));
1048210496

1048310497
__m512d test_mm512_set_pd (double __A, double __B, double __C, double __D,
1048410498
double __E, double __F, double __G, double __H)
@@ -10494,6 +10508,7 @@ __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D,
1049410508
//CHECK: insertelement{{.*}}i32 7
1049510509
return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H);
1049610510
}
10511+
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));
1049710512

1049810513
__m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D,
1049910514
double __E, double __F, double __G, double __H)
@@ -10517,6 +10532,7 @@ __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D,
1051710532
//CHECK: insertelement{{.*}}i32 7
1051810533
return _mm512_setr_pd( __A, __B, __C, __D, __E, __F, __G, __H);
1051910534
}
10535+
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));
1052010536

1052110537
__m512 test_mm512_set_ps (float __A, float __B, float __C, float __D,
1052210538
float __E, float __F, float __G, float __H,
@@ -10543,6 +10559,7 @@ __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D,
1054310559
return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H,
1054410560
__I, __J, __K, __L, __M, __N, __O, __P);
1054510561
}
10562+
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));
1054610563

1054710564
__m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1054810565
{
@@ -10621,6 +10638,7 @@ __m512 test_mm512_setr_ps (float __A, float __B, float __C, float __D,
1062110638
return _mm512_setr_ps( __A, __B, __C, __D, __E, __F, __G, __H,
1062210639
__I, __J, __K, __L, __M, __N, __O, __P);
1062310640
}
10641+
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));
1062410642

1062510643
int test_mm_cvtss_i32(__m128 A) {
1062610644
// CHECK-LABEL: test_mm_cvtss_i32

0 commit comments

Comments
 (0)