Skip to content

[Headers][X86] Allow AVX512 masked shuffles to be used in constexpr #162074

@RKSimon

Description

@RKSimon

These appear to be missed in earlier patches like #152313 as we didn't have mask/maskz constexpr support back then, most just need a header tweak and test coverage:

_mm_mask_set1_epi32 _mm_maskz_set1_epi32
_mm_mask_set1_epi64 _mm_maskz_set1_epi64
_mm256_mask_set1_epi32 _mm256_maskz_set1_epi32
_mm256_mask_set1_epi64 _mm256_maskz_set1_epi64
_mm512_mask_set1_epi32 _mm512_maskz_set1_epi32
_mm512_mask_set1_epi64 _mm512_maskz_set1_epi64

_mm_mask_broadcast_i32x2 _mm_mask_broadcast_i32x2
_mm256_mask_broadcast_f32x2 _mm256_maskz_broadcast_f32x2
_mm256_mask_broadcast_f64x2 _mm256_maskx_broadcast_f64x2
_mm256_mask_broadcast_i32x2 _mm256_maskz_broadcast_i32x2
_mm256_mask_broadcast_i64x2 _mm256_maskz_broadcast_i64x2

_mm512_mask_broadcast_f32x2 _mm512_maskz_broadcast_f32x2
_mm512_mask_broadcast_f32x8 _mm512_maskz_broadcast_f32x8
_mm512_mask_broadcast_f64x2 _mm512_maskz_broadcast_f64x2
_mm512_mask_broadcast_i32x2 _mm512_maskz_broadcast_i32x2
_mm512_mask_broadcast_i32x8 _mm512_maskz_broadcast_i32x8
_mm512_mask_broadcast_i64x2 _mm512_maskz_broadcast_i64x2
_mm256_mask_broadcast_i32x4 _mm256_maskz_broadcast_i32x4
_mm256_mask_broadcast_f32x4 _mm256_maskz_broadcast_f32x4

_mm_mask_broadcastss_ps _mm_maskz_broadcastss_ps
_mm256_mask_broadcastsd_pd _mm256_maskz_broadcastsd_pd
_mm256_mask_broadcastss_ps _mm256_maskz_broadcastss_ps
_mm_mask_broadcastd_epi32 _mm_maskz_broadcastd_epi32
_mm_mask_broadcastq_epi64 _mm_maskz_broadcastq_epi64
_mm256_mask_broadcastd_epi32 _mm256_maskz_broadcastd_epi32
_mm256_mask_broadcastq_epi64 _mm256_maskz_broadcastq_epi64
_mm512_mask_broadcastd_epi32 / _mm512_maskz_broadcastd_epi32
_mm512_mask_broadcastq_epi64 / _mm512_maskz_broadcastq_epi64

_mm_mask_movehdup_ps / _mm_maskz_movehdup_ps
_mm_mask_moveldup_ps / _mm_maskz_moveldup_ps
_mm_mask_unpackhi_pd / _mm_maskz_unpackhi_pd
_mm_mask_unpacklo_pd / _mm_maskz_unpacklo_pd
_mm_mask_unpackhi_ps / _mm_maskz_unpackhi_ps
_mm_mask_unpacklo_ps / _mm_maskz_unpacklo_ps
_mm_mask_unpackhi_epi64 / _mm_maskz_unpackhi_epi64
_mm_mask_unpacklo_epi64 / _mm_maskz_unpacklo_epi64
_mm_mask_unpackhi_epi32 / _mm_maskz_unpackhi_epi32
_mm_mask_unpacklo_epi32 / _mm_maskz_unpacklo_epi32

_mm256_mask_movehdup_ps / _mm256_maskz_movehdup_ps
_mm256_mask_moveldup_ps / _mm256_maskz_moveldup_ps
_mm256_mask_unpackhi_pd / _mm256_maskz_unpackhi_pd
_mm256_mask_unpacklo_pd / _mm256_maskz_unpacklo_pd
_mm256_mask_unpackhi_ps / _mm256_maskz_unpackhi_ps
_mm256_mask_unpacklo_ps / _mm256_maskz_unpacklo_ps
_mm256_mask_unpackhi_epi64 / _mm256_maskz_unpackhi_epi64
_mm256_mask_unpacklo_epi64 / _mm256_maskz_unpacklo_epi64
_mm256_mask_unpackhi_epi32 / _mm256_maskz_unpackhi_epi32
_mm256_mask_unpacklo_epi32 / _mm256_maskz_unpacklo_epi32

_mm512_mask_movehdup_ps / _mm512_maskz_movehdup_ps
_mm512_mask_moveldup_ps / _mm512_maskz_moveldup_ps
_mm512_mask_unpackhi_pd / _mm512_maskz_unpackhi_pd
_mm512_mask_unpacklo_pd / _mm512_maskz_unpacklo_pd
_mm512_mask_unpackhi_ps / _mm512_maskz_unpackhi_ps
_mm512_mask_unpacklo_ps / _mm512_maskz_unpacklo_ps
_mm512_mask_unpackhi_epi64 / _mm512_maskz_unpackhi_epi64
_mm512_mask_unpacklo_epi64 / _mm512_maskz_unpacklo_epi64
_mm512_mask_unpackhi_epi32 / _mm512_maskz_unpackhi_epi32
_mm512_mask_unpacklo_epi32 / _mm512_maskz_unpacklo_epi32

_mm_mask_move_ss / _mm_maskz_move_ss
_mm_mask_move_sd / _mm_maskz_move_sd

(I may have missed some shuffle cases from avx512fintrin.h / avx512vlintrin.h)

Metadata

Metadata

Assignees

No one assigned

    Labels

    backend:X86clang:headersHeaders provided by Clang, e.g. for intrinsicsgood 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