[clang] [X86] make the set/r/4 intrinsics macros into functions (PR #156819)
Simon Pilgrim via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 4 06:15:00 PDT 2025
https://github.com/RKSimon updated https://github.com/llvm/llvm-project/pull/156819
>From 1e8482846c5d623192bb5ce8e21dbc4eeb3fd591 Mon Sep 17 00:00:00 2001
From: SadiinsoSnowfall <sadiinso at gmail.com>
Date: Thu, 4 Sep 2025 09:28:09 +0200
Subject: [PATCH] made the AVX512 _set macros into functions
---
clang/lib/Headers/avx512fintrin.h | 58 +++++++++++++++++---------
clang/lib/Headers/avx512fp16intrin.h | 19 +++++----
clang/lib/Headers/avx512vlfp16intrin.h | 19 ++++++---
3 files changed, 64 insertions(+), 32 deletions(-)
diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h
index 9c0fa9719fb62..f8c48152171cb 100644
--- a/clang/lib/Headers/avx512fintrin.h
+++ b/clang/lib/Headers/avx512fintrin.h
@@ -374,17 +374,25 @@ _mm512_set4_ps(float __A, float __B, float __C, float __D) {
__D, __C, __B, __A, __D, __C, __B, __A };
}
-#define _mm512_setr4_epi32(e0,e1,e2,e3) \
- _mm512_set4_epi32((e3),(e2),(e1),(e0))
+static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_setr4_epi32(int e0, int e1, int e2, int e3) {
+ return _mm512_set4_epi32(e3, e2, e1, e0);
+}
-#define _mm512_setr4_epi64(e0,e1,e2,e3) \
- _mm512_set4_epi64((e3),(e2),(e1),(e0))
+static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_setr4_epi64(long long e0, long long e1, long long e2, long long e3) {
+ return _mm512_set4_epi64(e3, e2, e1, e0);
+}
-#define _mm512_setr4_pd(e0,e1,e2,e3) \
- _mm512_set4_pd((e3),(e2),(e1),(e0))
+static __inline __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_setr4_pd(double e0, double e1, double e2, double e3) {
+ return _mm512_set4_pd(e3, e2, e1, e0);
+}
-#define _mm512_setr4_ps(e0,e1,e2,e3) \
- _mm512_set4_ps((e3),(e2),(e1),(e0))
+static __inline __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_setr4_ps(float e0, float e1, float e2, float e3) {
+ return _mm512_set4_ps(e3, e2, e1, e0);
+}
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
_mm512_broadcastsd_pd(__m128d __A) {
@@ -9006,10 +9014,12 @@ static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_set_epi32(
__H, __G, __F, __E, __D, __C, __B, __A };
}
-#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
- e8,e9,e10,e11,e12,e13,e14,e15) \
- _mm512_set_epi32((e15),(e14),(e13),(e12),(e11),(e10),(e9),(e8),(e7),(e6), \
- (e5),(e4),(e3),(e2),(e1),(e0))
+static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_setr_epi32(
+ int e0, int e1, int e2, int e3, int e4, int e5, int e6, int e7, int e8,
+ int e9, int e10, int e11, int e12, int e13, int e14, int e15) {
+ return _mm512_set_epi32(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4,
+ e3, e2, e1, e0);
+}
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
_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,
{ __H, __G, __F, __E, __D, __C, __B, __A };
}
-#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
- _mm512_set_epi64((e7),(e6),(e5),(e4),(e3),(e2),(e1),(e0))
+static __inline __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_setr_epi64(long long e0, long long e1, long long e2, long long e3,
+ long long e4, long long e5, long long e6, long long e7) {
+ return _mm512_set_epi64(e7, e6, e5, e4, e3, e2, e1, e0);
+}
static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
_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,
{ __H, __G, __F, __E, __D, __C, __B, __A };
}
-#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
- _mm512_set_pd((e7),(e6),(e5),(e4),(e3),(e2),(e1),(e0))
+static __inline__ __m512d __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_setr_pd(double e0, double e1, double e2, double e3, double e4, double e5,
+ double e6, double e7) {
+ return _mm512_set_pd(e7, e6, e5, e4, e3, e2, e1, e0);
+}
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
_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,
__H, __G, __F, __E, __D, __C, __B, __A };
}
-#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
- _mm512_set_ps((e15),(e14),(e13),(e12),(e11),(e10),(e9),(e8),(e7),(e6),(e5), \
- (e4),(e3),(e2),(e1),(e0))
+static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_setr_ps(float e0, float e1, float e2, float e3, float e4, float e5,
+ float e6, float e7, float e8, float e9, float e10, float e11,
+ float e12, float e13, float e14, float e15) {
+ return _mm512_set_ps(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3,
+ e2, e1, e0);
+}
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
_mm512_abs_ps(__m512 __A) {
diff --git a/clang/lib/Headers/avx512fp16intrin.h b/clang/lib/Headers/avx512fp16intrin.h
index 25f65aee7ff11..5a5d21d2dc790 100644
--- a/clang/lib/Headers/avx512fp16intrin.h
+++ b/clang/lib/Headers/avx512fp16intrin.h
@@ -100,13 +100,18 @@ _mm512_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
__h4, __h3, __h2, __h1};
}
-#define _mm512_setr_ph(h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, \
- h14, h15, h16, h17, h18, h19, h20, h21, h22, h23, h24, \
- h25, h26, h27, h28, h29, h30, h31, h32) \
- _mm512_set_ph((h32), (h31), (h30), (h29), (h28), (h27), (h26), (h25), (h24), \
- (h23), (h22), (h21), (h20), (h19), (h18), (h17), (h16), (h15), \
- (h14), (h13), (h12), (h11), (h10), (h9), (h8), (h7), (h6), \
- (h5), (h4), (h3), (h2), (h1))
+static __inline__ __m512h __DEFAULT_FN_ATTRS512_CONSTEXPR _mm512_setr_ph(
+ _Float16 e0, _Float16 e1, _Float16 e2, _Float16 e3, _Float16 e4,
+ _Float16 e5, _Float16 e6, _Float16 e7, _Float16 e8, _Float16 e9,
+ _Float16 e10, _Float16 e11, _Float16 e12, _Float16 e13, _Float16 e14,
+ _Float16 e15, _Float16 e16, _Float16 e17, _Float16 e18, _Float16 e19,
+ _Float16 e20, _Float16 e21, _Float16 e22, _Float16 e23, _Float16 e24,
+ _Float16 e25, _Float16 e26, _Float16 e27, _Float16 e28, _Float16 e29,
+ _Float16 e30, _Float16 e31) {
+ return _mm512_set_ph(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);
+}
static __inline __m512h __DEFAULT_FN_ATTRS512
_mm512_set1_pch(_Float16 _Complex __h) {
diff --git a/clang/lib/Headers/avx512vlfp16intrin.h b/clang/lib/Headers/avx512vlfp16intrin.h
index 98ad9b54eef39..3b10050a01f66 100644
--- a/clang/lib/Headers/avx512vlfp16intrin.h
+++ b/clang/lib/Headers/avx512vlfp16intrin.h
@@ -81,13 +81,20 @@ _mm256_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
__h4, __h3, __h2, __h1};
}
-#define _mm_setr_ph(h1, h2, h3, h4, h5, h6, h7, h8) \
- _mm_set_ph((h8), (h7), (h6), (h5), (h4), (h3), (h2), (h1))
+static __inline__ __m128h __DEFAULT_FN_ATTRS128
+_mm_setr_ph(_Float16 e0, _Float16 e1, _Float16 e2, _Float16 e3, _Float16 e4,
+ _Float16 e5, _Float16 e6, _Float16 e7) {
+ return _mm_set_ph(e7, e6, e5, e4, e3, e2, e1, e0);
+}
-#define _mm256_setr_ph(h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, \
- h14, h15, h16) \
- _mm256_set_ph((h16), (h15), (h14), (h13), (h12), (h11), (h10), (h9), (h8), \
- (h7), (h6), (h5), (h4), (h3), (h2), (h1))
+static __inline__ __m256h __DEFAULT_FN_ATTRS256
+_mm256_setr_ph(_Float16 e0, _Float16 e1, _Float16 e2, _Float16 e3, _Float16 e4,
+ _Float16 e5, _Float16 e6, _Float16 e7, _Float16 e8, _Float16 e9,
+ _Float16 e10, _Float16 e11, _Float16 e12, _Float16 e13,
+ _Float16 e14, _Float16 e15) {
+ return _mm256_set_ph(e15, e14, e13, e12, e11, e10, e9, e8, e7, e6, e5, e4, e3,
+ e2, e1, e0);
+}
static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_add_ph(__m256h __A,
__m256h __B) {
More information about the cfe-commits
mailing list