Developer Guide and Reference

Contents

Intrinsics for Integer Bit Manipulation and Conflict Detection Operations

The prototypes for Intel® Advanced Vector Extensions 512 (Intel® AVX-512) intrinsics are located in the
zmmintrin.h
header file.
To use these intrinsics, include the
immintrin.h
file as follows:
#include <immintrin.h>
Intrinsic Name
Operation
Corresponding
Intel® AVX-512 Instruction
_mm512_lzcnt_epi32
,
_mm512_mask_lzcnt_epi32
,
_mm512_maskz_lzcnt_epi32
Counts the leading zero bits in source int32 elements.
VPLZCNTD
_mm512_lzcnt_epi64
,
_mm512_mask_lzcnt_epi64
,
_mm512_maskz_lzcnt_epi64
Counts the leading zero bits in source int64 elements.
VPLZCNTQ
_mm512_ternarylogic_epi32
,
_mm512_mask_ternarylogic_epi32
,
_mm512_maskz_ternarylogic_epi32
Implements three-operand binary function specified by immediate value.
VPTERNLOGD
_mm512_ternarylogic_epi64
,
_mm512_mask_ternarylogic_epi64
,
_mm512_maskz_ternarylogic_epi64
Implements three-operand binary function specified by immediate value.
VPTERNLOGQ
variable
definition
k
writemask used as a selector
a
first source vector element
b
second source vector element
c
third source vector element
imm8
binary function specifier
src
source element to use based on writemask result
_mm512_lzcnt_epi32
extern __m512i __cdecl _mm512_lzcnt_epi32(__m512i a);
Counts the number of leading zero bits in each packed 32-bit integer in
a
, and store the results in destination.
_mm512_mask_lzcnt_epi32
extern __m512i __cdecl _mm512_mask_lzcnt_epi32(__m512i src, __mmask16 k, __m512i a);
Counts the number of leading zero bits in each packed 32-bit integer in
a
, and store the results in destination using writemask
k
(elements are copied from
src
when the corresponding mask bit is not set).
_mm512_maskz_lzcnt_epi32
extern __m512i __cdecl _mm512_maskz_lzcnt_epi32(__mmask16 k, __m512i a);
Counts the number of leading zero bits in each packed 32-bit integer in
a
, and store the results in destination using zeromask
k
(elements are zeroed out when the corresponding mask bit is not set).
_mm512_lzcnt_epi64
extern __m512i __cdecl _mm512_lzcnt_epi64(__m512i a);
Counts the number of leading zero bits in each packed 64-bit integer in
a
, and store the results.
_mm512_mask_lzcnt_epi64
extern __m512i __cdecl _mm512_mask_lzcnt_epi64(__m512i src, __mmask8 k, __m512i a);
Counts the number of leading zero bits in each packed 64-bit integer in
a
, and store the results in using writemask
k
.
Elements are copied from
src
when the corresponding mask bit is not set.
_mm512_maskz_lzcnt_epi64
extern __m512i __cdecl _mm512_maskz_lzcnt_epi64(__mmask8 k, __m512i a);
Counts the number of leading zero bits in each packed 64-bit integer in
a
, and store the results in destination using zeromask
k
.
Elements are zeroed out when the corresponding mask bit is not set.