Skip to content

Commit c6b6d85

Browse files
[X86] make the set/r/4 intrinsics macros into functions (#156819)
Change the definitions of `_mm_setr_ph`, `_mm256_setr_ph` and `_mm512_setr_ph` to be functions instead of macros. Resolves #156709
1 parent 5520e16 commit c6b6d85

File tree

3 files changed

+64
-32
lines changed

3 files changed

+64
-32
lines changed

clang/lib/Headers/avx512fintrin.h

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -374,17 +374,25 @@ _mm512_set4_ps(float __A, float __B, float __C, float __D) {
374374
__D, __C, __B, __A, __D, __C, __B, __A };
375375
}
376376

377-
#define _mm512_setr4_epi32(e0,e1,e2,e3) \
378-
_mm512_set4_epi32((e3),(e2),(e1),(e0))
377+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
378+
_mm512_setr4_epi32(int e0, int e1, int e2, int e3) {
379+
return _mm512_set4_epi32(e3, e2, e1, e0);
380+
}
379381

380-
#define _mm512_setr4_epi64(e0,e1,e2,e3) \
381-
_mm512_set4_epi64((e3),(e2),(e1),(e0))
382+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
383+
_mm512_setr4_epi64(long long e0, long long e1, long long e2, long long e3) {
384+
return _mm512_set4_epi64(e3, e2, e1, e0);
385+
}
382386

383-
#define _mm512_setr4_pd(e0,e1,e2,e3) \
384-
_mm512_set4_pd((e3),(e2),(e1),(e0))
387+
static __inline __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
388+
_mm512_setr4_pd(double e0, double e1, double e2, double e3) {
389+
return _mm512_set4_pd(e3, e2, e1, e0);
390+
}
385391

386-
#define _mm512_setr4_ps(e0,e1,e2,e3) \
387-
_mm512_set4_ps((e3),(e2),(e1),(e0))
392+
static __inline __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
393+
_mm512_setr4_ps(float e0, float e1, float e2, float e3) {
394+
return _mm512_set4_ps(e3, e2, e1, e0);
395+
}
388396

389397
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
390398
_mm512_broadcastsd_pd(__m128d __A) {
@@ -9006,10 +9014,12 @@ static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_set_epi32(
90069014
__H, __G, __F, __E, __D, __C, __B, __A };
90079015
}
90089016

9009-
#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9010-
e8,e9,e10,e11,e12,e13,e14,e15) \
9011-
_mm512_set_epi32((e15),(e14),(e13),(e12),(e11),(e10),(e9),(e8),(e7),(e6), \
9012-
(e5),(e4),(e3),(e2),(e1),(e0))
9017+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_setr_epi32(
9018+
int e0, int e1, int e2, int e3, int e4, int e5, int e6, int e7, int e8,
9019+
int e9, int e10, int e11, int e12, int e13, int e14, int e15) {
9020+
return _mm512_set_epi32(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4,
9021+
e3, e2, e1, e0);
9022+
}
90139023

90149024
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
90159025
_mm512_set_epi64(long long __A, long long __B, long long __C, long long __D,
@@ -9018,8 +9028,11 @@ _mm512_set_epi64(long long __A, long long __B, long long __C, long long __D,
90189028
{ __H, __G, __F, __E, __D, __C, __B, __A };
90199029
}
90209030

9021-
#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9022-
_mm512_set_epi64((e7),(e6),(e5),(e4),(e3),(e2),(e1),(e0))
9031+
static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
9032+
_mm512_setr_epi64(long long e0, long long e1, long long e2, long long e3,
9033+
long long e4, long long e5, long long e6, long long e7) {
9034+
return _mm512_set_epi64(e7, e6, e5, e4, e3, e2, e1, e0);
9035+
}
90239036

90249037
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
90259038
_mm512_set_pd(double __A, double __B, double __C, double __D, double __E,
@@ -9028,8 +9041,11 @@ _mm512_set_pd(double __A, double __B, double __C, double __D, double __E,
90289041
{ __H, __G, __F, __E, __D, __C, __B, __A };
90299042
}
90309043

9031-
#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9032-
_mm512_set_pd((e7),(e6),(e5),(e4),(e3),(e2),(e1),(e0))
9044+
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
9045+
_mm512_setr_pd(double e0, double e1, double e2, double e3, double e4, double e5,
9046+
double e6, double e7) {
9047+
return _mm512_set_pd(e7, e6, e5, e4, e3, e2, e1, e0);
9048+
}
90339049

90349050
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
90359051
_mm512_set_ps(float __A, float __B, float __C, float __D, float __E, float __F,
@@ -9040,9 +9056,13 @@ _mm512_set_ps(float __A, float __B, float __C, float __D, float __E, float __F,
90409056
__H, __G, __F, __E, __D, __C, __B, __A };
90419057
}
90429058

9043-
#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9044-
_mm512_set_ps((e15),(e14),(e13),(e12),(e11),(e10),(e9),(e8),(e7),(e6),(e5), \
9045-
(e4),(e3),(e2),(e1),(e0))
9059+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
9060+
_mm512_setr_ps(float e0, float e1, float e2, float e3, float e4, float e5,
9061+
float e6, float e7, float e8, float e9, float e10, float e11,
9062+
float e12, float e13, float e14, float e15) {
9063+
return _mm512_set_ps(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3,
9064+
e2, e1, e0);
9065+
}
90469066

90479067
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
90489068
_mm512_abs_ps(__m512 __A) {

clang/lib/Headers/avx512fp16intrin.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,18 @@ _mm512_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
100100
__h4, __h3, __h2, __h1};
101101
}
102102

103-
#define _mm512_setr_ph(h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, \
104-
h14, h15, h16, h17, h18, h19, h20, h21, h22, h23, h24, \
105-
h25, h26, h27, h28, h29, h30, h31, h32) \
106-
_mm512_set_ph((h32), (h31), (h30), (h29), (h28), (h27), (h26), (h25), (h24), \
107-
(h23), (h22), (h21), (h20), (h19), (h18), (h17), (h16), (h15), \
108-
(h14), (h13), (h12), (h11), (h10), (h9), (h8), (h7), (h6), \
109-
(h5), (h4), (h3), (h2), (h1))
103+
static __inline__ __m512h __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_setr_ph(
104+
_Float16 e0, _Float16 e1, _Float16 e2, _Float16 e3, _Float16 e4,
105+
_Float16 e5, _Float16 e6, _Float16 e7, _Float16 e8, _Float16 e9,
106+
_Float16 e10, _Float16 e11, _Float16 e12, _Float16 e13, _Float16 e14,
107+
_Float16 e15, _Float16 e16, _Float16 e17, _Float16 e18, _Float16 e19,
108+
_Float16 e20, _Float16 e21, _Float16 e22, _Float16 e23, _Float16 e24,
109+
_Float16 e25, _Float16 e26, _Float16 e27, _Float16 e28, _Float16 e29,
110+
_Float16 e30, _Float16 e31) {
111+
return _mm512_set_ph(e31, e30, e29, e28, e27, e26, e25, e24, e23, e22, e21,
112+
e20, e19, e18, e17, e16, e15, e14, e13, e12, e11, e10,
113+
e9, e8, e7, e6, e5, e4, e3, e2, e1, e0);
114+
}
110115

111116
static __inline __m512h __DEFAULT_FN_ATTRS512
112117
_mm512_set1_pch(_Float16 _Complex __h) {

clang/lib/Headers/avx512vlfp16intrin.h

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,20 @@ _mm256_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
8181
__h4, __h3, __h2, __h1};
8282
}
8383

84-
#define _mm_setr_ph(h1, h2, h3, h4, h5, h6, h7, h8) \
85-
_mm_set_ph((h8), (h7), (h6), (h5), (h4), (h3), (h2), (h1))
84+
static __inline__ __m128h __DEFAULT_FN_ATTRS128
85+
_mm_setr_ph(_Float16 e0, _Float16 e1, _Float16 e2, _Float16 e3, _Float16 e4,
86+
_Float16 e5, _Float16 e6, _Float16 e7) {
87+
return _mm_set_ph(e7, e6, e5, e4, e3, e2, e1, e0);
88+
}
8689

87-
#define _mm256_setr_ph(h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, \
88-
h14, h15, h16) \
89-
_mm256_set_ph((h16), (h15), (h14), (h13), (h12), (h11), (h10), (h9), (h8), \
90-
(h7), (h6), (h5), (h4), (h3), (h2), (h1))
90+
static __inline__ __m256h __DEFAULT_FN_ATTRS256
91+
_mm256_setr_ph(_Float16 e0, _Float16 e1, _Float16 e2, _Float16 e3, _Float16 e4,
92+
_Float16 e5, _Float16 e6, _Float16 e7, _Float16 e8, _Float16 e9,
93+
_Float16 e10, _Float16 e11, _Float16 e12, _Float16 e13,
94+
_Float16 e14, _Float16 e15) {
95+
return _mm256_set_ph(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3,
96+
e2, e1, e0);
97+
}
9198

9299
static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_add_ph(__m256h __A,
93100
__m256h __B) {

0 commit comments

Comments
 (0)