https://github.com/markbhasawut created 
https://github.com/llvm/llvm-project/pull/156722

This PR fixes #155411, add constexpr support for the AVX512F mullox intrinsics:

  - _mm512_mullox_epi64
  - _mm512_mask_mullox_epi64

Closes #156632.

>From c6d19e89ea5c4878cb04dd30bc410237a53646eb Mon Sep 17 00:00:00 2001
From: Bhasawut Singhaphan <bhasa...@gmail.com>
Date: Thu, 4 Sep 2025 00:32:02 +0700
Subject: [PATCH] [Headers][X86] Allow AVX512F mullox intrinsics to be used in
 constexpr

This PR fixes #155411, add constexpr support for the AVX512F mullox intrinsics:

  - _mm512_mullox_epi64
  - _mm512_mask_mullox_epi64

Closes #156632.
---
 clang/lib/Headers/avx512fintrin.h         | 6 +++---
 clang/test/CodeGen/X86/avx512f-builtins.c | 2 ++
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Headers/avx512fintrin.h 
b/clang/lib/Headers/avx512fintrin.h
index 66967321044e8..9c0fa9719fb62 100644
--- a/clang/lib/Headers/avx512fintrin.h
+++ b/clang/lib/Headers/avx512fintrin.h
@@ -1463,12 +1463,12 @@ _mm512_mask_mullo_epi32(__m512i __W, __mmask16 __M, 
__m512i __A, __m512i __B) {
                                              (__v16si)__W);
 }
 
-static __inline__ __m512i __DEFAULT_FN_ATTRS512
-_mm512_mullox_epi64 (__m512i __A, __m512i __B) {
+static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
+_mm512_mullox_epi64(__m512i __A, __m512i __B) {
   return (__m512i) ((__v8du) __A * (__v8du) __B);
 }
 
-static __inline__ __m512i __DEFAULT_FN_ATTRS512
+static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
 _mm512_mask_mullox_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
   return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
                                              (__v8di)_mm512_mullox_epi64(__A, 
__B),
diff --git a/clang/test/CodeGen/X86/avx512f-builtins.c 
b/clang/test/CodeGen/X86/avx512f-builtins.c
index 39a212c80b70b..ce4887d70d8dc 100644
--- a/clang/test/CodeGen/X86/avx512f-builtins.c
+++ b/clang/test/CodeGen/X86/avx512f-builtins.c
@@ -3171,6 +3171,7 @@ __m512i test_mm512_mullox_epi64 (__m512i __A, __m512i 
__B) {
   // CHECK: mul <8 x i64>
   return (__m512i) _mm512_mullox_epi64(__A, __B);
 }
+TEST_CONSTEXPR(match_m512i(_mm512_mullox_epi64((__m512i)(__v8du){1, 2, 3, 4, 
5, 6, 7, 8}, (__m512i)(__v8du){2, 3, 4, 5, 6, 7, 8, 9}), 2, 6, 12, 20, 30, 42, 
56, 72));
 
 __m512i test_mm512_mask_mullox_epi64 (__m512i __W, __mmask8 __U, __m512i __A, 
__m512i __B) {
   // CHECK-LABEL: test_mm512_mask_mullox_epi64
@@ -3178,6 +3179,7 @@ __m512i test_mm512_mask_mullox_epi64 (__m512i __W, 
__mmask8 __U, __m512i __A, __
   // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
   return (__m512i) _mm512_mask_mullox_epi64(__W, __U, __A, __B);
 }
+TEST_CONSTEXPR(match_v8di(_mm512_mask_mullox_epi64((__m512i)(__v8di){+1, -2, 
+3, -4, +5, -6, +7, -8}, (__m512i)(__v8di){-2, +3, +4, +5, -6, +7, +8, +9}), 
-2, -6, 12, -20, -30, -42, 56, -72));
 
 __m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) {
   // CHECK-LABEL: test_mm512_add_round_pd

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

Reply via email to