Skip to content

[Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - allow AVX512 compress intrinsics to be used in constexpr #163732

@RKSimon

Description

@RKSimon

Similar to #160524 / #163734

__m128i _mm_mask_compress_epi8 (__m128i src, __mmask16 k, __m128i a)
__m128i _mm_maskz_compress_epi8 (__mmask16 k, __m128i a)
__m256i _mm256_mask_compress_epi8 (__m256i src, __mmask32 k, __m256i a)
__m256i _mm256_maskz_compress_epi8 (__mmask32 k, __m256i a)
__m512i _mm512_mask_compress_epi8 (__m512i src, __mmask64 k, __m512i a)
__m512i _mm512_maskz_compress_epi8 (__mmask64 k, __m512i a)

__m128i _mm_mask_compress_epi16 (__m128i src, __mmask8 k, __m128i a)
__m128i _mm_maskz_compress_epi16 (__mmask8 k, __m128i a)
__m256i _mm256_mask_compress_epi16 (__m256i src, __mmask16 k, __m256i a)
__m256i _mm256_maskz_compress_epi16 (__mmask16 k, __m256i a)
__m512i _mm512_mask_compress_epi16 (__m512i src, __mmask32 k, __m512i a)
__m512i _mm512_maskz_compress_epi16 (__mmask32 k, __m512i a)

__m128i _mm_mask_compress_epi32 (__m128i src, __mmask8 k, __m128i a)
__m128i _mm_maskz_compress_epi32 (__mmask8 k, __m128i a)
__m256i _mm256_mask_compress_epi32 (__m256i src, __mmask8 k, __m256i a)
__m256i _mm256_maskz_compress_epi32 (__mmask8 k, __m256i a)
__m512i _mm512_mask_compress_epi32 (__m512i src, __mmask16 k, __m512i a)
__m512i _mm512_maskz_compress_epi32 (__mmask16 k, __m512i a)

__m128i _mm_mask_compress_epi64 (__m128i src, __mmask8 k, __m128i a)
__m128i _mm_maskz_compress_epi64 (__mmask8 k, __m128i a)
__m256i _mm256_mask_compress_epi64 (__m256i src, __mmask8 k, __m256i a)
__m256i _mm256_maskz_compress_epi64 (__mmask8 k, __m256i a)
__m512i _mm512_mask_compress_epi64 (__m512i src, __mmask8 k, __m512i a)
__m512i _mm512_maskz_compress_epi64 (__mmask8 k, __m512i a)

__m128d _mm_mask_compress_pd (__m128d src, __mmask8 k, __m128d a)
__m128d _mm_maskz_compress_pd (__mmask8 k, __m128d a)
__m256d _mm256_mask_compress_pd (__m256d src, __mmask8 k, __m256d a)
__m256d _mm256_maskz_compress_pd (__mmask8 k, __m256d a)
__m512d _mm512_mask_compress_pd (__m512d src, __mmask8 k, __m512d a)
__m512d _mm512_maskz_compress_pd (__mmask8 k, __m512d a)

__m128 _mm_mask_compress_ps (__m128 src, __mmask8 k, __m128 a)
__m128 _mm_maskz_compress_ps (__mmask8 k, __m128 a)
__m256 _mm256_mask_compress_ps (__m256 src, __mmask8 k, __m256 a)
__m256 _mm256_maskz_compress_ps (__mmask8 k, __m256 a)
__m512 _mm512_mask_compress_ps (__m512 src, __mmask16 k, __m512 a)
__m512 _mm512_maskz_compress_ps (__mmask16 k, __m512 a)

NOTE: This isn't the compress store instructions, just the compress register variants.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:X86clang:bytecodeIssues for the clang bytecode constexpr interpreterclang:headersHeaders provided by Clang, e.g. for intrinsicsconstexprAnything related to constant evaluationgood first issuehttps://github.com/llvm/llvm-project/contribute

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions