Skip to content

[Headers][X86] Allow PSHUFD/PSHUFLW/PSHUFW shuffle intrinsics to be used in constexpr #156611

@RKSimon

Description

@RKSimon

The i16/i32 fixed shuffle intrinsics can be used in constant expressions:

_mm_shuffle_pi16

_mm_shufflelo_epi16 _mm_mask_shufflelo_epi16 _mm_maskz_shufflelo_epi16
_mm256_shufflelo_epi16 _mm256_mask_shufflelo_epi16 _mm256_maskz_shufflelo_epi16
_mm512_shufflelo_epi16 _mm512_mask_shufflelo_epi16 _mm512_maskz_shufflelo_epi16

_mm_shufflehi_epi16 _mm_mask_shufflehi_epi16 _mm_maskz_shufflehi_epi16
_mm256_shufflehi_epi16 _mm256_mask_shufflehi_epi16 _mm256_maskz_shufflehi_epi16
_mm512_shufflehi_epi16 _mm512_mask_shufflehi_epi16 _mm512_maskz_shufflehi_epi16

_mm_shuffle_epi32 _mm_mask_shuffle_epi32 _mm_maskz_shuffle_epi32
_mm256_shuffle_epi32 _mm256_mask_shuffle_epi32 _mm256_maskz_shuffle_epi32
_mm512_shuffle_epi32 _mm512_mask_shuffle_epi32 _mm512_maskz_shuffle_epi32

These will require handling inside VectorExprEvaluator::VisitCallExpr / InterpretBuiltin

Similar testing to #153102 - single test for each intrinsic, but ensure a range of masks are used.

Metadata

Metadata

Assignees

Labels

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