Intel® C++ Compiler Classic Developer Guide and Reference

ID 767249
Date 12/16/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

Intrinsics for Integer Bit Rotation 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_rol_epi32, _mm512_mask_rol_epi32, _mm512_maskz_rol_epi32

Rotates bits of int32 source elements left by specified count.

VPROLD

_mm512_rol_epi64, _mm512_mask_rol_epi64, _mm512_maskz_rol_epi64

Rotates bits of int64 source elements left by specified count.

VPROLQ

_mm512_rolv_epi32, _mm512_mask_rolv_epi32, _mm512_maskz_rolv_epi32

Rotates bits of int32 source elements left by specified count.

VPROLVD

_mm512_rolv_epi64, _mm512_mask_rolv_epi64, _mm512_maskz_rolv_epi64

Rotates bits of int64 source elements left by specified count.

VPROLVQ

_mm512_ror_epi32, _mm512_mask_ror_epi32, _mm512_maskz_ror_epi32

Rotates bits of int32 source elements right by specified count.

VPRORD

_mm512_ror_epi64, _mm512_mask_ror_epi64, _mm512_maskz_ror_epi64

Rotates bits of int64 source elements right by specified count.

VPRORQ

_mm512_rorv_epi32, _mm512_mask_rorv_epi32, _mm512_maskz_rorv_epi32

Rotates bits of int32 source elements right by specified count.

VPRORVD

_mm512_rorv_epi64, _mm512_mask_rorv_epi64, _mm512_maskz_rorv_epi64

Rotates bits of int64 source elements right by specified count.

VPRORVQ


variable definition
k

writemask used as a selector

a

first source vector element

b

second source vector element

src

source element to use based on writemask result

imm

8-bit immediate integer specifies offset for destination


_mm512_rol_epi32

extern __m512i __cdecl _mm512_rol_epi32(__m512i a, const int imm);

Rotates bits in each packed int32 element in a to the left by the number of bits specified in imm, and stores the results.


_mm512_mask_rol_epi32

extern __m512i __cdecl _mm512_mask_rol_epi32(__m512i src, __mmask16 k, __m512i a, const int imm);

Rotates bits in each packed int32 element in a to the left by the number of bits specified in imm, and stores the results using writemask k (elements are copied from src when the corresponding mask bit is not set).


_mm512_maskz_rol_epi32

extern __m512i __cdecl _mm512_maskz_rol_epi32(__mmask16 k, __m512i a, const int imm);

Rotates bits in each packed int32 element in a to the left by the number of bits specified in imm, and stores the results using zeromask k (elements are zeroed out when the corresponding mask bit is not set).



_mm512_rol_epi64

extern __m512i __cdecl _mm512_rol_epi64(__m512i a, const int imm);

Rotates bits in each packed int64 element in a to the left by the number of bits specified in imm, and stores the results.


_mm512_mask_rol_epi64

extern __m512i __cdecl _mm512_mask_rol_epi64(__m512i src, __mmask8 k, __m512i a, const int imm);

Rotates bits in each packed int64 element in a to the left by the number of bits specified in imm, and stores the results using writemask k (elements are copied from src when the corresponding mask bit is not set).


_mm512_maskz_rol_epi64

extern __m512i __cdecl _mm512_maskz_rol_epi64(__mmask8 k, __m512i a, const int imm);

Rotates bits in each packed int64 element in a to the left by the number of bits specified in imm, and stores the results using zeromask k (elements are zeroed out when the corresponding mask bit is not set).



_mm512_rolv_epi32

extern __m512i __cdecl _mm512_rolv_epi32(__m512i a, __m512i b);

Rotates bits in each packed int32 element in a to the left by the number of bits specified in the corresponding element of b, and stores the results.


_mm512_mask_rolv_epi32

extern __m512i __cdecl _mm512_mask_rolv_epi32(__m512i src, __mmask16 k, __m512i a, __m512i b);

Rotates bits in each packed int32 element in a to the left by the number of bits specified in the corresponding element of b, and stores the results using writemask k (elements are copied from src when the corresponding mask bit is not set).


_mm512_maskz_rolv_epi32

extern __m512i __cdecl _mm512_maskz_rolv_epi32(__mmask16 k, __m512i a, __m512i b);

Rotates bits in each packed int32 element in a to the left by the number of bits specified in the corresponding element of b, and stores the results using zeromask k (elements are zeroed out when the corresponding mask bit is not set).



_mm512_rolv_epi64

extern __m512i __cdecl _mm512_rolv_epi64(__m512i a, __m512i b);

Rotates bits in each packed int64 element in a to the left by the number of bits specified in the corresponding element of b, and stores the results.


_mm512_mask_rolv_epi64

extern __m512i __cdecl _mm512_mask_rolv_epi64(__m512i src, __mmask8 k, __m512i a, __m512i b);

Rotates bits in each packed int64 element in a to the left by the number of bits specified in the corresponding element of b, and stores the results using writemask k (elements are copied from src when the corresponding mask bit is not set).


_mm512_maskz_rolv_epi64

extern __m512i __cdecl _mm512_maskz_rolv_epi64(__mmask8 k, __m512i a, __m512i b);

Rotates bits in each packed int64 element in a to the left by the number of bits specified in the corresponding element of b, and stores the results using zeromask k (elements are zeroed out when the corresponding mask bit is not set).



_mm512_ror_epi32

extern __m512i __cdecl _mm512_ror_epi32(__m512i a, int imm);

Rotates bits in each packed int32 element in a to the right by the number of bits specified in imm, and stores the results.


_mm512_mask_ror_epi32

extern __m512i __cdecl _mm512_mask_ror_epi32(__m512i src, __mmask16 k, __m512i a, int imm);

Rotates bits in each packed int32 element in a to the right by the number of bits specified in imm, and stores the results using writemask k (elements are copied from src when the corresponding mask bit is not set).


_mm512_maskz_ror_epi32

extern __m512i __cdecl _mm512_maskz_ror_epi32(__mmask16 k, __m512i a, int imm);

Rotates bits in each packed int32 element in a to the right by the number of bits specified in imm, and stores the results using zeromask k (elements are zeroed out when the corresponding mask bit is not set).



_mm512_ror_epi64

extern __m512i __cdecl _mm512_ror_epi64(__m512i a, int imm);

Rotates bits in each packed int64 element in a to the right by the number of bits specified in imm, and stores the results.


_mm512_mask_ror_epi64

extern __m512i __cdecl _mm512_mask_ror_epi64(__m512i src, __mmask8 k, __m512i a, int imm);

Rotates bits in each packed int64 element in a to the right by the number of bits specified in imm, and stores the results using writemask k (elements are copied from src when the corresponding mask bit is not set).


_mm512_maskz_ror_epi64

extern __m512i __cdecl _mm512_maskz_ror_epi64(__mmask8 k, __m512i a, int imm);

Rotates bits in each packed int64 element in a to the right by the number of bits specified in imm, and stores the results using zeromask k (elements are zeroed out when the corresponding mask bit is not set).



_mm512_rorv_epi32

extern __m512i __cdecl _mm512_rorv_epi32(__m512i a, __m512i b);

Rotates bits in each packed int32 element in a to the right by the number of bits specified in the corresponding element of b, and stores the results.


_mm512_mask_rorv_epi32

extern __m512i __cdecl _mm512_mask_rorv_epi32(__m512i src, __mmask16 k, __m512i a, __m512i b);

Rotates bits in each packed int32 element in a to the right by the number of bits specified in the corresponding element of b, and stores the results using writemask k (elements are copied from src when the corresponding mask bit is not set).


_mm512_maskz_rorv_epi32

extern __m512i __cdecl _mm512_maskz_rorv_epi32(__mmask16 k, __m512i a, __m512i b);

Rotates bits in each packed int32 element in a to the right by the number of bits specified in the corresponding element of b, and stores the results using zeromask k (elements are zeroed out when the corresponding mask bit is not set).



_mm512_rorv_epi64

extern __m512i __cdecl _mm512_rorv_epi64(__m512i a, __m512i b);

Rotates bits in each packed int64 element in a to the right by the number of bits specified in the corresponding element of b, and stores the results.


_mm512_mask_rorv_epi64

extern __m512i __cdecl _mm512_mask_rorv_epi64(__m512i src, __mmask8 k, __m512i a, __m512i b);

Rotates bits in each packed int64 element in a to the right by the number of bits specified in the corresponding element of b, and stores the results using writemask k (elements are copied from src when the corresponding mask bit is not set).


_mm512_maskz_rorv_epi64

extern __m512i __cdecl _mm512_maskz_rorv_epi64(__mmask8 k, __m512i a, __m512i b);

Rotates bits in each packed int64 element in a to the right by the number of bits specified in the corresponding element of b, and stores the results using zeromask k (elements are zeroed out when the corresponding mask bit is not set).