llvm/llvm-project

[Headers][X86] Allow AVX512 masked bitlogic intrinsics to be used in constexpr

Open

#160.556 aberto em 24 de set. de 2025

Ver no GitHub
 (7 comments) (0 reactions) (1 assignee)C++ (10.782 forks)batch import
backend:X86clang:headersconstexprgood first issue

Métricas do repositório

Stars
 (26.378 stars)
Métricas de merge de PR
 (Mesclagem média 1d 2h) (1.000 fundiu PRs em 30d)

Description

These appear to be missed in earlier patches like #152313 as we didn't have mask/maskz constexpr support back then

avx512fintrin.h

_mm512_maskz_and_epi32 / _mm512_maskz_and_epi64
_mm512_mask_andnot_epi32 / _mm512_mask_andnot_epi64
_mm512_maskz_andnot_epi32 / _mm512_maskz_andnot_epi64
_mm512_mask_or_epi32 / _mm512_mask_or_epi64
_mm512_maskz_or_epi32 / _mm512_maskz_or_epi64
_mm512_mask_xor_epi32 / _mm512_mask_xor_epi64
_mm512_maskz_xor_epi32 / _mm512_maskz_xor_epi64

avx512vlintrin.h

_mm_mask_and_epi32 / _mm256_mask_and_epi32
_mm_maskz_and_epi32 / _mm256_maskz_and_epi32
_mm_mask_andnot_epi32 / _mm256_mask_andnot_epi32
_mm_maskz_andnot_epi32 / _mm256_maskz_andnot_epi32
_mm_mask_or_epi32 / _mm256_mask_or_epi32
_mm_maskz_or_epi32 / _mm256_maskz_or_epi32
_mm_mask_xor_epi32 / _mm256_mask_xor_epi32
_mm_maskz_xor_epi32 / _mm256_maskz_xor_epi32

_mm_mask_and_epi64 / _mm256_mask_and_epi64
_mm_maskz_and_epi64 / _mm256_maskz_and_epi64
_mm_mask_andnot_epi64 / _mm256_mask_andnot_epi64
_mm_maskz_andnot_epi64 / _mm256_maskz_andnot_epi64
_mm_mask_or_epi64 / _mm256_mask_or_epi64
_mm_maskz_or_epi64 / _mm256_maskz_or_epi64
_mm_mask_xor_epi64 / _mm256_mask_xor_epi64
_mm_maskz_xor_epi64 / _mm256_maskz_xor_epi64

avx512dqintrin.h

_mm512_maskz_and_ps / _mm512_maskz_and_pd
_mm512_mask_andnot_ps / _mm512_mask_andnot_pd
_mm512_maskz_andnot_ps / _mm512_maskz_andnot_pd
_mm512_mask_or_ps / _mm512_mask_or_pd
_mm512_maskz_or_ps / _mm512_maskz_or_pd
_mm512_mask_xor_ps / _mm512_mask_xor_pd
_mm512_maskz_xor_ps / _mm512_maskz_xor_pd

avx512vldqintrin.h

_mm_mask_and_ps / _mm256_mask_and_ps
_mm_maskz_and_ps / _mm256_maskz_and_ps
_mm_mask_andnot_ps / _mm256_mask_andnot_ps
_mm_maskz_andnot_ps / _mm256_maskz_andnot_ps
_mm_mask_or_ps / _mm256_mask_or_ps
_mm_maskz_or_ps / _mm256_maskz_or_ps
_mm_mask_xor_ps / _mm256_mask_xor_ps
_mm_maskz_xor_ps / _mm256_maskz_xor_ps

_mm_mask_and_pd / _mm256_mask_and_pd
_mm_maskz_and_pd / _mm256_maskz_and_pd
_mm_mask_andnot_pd / _mm256_mask_andnot_pd
_mm_maskz_andnot_pd / _mm256_maskz_andnot_pd
_mm_mask_or_pd / _mm256_mask_or_pd
_mm_maskz_or_pd / _mm256_maskz_or_pd
_mm_mask_xor_pd / _mm256_mask_xor_pd
_mm_maskz_xor_pd / _mm256_maskz_xor_pd

(I may have missed a few...)

Guia do colaborador