🔬This is a nightly-only experimental API. (stdsimd #48556)
Available on x86 or x86-64 only.
Expand description

Bit-oriented Algorithms (BITALG)

The intrinsics here correspond to those in the immintrin.h C header.

The reference is Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 2: Instruction Set Reference, A-Z.

Functions

  • _mm256_bitshuffle_epi64_maskExperimentalavx512bitalg,avx512vl
    Considers the input b as packed 64-bit integers and c as packed 8-bit integers. Then groups 8 8-bit values from cas indices into the bits of the corresponding 64-bit integer. It then selects these bits and packs them into the output.
  • _mm256_mask_bitshuffle_epi64_maskExperimentalavx512bitalg,avx512vl
    Considers the input b as packed 64-bit integers and c as packed 8-bit integers. Then groups 8 8-bit values from cas indices into the bits of the corresponding 64-bit integer. It then selects these bits and packs them into the output.
  • _mm256_mask_popcnt_epi8Experimentalavx512bitalg,avx512vl
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm256_mask_popcnt_epi16Experimentalavx512bitalg,avx512vl
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • _mm256_maskz_popcnt_epi8Experimentalavx512bitalg,avx512vl
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm256_maskz_popcnt_epi16Experimentalavx512bitalg,avx512vl
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • _mm256_popcnt_epi8Experimentalavx512bitalg,avx512vl
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm256_popcnt_epi16Experimentalavx512bitalg,avx512vl
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • _mm512_bitshuffle_epi64_maskExperimentalavx512bitalg
    Considers the input b as packed 64-bit integers and c as packed 8-bit integers. Then groups 8 8-bit values from cas indices into the bits of the corresponding 64-bit integer. It then selects these bits and packs them into the output.
  • _mm512_mask_bitshuffle_epi64_maskExperimentalavx512bitalg
    Considers the input b as packed 64-bit integers and c as packed 8-bit integers. Then groups 8 8-bit values from cas indices into the bits of the corresponding 64-bit integer. It then selects these bits and packs them into the output.
  • _mm512_mask_popcnt_epi8Experimentalavx512bitalg
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm512_mask_popcnt_epi16Experimentalavx512bitalg
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • _mm512_maskz_popcnt_epi8Experimentalavx512bitalg
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm512_maskz_popcnt_epi16Experimentalavx512bitalg
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • _mm512_popcnt_epi8Experimentalavx512bitalg
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm512_popcnt_epi16Experimentalavx512bitalg
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • _mm_bitshuffle_epi64_maskExperimentalavx512bitalg,avx512vl
    Considers the input b as packed 64-bit integers and c as packed 8-bit integers. Then groups 8 8-bit values from cas indices into the bits of the corresponding 64-bit integer. It then selects these bits and packs them into the output.
  • _mm_mask_bitshuffle_epi64_maskExperimentalavx512bitalg,avx512vl
    Considers the input b as packed 64-bit integers and c as packed 8-bit integers. Then groups 8 8-bit values from cas indices into the bits of the corresponding 64-bit integer. It then selects these bits and packs them into the output.
  • _mm_mask_popcnt_epi8Experimentalavx512bitalg,avx512vl
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm_mask_popcnt_epi16Experimentalavx512bitalg,avx512vl
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • _mm_maskz_popcnt_epi8Experimentalavx512bitalg,avx512vl
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm_maskz_popcnt_epi16Experimentalavx512bitalg,avx512vl
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • _mm_popcnt_epi8Experimentalavx512bitalg,avx512vl
    For each packed 8-bit integer maps the value to the number of logical 1 bits.
  • _mm_popcnt_epi16Experimentalavx512bitalg,avx512vl
    For each packed 16-bit integer maps the value to the number of logical 1 bits.
  • bitshuffle_128 🔒 Experimental
  • bitshuffle_256 🔒 Experimental
  • bitshuffle_512 🔒 Experimental
  • popcnt_v8i16 🔒 Experimental
  • popcnt_v16i8 🔒 Experimental
  • popcnt_v16i16 🔒 Experimental
  • popcnt_v32i8 🔒 Experimental
  • popcnt_v32i16 🔒 Experimental
  • popcnt_v64i8 🔒 Experimental