Skip to content

[Clang] VectorExprEvaluator::VisitCallExpr / InterpretBuiltin - allow VPERMILPD/S variable mask intrinsics to be used in constexpr #167878

@RKSimon

Description

@RKSimon
__m128d _mm_permutevar_pd (__m128d a, __m128i b)
__m128d _mm_mask_permutevar_pd (__m128d src, __mmask8 k, __m128d a, __m128i b)
__m128d _mm_maskz_permutevar_pd (__mmask8 k, __m128d a, __m128i b)
__m256d _mm256_permutevar_pd (__m256d a, __m256i b)
__m256d _mm256_mask_permutevar_pd (__m256d src, __mmask8 k, __m256d a, __m256i b)
__m256d _mm256_maskz_permutevar_pd (__mmask8 k, __m256d a, __m256i b)
__m512d _mm512_permutevar_pd (__m512d a, __m512i b)
__m512d _mm512_mask_permutevar_pd (__m512d src, __mmask8 k, __m512d a, __m512i b)
__m512d _mm512_maskz_permutevar_pd (__mmask8 k, __m512d a, __m512i b)

__m128 _mm_permutevar_ps (__m128 a, __m128i b)
__m128 _mm_mask_permutevar_ps (__m128 src, __mmask8 k, __m128 a, __m128i b)
__m128 _mm_maskz_permutevar_ps (__mmask8 k, __m128 a, __m128i b)
__m256 _mm256_permutevar_ps (__m256 a, __m256i b)
__m256 _mm256_mask_permutevar_ps (__m256 src, __mmask8 k, __m256 a, __m256i b)
__m256 _mm256_maskz_permutevar_ps (__mmask8 k, __m256 a, __m256i b)
__m512 _mm512_permutevar_ps (__m512 a, __m512i b)
__m512 _mm512_mask_permutevar_ps (__m512 src, __mmask16 k, __m512 a, __m512i b)
__m512 _mm512_maskz_permutevar_ps (__mmask16 k, __m512 a, __m512i b)

Sibling issue to #166529 but with variable masks - unlike #167802 these shuffles are per lane

Metadata

Metadata

Assignees

Labels

backend:X86clang:bytecodeIssues for the clang bytecode constexpr interpreterclang:frontendLanguage frontend issues, e.g. anything involving "Sema"clang: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