インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

整数シフト演算の組込み関数

インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 組込み関数のプロトタイプは、zmmintrin.h ヘッダーファイルで定義されていますが、実際にヘッダーをコードにインクルードする場合は、immintrin.h を使用します。


組込み関数名

演算

対応するインテル® AVX-512 命令

_mm512_sll_epi32_mm512_mask_sll_epi32_mm512_maskz_sll_epi32

_mm512_slli_epi32_mm512_mask_slli_epi32_mm512_maskz_slli_epi32

int32 要素に対して左への論理シフトを実行します。

VPSLLD

_mm512_srl_epi32_mm512_mask_srl_epi32_mm512_maskz_srl_epi32

_mm512_srli_epi32_mm512_mask_srli_epi32_mm512_maskz_srli_epi32

int32 要素に対して右への論理シフトを実行します。

VPSRLD

_mm512_sll_epi64_mm512_mask_sll_epi64_mm512_maskz_sll_epi64

_mm512_slli_epi64_mm512_mask_slli_epi64_mm512_maskz_slli_epi64

int64 要素に対して左への論理シフトを実行します。

VPSLLQ

_mm512_srl_epi64_mm512_mask_srl_epi64_mm512_maskz_srl_epi64

_mm512_srli_epi64_mm512_mask_srli_epi64_mm512_maskz_srli_epi64

int64 要素に対して右への論理シフトを実行します。

VPSRLQ

_mm512_sllv_epi32_mm512_mask_sllv_epi32_mm512_maskz_sllv_epi32

int32 要素に対して、要素ごとにシフト量の異なる左への論理シフトを実行します。

VPSLLVD

_mm512_srlv_epi32_mm512_mask_srlv_epi32_mm512_maskz_srlv_epi32

int32 要素に対して、要素ごとにシフト量の異なる右への論理シフトを実行します。

VPSRLVD

_mm512_sllv_epi64_mm512_mask_sllv_epi64_mm512_maskz_sllv_epi64

int64 要素に対して、要素ごとにシフト量の異なる左への論理シフトを実行します。

VPSLLVQ

_mm512_srlv_epi64_mm512_mask_srlv_epi64_mm512_maskz_srlv_epi64

int64 要素に対して、要素ごとにシフト量の異なる右への論理シフトを実行します。

VPSRLVQ

_mm512_sra_epi32_mm512_mask_sra_epi32_mm512_maskz_sra_epi32

_mm512_srai_epi32_mm512_mask_srai_epi32_mm512_maskz_srai_epi32

int32 要素に対して右への算術シフトを実行します。

VPSRAD

_mm512_srav_epi32_mm512_mask_srav_epi32_mm512_maskz_srav_epi32

int32 要素に対して、要素ごとにシフト量の異なる右への算術シフトを実行します。

VPSRAVD

_mm512_srav_epi64_mm512_mask_srav_epi64_mm512_maskz_srav_epi64

int64 要素に対して、要素ごとにシフト量の異なる右への算術シフトを実行します。

VPSRAVQ

_mm512_sra_epi64_mm512_mask_sra_epi64_mm512_maskz_sra_epi64

_mm512_srai_epi64_mm512_mask_srai_epi64_mm512_maskz_srai_epi64

int64 要素に対して右への算術シフトを実行します。

VPSRAQ


変数 定義
k

セレクターとして使用される書き込みマスク

a

1 つ目のソースベクトルの要素

src

書き込みマスクの結果に応じて使用されるソース要素

count

シフトするビット数

imm

デスティネーションのオフセットを指定する 8 ビットの即値


_mm512_sll_epi32

extern __m512i __cdecl _mm512_sll_epi32(__m512i a, __m128i count);

a のパックド int32 要素を左に count だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_sll_epi32

extern __m512i __cdecl _mm512_mask_sll_epi32(__m512i src, __mmask16 k, __m512i a, __m128i count);

a のパックド int32 要素を左に count だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_sll_epi32

extern __m512i __cdecl _mm512_maskz_sll_epi32(__mmask16 k, __m512i a, __m128i count);

a のパックド int32 要素を左に count だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_slli_epi32

extern __m512i __cdecl _mm512_slli_epi32(__m512i a, unsigned int imm);

a のパックド int32 要素を左に imm だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_slli_epi32

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

a のパックド int32 要素を左に imm だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_slli_epi32

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

a のパックド int32 要素を左に imm だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_sll_epi64

extern __m512i __cdecl _mm512_sll_epi64(__m512i a, __m128i count);

a のパックド int64 要素を左に count だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_sll_epi64

extern __m512i __cdecl _mm512_mask_sll_epi64(__m512i src, __mmask8 k, __m512i a, __m128i count);

a のパックド int64 要素を左に count だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_sll_epi64

extern __m512i __cdecl _mm512_maskz_sll_epi64(__mmask8 k, __m512i a, __m128i count);

a のパックド int64 要素を左に count だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_slli_epi64

extern __m512i __cdecl _mm512_slli_epi64(__m512i a, unsigned int imm);

a のパックド int64 要素を左に imm だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_slli_epi64

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

a のパックド int64 要素を左に imm だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_slli_epi64

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

a のパックド int64 要素を左に imm だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_sllv_epi32

extern __m512i __cdecl _mm512_sllv_epi32(__m512i a, __m512i count);

a のパックド int32 要素を左に count で指定した値だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_sllv_epi32

extern __m512i __cdecl _mm512_mask_sllv_epi32(__m512i src, __mmask16 k, __m512i a, __m512i count);

a のパックド int32 要素を左に count で指定した値だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_sllv_epi32

extern __m512i __cdecl _mm512_maskz_sllv_epi32(__mmask16 k, __m512i a, __m512i count);

a のパックド int32 要素を左に count で指定した値だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_sllv_epi64

extern __m512i __cdecl _mm512_sllv_epi64(__m512i a, __m512i count);

a のパックド int64 要素を左に count で指定した値だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_sllv_epi64

extern __m512i __cdecl _mm512_mask_sllv_epi64(__m512i src, __mmask8 k, __m512i a, __m512i count);

a のパックド int64 要素を左に count で指定した値だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_sllv_epi64

extern __m512i __cdecl _mm512_maskz_sllv_epi64(__mmask8 k, __m512i a, __m512i count);

a のパックド int64 要素を左に count で指定した値だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_sra_epi32

extern __m512i __cdecl _mm512_sra_epi32(__m512i a, __m128i count);

a のパックド int32 要素を右に count だけシフトし、その符号ビットをシフトインして、結果を格納します。



_mm512_mask_sra_epi32

extern __m512i __cdecl _mm512_mask_sra_epi32(__m512i src, __mmask16 k, __m512i a, __m128i count);

a のパックド int32 要素を右に count だけシフトし、その符号ビットをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_sra_epi32

extern __m512i __cdecl _mm512_maskz_sra_epi32(__mmask16 k, __m512i a, __m128i count);

a のパックド int32 要素を右に count だけシフトし、その符号ビットをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_sra_epi64

extern __m512i __cdecl _mm512_sra_epi64(__m512i a, __m128i count);

a のパックド int64 要素を右に count だけシフトし、その符号ビットをシフトインして、結果を格納します。



_mm512_mask_sra_epi64

extern __m512i __cdecl _mm512_mask_sra_epi64(__m512i src, __mmask8 k, __m512i a, __m128i count);

a のパックド int64 要素を右に count だけシフトし、その符号ビットをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_sra_epi64

extern __m512i __cdecl _mm512_maskz_sra_epi64(__mmask8 k, __m512i a, __m128i count);

a のパックド int64 要素を右に count だけシフトし、その符号ビットをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srai_epi32

extern __m512i __cdecl _mm512_srai_epi32(__m512i a, unsigned int imm);

a のパックド int32 要素を右に imm だけシフトし、その符号ビットをシフトインして、結果を格納します。



_mm512_mask_srai_epi32

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

a のパックド int32 要素を右に imm だけシフトし、その符号ビットをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srai_epi32

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

a のパックド int32 要素を右に imm だけシフトし、その符号ビットをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srai_epi64

extern __m512i __cdecl _mm512_srai_epi64(__m512i a, unsigned int imm);

a のパックド int64 要素を右に imm だけシフトし、その符号ビットをシフトインして、結果を格納します。



_mm512_mask_srai_epi64

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

a のパックド int64 要素を右に imm だけシフトし、その符号ビットをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srai_epi64

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

a のパックド int64 要素を右に imm だけシフトし、その符号ビットをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srav_epi32

extern __m512i __cdecl _mm512_srav_epi32(__m512i a, __m512i count);

a のパックド int32 要素を右に count で指定した値だけシフトし、その符号ビットをシフトインして、結果を格納します。



_mm512_mask_srav_epi32

extern __m512i __cdecl _mm512_mask_srav_epi32(__m512i src, __mmask16 k, __m512i a, __m512i count);

a のパックド int32 要素を右に count で指定した値だけシフトし、その符号ビットをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srav_epi32

extern __m512i __cdecl _mm512_maskz_srav_epi32(__mmask16 k, __m512i a, __m512i count);

a のパックド int32 要素を右に count で指定した値だけシフトし、その符号ビットをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srav_epi64

extern __m512i __cdecl _mm512_srav_epi64(__m512i a, __m512i count);

a のパックド int64 要素を右に count で指定した値だけシフトし、その符号ビットをシフトインして、結果を格納します。



_mm512_mask_srav_epi64

extern __m512i __cdecl _mm512_mask_srav_epi64(__m512i src, __mmask8 k, __m512i a, __m512i count);

a のパックド int64 要素を右に count で指定した値だけシフトし、その符号ビットをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srav_epi64

extern __m512i __cdecl _mm512_maskz_srav_epi64(__mmask8 k, __m512i a, __m512i count);

a のパックド int64 要素を右に count で指定した値だけシフトし、その符号ビットをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srl_epi32

extern __m512i __cdecl _mm512_srl_epi32(__m512i a, __m128i count);

a のパックド int32 要素を右に count だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_srl_epi32

extern __m512i __cdecl _mm512_mask_srl_epi32(__m512i src, __mmask16 k, __m512i a, __m128i count);

a のパックド int32 要素を右に count だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srl_epi32

extern __m512i __cdecl _mm512_maskz_srl_epi32(__mmask16 k, __m512i a, __m128i count);

a のパックド int32 要素を右に count だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srli_epi32

extern __m512i __cdecl _mm512_srli_epi32(__m512i a, unsigned int imm);

a のパックド int32 要素を右に imm だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_srli_epi32

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

a のパックド int32 要素を右に imm だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srli_epi32

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

a のパックド int32 要素を右に imm だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srl_epi64

extern __m512i __cdecl _mm512_srl_epi64(__m512i a, __m128i count);

a のパックド int64 要素を右に count だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_srl_epi64

extern __m512i __cdecl _mm512_mask_srl_epi64(__m512i src, __mmask8 k, __m512i a, __m128i count);

a のパックド int64 要素を右に count だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srl_epi64

extern __m512i __cdecl _mm512_maskz_srl_epi64(__mmask8 k, __m512i a, __m128i count);

a のパックド int64 要素を右に count だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srli_epi64

extern __m512i __cdecl _mm512_srli_epi64(__m512i a, unsigned int imm);

a のパックド int64 要素を右に imm だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_srli_epi64

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

a のパックド int64 要素を右に imm だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srli_epi64

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

a のパックド int64 要素を右に imm だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srlv_epi32

extern __m512i __cdecl _mm512_srlv_epi32(__m512i a, __m512i count);

a のパックド int32 要素を右に count で指定した値だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_srlv_epi32

extern __m512i __cdecl _mm512_mask_srlv_epi32(__m512i src, __mmask16 k, __m512i a, __m512i count);

a のパックド int32 要素を右に count で指定した値だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srlv_epi32

extern __m512i __cdecl _mm512_maskz_srlv_epi32(__mmask16 k, __m512i a, __m512i count);

a のパックド int32 要素を右に count で指定した値だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。



_mm512_srlv_epi64

extern __m512i __cdecl _mm512_srlv_epi64(__m512i a, __m512i count);

a のパックド int64 要素を右に count で指定した値だけシフトし、ゼロをシフトインして、結果を格納します。



_mm512_mask_srlv_epi64

extern __m512i __cdecl _mm512_mask_srlv_epi64(__m512i src, __mmask8 k, __m512i a, __m512i count);

a のパックド int64 要素を右に count で指定した値だけシフトし、ゼロをシフトインして、書き込みマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は src の要素がコピーされます)。



_mm512_maskz_srlv_epi64

extern __m512i __cdecl _mm512_maskz_srlv_epi64(__mmask8 k, __m512i a, __m512i count);

a のパックド int64 要素を右に count で指定した値だけシフトし、ゼロをシフトインして、ゼロマスク k を使用して結果を格納します (マスクの対応するビットが設定されていない場合は要素が 0 に設定されます)。