[clang] [Headers][X86] Add constexpr support for some AVX[512] intrinsics. [Headers][X86] Add constexpr support for some AVX512 masked extension/truncation intrinsics. (PR #161984)
via cfe-commits
cfe-commits at lists.llvm.org
Sat Oct 4 17:22:46 PDT 2025
https://github.com/sskzakaria updated https://github.com/llvm/llvm-project/pull/161984
>From 7a9afef469e5c4f7a7ba981380df8ecc6cff24bf Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Fri, 3 Oct 2025 23:11:12 -0400
Subject: [PATCH 01/13] _mm_cvtepi32_epi8
---
clang/lib/Headers/avx512vlintrin.h | 2 +-
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index 754f43ad88543..02f97ae27cc01 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7330,7 +7330,7 @@ _mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
__builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
_mm_cvtepi32_epi8 (__m128i __A)
{
return (__m128i)__builtin_shufflevector(
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index 5282c7ab06dea..f82adc0e3fcbc 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9272,6 +9272,8 @@ __m128i test_mm_cvtepi32_epi8(__m128i __A) {
return _mm_cvtepi32_epi8(__A);
}
+TEST_CONSTEXPR(match_v16qi(_mm_cvtepi32_epi8((__m128i)(__v4si){1, 2, 3, 4}), 1 ,2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+
__m128i test_mm_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
// CHECK-LABEL: test_mm_mask_cvtepi32_epi8
// CHECK: @llvm.x86.avx512.mask.pmov.db.128
>From 1c575c4593d31e7fbe61be3ad3e01fc424bd9f7f Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Fri, 3 Oct 2025 23:17:35 -0400
Subject: [PATCH 02/13] _mm_cvtepi32_epi16
---
clang/lib/Headers/avx512vlintrin.h | 2 +-
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index 02f97ae27cc01..794aefc4868af 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7390,7 +7390,7 @@ _mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
__builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
_mm_cvtepi32_epi16 (__m128i __A)
{
return (__m128i)__builtin_shufflevector(
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index f82adc0e3fcbc..50e9c265a9319 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9324,6 +9324,8 @@ __m128i test_mm_cvtepi32_epi16(__m128i __A) {
return _mm_cvtepi32_epi16(__A);
}
+TEST_CONSTEXPR(match_v8hi(_mm_cvtepi32_epi16((__m128i)(__v4si){1, 2, 3, 4}), 1 ,2, 3, 4, 0, 0, 0, 0));
+
__m128i test_mm_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
// CHECK-LABEL: test_mm_mask_cvtepi32_epi16
// CHECK: @llvm.x86.avx512.mask.pmov.dw.128
>From feaf88352b0fa489409084179b6024cc6c68c652 Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Fri, 3 Oct 2025 23:45:16 -0400
Subject: [PATCH 03/13] _mm_cvtepi64_epi8
---
clang/lib/Headers/avx512vlintrin.h | 5 ++---
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index 794aefc4868af..a4aed6f144c7c 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7391,8 +7391,7 @@ _mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
-_mm_cvtepi32_epi16 (__m128i __A)
-{
+_mm_cvtepi32_epi16(__m128i __A) {
return (__m128i)__builtin_shufflevector(
__builtin_convertvector((__v4si)__A, __v4hi), (__v4hi){0, 0, 0, 0}, 0, 1,
2, 3, 4, 5, 6, 7);
@@ -7446,7 +7445,7 @@ _mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
__builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
_mm_cvtepi64_epi8 (__m128i __A)
{
return (__m128i)__builtin_shufflevector(
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index 50e9c265a9319..adf69b596b6bd 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9375,6 +9375,8 @@ __m128i test_mm_cvtepi64_epi8(__m128i __A) {
return _mm_cvtepi64_epi8(__A);
}
+TEST_CONSTEXPR(match_v16qi(_mm_cvtepi64_epi8((__m128i)(__v2di){1, 2}), 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+
__m128i test_mm_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m128i __A) {
// CHECK-LABEL: test_mm_mask_cvtepi64_epi8
// CHECK: @llvm.x86.avx512.mask.pmov.qb.128
>From 1e6c613834f2be7b3e79dfd9f4c75199b950ed8a Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Fri, 3 Oct 2025 23:57:07 -0400
Subject: [PATCH 04/13] _mm_cvtepi64_epi16
---
clang/lib/Headers/avx512vlintrin.h | 5 ++---
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index a4aed6f144c7c..6d769e181c22e 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7446,8 +7446,7 @@ _mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
-_mm_cvtepi64_epi8 (__m128i __A)
-{
+_mm_cvtepi64_epi8(__m128i __A) {
return (__m128i)__builtin_shufflevector(
__builtin_convertvector((__v2di)__A, __v2qi), (__v2qi){0, 0}, 0, 1, 2, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
@@ -7559,7 +7558,7 @@ _mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
__builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
_mm_cvtepi64_epi16 (__m128i __A)
{
return (__m128i)__builtin_shufflevector(
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index adf69b596b6bd..da0c06acf72ee 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9478,6 +9478,8 @@ __m128i test_mm_cvtepi64_epi16(__m128i __A) {
return _mm_cvtepi64_epi16(__A);
}
+TEST_CONSTEXPR(match_v8hi(_mm_cvtepi64_epi16((__m128i)(__v2di){1, 2}),1, 2, 0, 0, 0, 0, 0, 0));
+
__m128i test_mm_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m128i __A) {
// CHECK-LABEL: test_mm_mask_cvtepi64_epi16
// CHECK: @llvm.x86.avx512.mask.pmov.qw.128
>From 2078b1dc9153b9306a174a973ea20a13f4c180ea Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 00:05:12 -0400
Subject: [PATCH 05/13] _mm_cvtepi64_epi32
---
clang/lib/Headers/avx512vlintrin.h | 8 +++-----
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index 6d769e181c22e..470a6c401c6eb 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7331,8 +7331,7 @@ _mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
-_mm_cvtepi32_epi8 (__m128i __A)
-{
+_mm_cvtepi32_epi8(__m128i __A) {
return (__m128i)__builtin_shufflevector(
__builtin_convertvector((__v4si)__A, __v4qi), (__v4qi){0, 0, 0, 0}, 0, 1,
2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7);
@@ -7502,7 +7501,7 @@ _mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
__builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS128
+static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
_mm_cvtepi64_epi32 (__m128i __A)
{
return (__m128i)__builtin_shufflevector(
@@ -7559,8 +7558,7 @@ _mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
-_mm_cvtepi64_epi16 (__m128i __A)
-{
+_mm_cvtepi64_epi16(__m128i __A) {
return (__m128i)__builtin_shufflevector(
__builtin_convertvector((__v2di)__A, __v2hi), (__v2hi){0, 0}, 0, 1, 2, 3,
3, 3, 3, 3);
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index da0c06acf72ee..a128116dc0740 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9427,6 +9427,8 @@ __m128i test_mm_cvtepi64_epi32(__m128i __A) {
return _mm_cvtepi64_epi32(__A);
}
+TEST_CONSTEXPR(match_v4si(_mm_cvtepi64_epi32((__m128i)(__v2di){1, 2}),1, 2, 0, 0));
+
__m128i test_mm_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m128i __A) {
// CHECK-LABEL: test_mm_mask_cvtepi64_epi32
// CHECK: @llvm.x86.avx512.mask.pmov.qd.128
>From 45d722c062c8c9369dcc94c8cfd4ebe3474873b2 Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 13:38:46 -0400
Subject: [PATCH 06/13] _mm256_cvtepi32_epi8
---
clang/lib/Headers/avx512vlintrin.h | 5 ++---
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index 470a6c401c6eb..c52841c3fb8ab 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7359,7 +7359,7 @@ _mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
__builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256
+static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
_mm256_cvtepi32_epi8 (__m256i __A)
{
return (__m128i)__builtin_shufflevector(
@@ -7502,8 +7502,7 @@ _mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS128_CONSTEXPR
-_mm_cvtepi64_epi32 (__m128i __A)
-{
+_mm_cvtepi64_epi32(__m128i __A) {
return (__m128i)__builtin_shufflevector(
__builtin_convertvector((__v2di)__A, __v2si), (__v2si){0, 0}, 0, 1, 2, 3);
}
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index a128116dc0740..775affcf1dc4d 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9299,6 +9299,8 @@ __m128i test_mm256_cvtepi32_epi8(__m256i __A) {
return _mm256_cvtepi32_epi8(__A);
}
+TEST_CONSTEXPR(match_v16qi(_mm256_cvtepi32_epi8((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), 1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0, 0, 0, 0 ,0));
+
__m128i test_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
// CHECK-LABEL: test_mm256_mask_cvtepi32_epi8
// CHECK: @llvm.x86.avx512.mask.pmov.db.256
>From 3f451881e862fb11882c86951b09bc2db1a7b585 Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 13:56:36 -0400
Subject: [PATCH 07/13] _mm256_cvtepi32_epi16
---
clang/lib/Headers/avx512vlintrin.h | 7 +++----
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index c52841c3fb8ab..ca60c38720248 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7360,15 +7360,14 @@ _mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
-_mm256_cvtepi32_epi8 (__m256i __A)
-{
+_mm256_cvtepi32_epi8(__m256i __A) {
return (__m128i)__builtin_shufflevector(
__builtin_convertvector((__v8si)__A, __v8qi),
(__v8qi){0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256
+static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
{
return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
@@ -7417,7 +7416,7 @@ _mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
__builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256
+static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
_mm256_cvtepi32_epi16 (__m256i __A)
{
return (__m128i)__builtin_convertvector((__v8si)__A, __v8hi);
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index 775affcf1dc4d..fd35b3051ed90 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9352,6 +9352,8 @@ __m128i test_mm256_cvtepi32_epi16(__m256i __A) {
return _mm256_cvtepi32_epi16(__A);
}
+TEST_CONSTEXPR(match_v8hi(_mm256_cvtepi32_epi16((__m256i)(__v8si){1, 2, 3, 4, 5, 6, 7, 8}), 1, 2, 3, 4, 5, 6, 7, 8));
+
__m128i test_mm256_mask_cvtepi32_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
// CHECK-LABEL: test_mm256_mask_cvtepi32_epi16
// CHECK: @llvm.x86.avx512.mask.pmov.dw.256
>From 204063dee1bedd356a2a2f9159ab7a8f8c8476a6 Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 14:16:00 -0400
Subject: [PATCH 08/13] _mm256_cvtepi64_epi8
---
clang/lib/Headers/avx512vlintrin.h | 8 +++-----
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index ca60c38720248..8bf67625b57e2 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7368,8 +7368,7 @@ _mm256_cvtepi32_epi8(__m256i __A) {
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
-_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
-{
+_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
(__v16qi) __O, __M);
}
@@ -7417,8 +7416,7 @@ _mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
-_mm256_cvtepi32_epi16 (__m256i __A)
-{
+_mm256_cvtepi32_epi16(__m256i __A) {
return (__m128i)__builtin_convertvector((__v8si)__A, __v8hi);
}
@@ -7471,7 +7469,7 @@ _mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
__builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256
+static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
_mm256_cvtepi64_epi8 (__m256i __A)
{
return (__m128i)__builtin_shufflevector(
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index fd35b3051ed90..cecc8a9c9b548 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9406,6 +9406,8 @@ __m128i test_mm256_cvtepi64_epi8(__m256i __A) {
return _mm256_cvtepi64_epi8(__A);
}
+TEST_CONSTEXPR(match_v16qi(_mm256_cvtepi64_epi8((__m256i)(__v4di){1, 2, 3, 4}), 1, 2, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+
__m128i test_mm256_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
// CHECK-LABEL: test_mm256_mask_cvtepi64_epi8
// CHECK: @llvm.x86.avx512.mask.pmov.qb.256
>From 031bf626bac5d7715603bd118932d8a7add9fb1f Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 14:21:10 -0400
Subject: [PATCH 09/13] _mm256_cvtepi64_epi16
---
clang/lib/Headers/avx512vlintrin.h | 5 ++---
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index 8bf67625b57e2..01b1c43441965 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7470,8 +7470,7 @@ _mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
-_mm256_cvtepi64_epi8 (__m256i __A)
-{
+_mm256_cvtepi64_epi8(__m256i __A) {
return (__m128i)__builtin_shufflevector(
__builtin_convertvector((__v4di)__A, __v4qi), (__v4qi){0, 0, 0, 0}, 0, 1,
2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7);
@@ -7582,7 +7581,7 @@ _mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
__builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256
+static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
_mm256_cvtepi64_epi16 (__m256i __A)
{
return (__m128i)__builtin_shufflevector(
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index cecc8a9c9b548..e95248d8c205a 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9513,6 +9513,8 @@ __m128i test_mm256_cvtepi64_epi16(__m256i __A) {
return _mm256_cvtepi64_epi16(__A);
}
+TEST_CONSTEXPR(match_v8hi(_mm256_cvtepi64_epi16((__m256i)(__v4di){1 ,2, 3, 4}),1, 2, 3, 4, 0, 0, 0, 0));
+
__m128i test_mm256_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m256i __A) {
// CHECK-LABEL: test_mm256_mask_cvtepi64_epi16
// CHECK: @llvm.x86.avx512.mask.pmov.qw.256
>From 994ce57fb67d575dac00f7ea473452acb352700c Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 14:30:01 -0400
Subject: [PATCH 10/13] _mm256_cvtepi64_epi32
---
clang/lib/Headers/avx512vlintrin.h | 7 +++----
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index 01b1c43441965..40b660954fb46 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7367,7 +7367,7 @@ _mm256_cvtepi32_epi8(__m256i __A) {
12, 13, 14, 15);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
+static __inline__ __m128i __DEFAULT_FN_ATTRS256
_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
(__v16qi) __O, __M);
@@ -7524,7 +7524,7 @@ _mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
__builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256
+static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
_mm256_cvtepi64_epi32 (__m256i __A)
{
return (__m128i)__builtin_convertvector((__v4di)__A, __v4si);
@@ -7582,8 +7582,7 @@ _mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
-_mm256_cvtepi64_epi16 (__m256i __A)
-{
+_mm256_cvtepi64_epi16(__m256i __A) {
return (__m128i)__builtin_shufflevector(
__builtin_convertvector((__v4di)__A, __v4hi), (__v4hi){0, 0, 0, 0}, 0, 1,
2, 3, 4, 5, 6, 7);
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index e95248d8c205a..782d772a17d58 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9459,6 +9459,8 @@ __m128i test_mm256_cvtepi64_epi32(__m256i __A) {
return _mm256_cvtepi64_epi32(__A);
}
+TEST_CONSTEXPR(match_v4si(_mm256_cvtepi64_epi32((__m256i)(__v4di){1 ,2 ,3 ,4}), 1, 2, 3, 4));
+
__m128i test_mm256_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
// CHECK-LABEL: test_mm256_mask_cvtepi64_epi32
// CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
>From a04b181d1a97d4723b619e982cc7965c13cd0820 Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 15:08:47 -0400
Subject: [PATCH 11/13] _mm256_mask_cvtepi64_epi32
---
clang/lib/Headers/avx512vlintrin.h | 5 ++---
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index 40b660954fb46..c289e92465a6b 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7525,12 +7525,11 @@ _mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
-_mm256_cvtepi64_epi32 (__m256i __A)
-{
+_mm256_cvtepi64_epi32(__m256i __A) {
return (__m128i)__builtin_convertvector((__v4di)__A, __v4si);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256
+static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
{
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index 782d772a17d58..0a8d9e726b9d3 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9468,6 +9468,8 @@ __m128i test_mm256_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
return _mm256_mask_cvtepi64_epi32(__O, __M, __A);
}
+TEST_CONSTEXPR(match_v4si(_mm256_mask_cvtepi64_epi32(_mm_set1_epi32(-777), 0xA,(__m256i)(__v4di){1, -2, 3, -4}), -777, -2, -777, -4));
+
__m128i test_mm256_maskz_cvtepi64_epi32(__mmask8 __M, __m256i __A) {
// CHECK-LABEL: test_mm256_maskz_cvtepi64_epi32
// CHECK: trunc <4 x i64> %{{.*}} to <4 x i32>
>From 45bcd641a07421015c5aa51426aa16fdaa2820f5 Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 15:19:03 -0400
Subject: [PATCH 12/13] _mm256_maskz_cvtepi64_epi32
---
clang/lib/Headers/avx512vlintrin.h | 5 ++---
clang/test/CodeGen/X86/avx512vl-builtins.c | 2 ++
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index c289e92465a6b..de08f4f237b72 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7530,14 +7530,13 @@ _mm256_cvtepi64_epi32(__m256i __A) {
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
-_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
-{
+_mm256_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
(__v4si)_mm256_cvtepi64_epi32(__A),
(__v4si)__O);
}
-static __inline__ __m128i __DEFAULT_FN_ATTRS256
+static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
{
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
diff --git a/clang/test/CodeGen/X86/avx512vl-builtins.c b/clang/test/CodeGen/X86/avx512vl-builtins.c
index 0a8d9e726b9d3..a6ffc1576ec3e 100644
--- a/clang/test/CodeGen/X86/avx512vl-builtins.c
+++ b/clang/test/CodeGen/X86/avx512vl-builtins.c
@@ -9477,6 +9477,8 @@ __m128i test_mm256_maskz_cvtepi64_epi32(__mmask8 __M, __m256i __A) {
return _mm256_maskz_cvtepi64_epi32(__M, __A);
}
+TEST_CONSTEXPR(match_v4si(_mm256_maskz_cvtepi64_epi32( 0xA,(__m256i)(__v4di){1, -2, 3, -4}),0 , -2, 0, -4));
+
void test_mm256_mask_cvtepi64_storeu_epi32(void * __P, __mmask8 __M, __m256i __A) {
// CHECK-LABEL: test_mm256_mask_cvtepi64_storeu_epi32
// CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.256
>From 0239b02325b644a3686a0c8add37d2d3a6941b0f Mon Sep 17 00:00:00 2001
From: sskzakaria <ssskzakaria at proton.me>
Date: Sat, 4 Oct 2025 16:00:21 -0400
Subject: [PATCH 13/13] minor change
---
clang/lib/Headers/avx512vlintrin.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Headers/avx512vlintrin.h b/clang/lib/Headers/avx512vlintrin.h
index de08f4f237b72..ae531f4615c76 100644
--- a/clang/lib/Headers/avx512vlintrin.h
+++ b/clang/lib/Headers/avx512vlintrin.h
@@ -7368,7 +7368,8 @@ _mm256_cvtepi32_epi8(__m256i __A) {
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256
-_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A) {
+_mm256_mask_cvtepi32_epi8(__m128i __O, __mmask8 __M, __m256i __A)
+{
return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
(__v16qi) __O, __M);
}
@@ -7537,8 +7538,7 @@ _mm256_mask_cvtepi64_epi32(__m128i __O, __mmask8 __M, __m256i __A) {
}
static __inline__ __m128i __DEFAULT_FN_ATTRS256_CONSTEXPR
-_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
-{
+_mm256_maskz_cvtepi64_epi32(__mmask8 __M, __m256i __A) {
return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
(__v4si)_mm256_cvtepi64_epi32(__A),
(__v4si)_mm_setzero_si128());
More information about the cfe-commits
mailing list