Skip to content

Commit ab6be80

Browse files
authored
[Headers][X86] Allow AVX512F mullox intrinsics to be used in constexpr (#156722)
This PR adds constexpr support for the following AVX512F mullox intrinsics: - _mm512_mullox_epi64 - _mm512_mask_mullox_epi64 Closes #156632 Fixes #155411
1 parent 6a916f4 commit ab6be80

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

clang/lib/Headers/avx512fintrin.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,12 +1463,12 @@ _mm512_mask_mullo_epi32(__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) {
14631463
(__v16si)__W);
14641464
}
14651465

1466-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1467-
_mm512_mullox_epi64 (__m512i __A, __m512i __B) {
1466+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
1467+
_mm512_mullox_epi64(__m512i __A, __m512i __B) {
14681468
return (__m512i) ((__v8du) __A * (__v8du) __B);
14691469
}
14701470

1471-
static __inline__ __m512i __DEFAULT_FN_ATTRS512
1471+
static __inline__ __m512i __DEFAULT_FN_ATTRS512_CONSTEXPR
14721472
_mm512_mask_mullox_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
14731473
return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
14741474
(__v8di)_mm512_mullox_epi64(__A, __B),

clang/test/CodeGen/X86/avx512f-builtins.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3171,13 +3171,15 @@ __m512i test_mm512_mullox_epi64 (__m512i __A, __m512i __B) {
31713171
// CHECK: mul <8 x i64>
31723172
return (__m512i) _mm512_mullox_epi64(__A, __B);
31733173
}
3174+
TEST_CONSTEXPR(match_v8di(_mm512_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));
31743175

31753176
__m512i test_mm512_mask_mullox_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
31763177
// CHECK-LABEL: test_mm512_mask_mullox_epi64
31773178
// CHECK: mul <8 x i64> %{{.*}}, %{{.*}}
31783179
// CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}}
31793180
return (__m512i) _mm512_mask_mullox_epi64(__W, __U, __A, __B);
31803181
}
3182+
TEST_CONSTEXPR(match_v8di(_mm512_mask_mullox_epi64((__m512i)(__v8di){-100, +200, -300, +400, -500, +600, -700, +800}, 0x00FF, (__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));
31813183

31823184
__m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) {
31833185
// CHECK-LABEL: test_mm512_add_round_pd

0 commit comments

Comments
 (0)