Visible to Intel only — GUID: GUID-ABCF79A7-116A-4AF5-938F-9713BBF8DE82
Visible to Intel only — GUID: GUID-ABCF79A7-116A-4AF5-938F-9713BBF8DE82
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 |
---|---|---|
_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.
_mm512_ternarylogic_epi32
extern __m512i __cdecl _mm512_ternarylogic_epi32(__m512i a, __m512i b, __m512i c, int imm8);
Bitwise ternary logic to implement three-operand binary functions; the specific binary function is specified by value in imm8.
For each bit in each packed 32-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding destination bit.
_mm512_mask_ternarylogic_epi32
extern __m512i __cdecl _mm512_mask_ternarylogic_epi32(__m512i a, __mmask16 k, __m512i, __m512i b, int imm8);
Bitwise ternary logic to implement three-operand binary functions; the specific binary function is specified by value in imm8.
For each bit in each packed 32-bit integer, the corresponding bit from src, a, and b are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding destination bit using writemask k at 32-bit granularity (32-bit elements are copied from src when the corresponding mask bit is not set).
_mm512_maskz_ternarylogic_epi32
extern __m512i __cdecl _mm512_maskz_ternarylogic_epi32(__mmask16 k, __m512i a, __m512i b, __m512i c, int imm8);
Bitwise ternary logic to implement three-operand binary functions; the specific binary function is specified by value in imm8.
For each bit in each packed 32-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding destination bit using zeromask k at 32-bit granularity (32-bit elements are zeroed out when the corresponding mask bit is not set).
_mm512_ternarylogic_epi64
extern __m512i __cdecl _mm512_ternarylogic_epi64(__m512i a, __m512i b, __m512i c, int imm8);
Bitwise ternary logic to implement three-operand binary functions; the specific binary function is specified by value in imm8.
For each bit in each packed 64-bit integer, the corresponding bit from a, b, and c are used to form a 3-bit index into imm8, and the value at that bit in imm8 is written to the corresponding destination bit.
_mm512_mask_ternarylogic_epi64
extern __m512i __cdecl _mm512_mask_ternarylogic_epi64(__m512i src, __mmask8 k, __m512i a, __m512i b, int imm8);
Bitwise ternary logic to implement three-operand binary functions; the specific binary function is specified by value in imm8.
For each bit in each packed 64-bit integer, the corresponding bit from src, a, and b are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding destination bit using writemask k at 64-bit granularity (64-bit elements are copied from src when the corresponding mask bit is not set).
_mm512_maskz_ternarylogic_epi64
extern __m512i __cdecl _mm512_maskz_ternarylogic_epi64(__mmask8 k, __m512i a, __m512i b, __m512i c, int imm8);
Bitwise ternary logic to implement three-operand binary functions; the specific binary function is specified by value in imm8.
For each bit in each packed 64-bit integer, the corresponding bit from a, b, and c are used to form a 3 bit index into imm8, and the value at that bit in imm8 is written to the corresponding destination bit using zeromask k at 64-bit granularity (64-bit elements are zeroed out when the corresponding mask bit is not set).