https://github.com/SadiinsoSnowfall created 
https://github.com/llvm/llvm-project/pull/156819

Change the definitions of `_mm_setr_ph`,  `_mm256_setr_ph` and  
`_mm512_setr_ph` to be functions instead of macros. 
Resolves #156709

Pending questions :
- Should the `_mm_setr_ph` and `_mm256_setr_ph` functions be marked as 
`__DEFAULT_FN_A TTRS128_CONSTEXPR` and `__DEFAULT_FN_ATTRS256_CONSTEXPR` 
respectively ? I marked `_mm512_setr_ph`  as `__DEFAULT_FN_ATTRS512_CONSTEXPR` 
because this attribute list is also applied to `_mm512_set_ph`. This is not the 
case for `_mm_set_ph` and `_mm256_set_ph`.
- What about the other `setr` intrinsics such as `_mm512_setr_ps`, 
`_mm512_setr_pd`, `_mm512_setr_epi64`, etc... Should they be made into real 
functions too ? If so, should it be done in this PR ?

>From 97acc94c32ee33b5c9724acfb2d9dc6703894b05 Mon Sep 17 00:00:00 2001
From: SadiinsoSnowfall <sadii...@gmail.com>
Date: Thu, 4 Sep 2025 09:28:09 +0200
Subject: [PATCH] made the xxx_setr_ph macros into functions

---
 clang/lib/Headers/avx512fp16intrin.h   | 21 ++++++++++++++-------
 clang/lib/Headers/avx512vlfp16intrin.h | 19 +++++++++++++------
 2 files changed, 27 insertions(+), 13 deletions(-)

diff --git a/clang/lib/Headers/avx512fp16intrin.h 
b/clang/lib/Headers/avx512fp16intrin.h
index 25f65aee7ff11..f501974d34c97 100644
--- a/clang/lib/Headers/avx512fp16intrin.h
+++ b/clang/lib/Headers/avx512fp16intrin.h
@@ -100,13 +100,20 @@ _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 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
+               _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8,
+               _Float16 __h9, _Float16 __h10, _Float16 __h11, _Float16 __h12,
+               _Float16 __h13, _Float16 __h14, _Float16 __h15, _Float16 __h16,
+               _Float16 __h17, _Float16 __h18, _Float16 __h19, _Float16 __h20,
+               _Float16 __h21, _Float16 __h22, _Float16 __h23, _Float16 __h24,
+               _Float16 __h25, _Float16 __h26, _Float16 __h27, _Float16 __h28,
+               _Float16 __h29, _Float16 __h30, _Float16 __h31, _Float16 __h32) 
{
+  return _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
 _mm512_set1_pch(_Float16 _Complex __h) {
diff --git a/clang/lib/Headers/avx512vlfp16intrin.h 
b/clang/lib/Headers/avx512vlfp16intrin.h
index 98ad9b54eef39..a74e43170fc33 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 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
+            _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8) {
+  return _mm_set_ph(__h8, __h7, __h6, __h5, __h4, __h3, __h2, __h1);
+}
 
-#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 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
+               _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8,
+               _Float16 __h9, _Float16 __h10, _Float16 __h11, _Float16 __h12,
+               _Float16 __h13, _Float16 __h14, _Float16 __h15, _Float16 __h16) 
{
+  return _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_add_ph(__m256h __A,
                                                               __m256h __B) {

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to