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