インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
インテル® アドバンスト・ベクトル・エクステンション 2 (インテル® AVX2) は、インテル® AVX の 128 ビット SIMD 整数命令のほとんどを 256 ビットの数値処理に対応するように拡張します。インテル® AVX2 命令のプログラミング・モデルは、インテル® AVX 命令と同じです。
さらに、インテル® AVX2 は、データ要素のブロードキャスト/置換操作、データ要素ごとにシフトカウントの異なるベクトルシフト命令、連続していないデータをメモリーからフェッチする命令において、拡張機能を提供します。
インテル® AVX2 組込み関数には、__m128、__m128i、__m256、および __m256i データ型を使用するベクトル用のバージョンがあります。
これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
インテル® AVX2 組込み関数は、32nm プロセス技術で製造される IA-32 およびインテル® 64 アーキテクチャーでサポートされ、インテル® AVX2 の新しい命令およびその他の 128 ビットの SIMD 拡張命令に直接対応付けられます。
インテル® AVX2 命令は、128 ビット SIMD 整数命令のほとんどを 256 ビット YMM レジスターで動作するように拡張します。インテル® AVX2 命令は VEX プリフィクスを使用してエンコードされており、インテル® AVX と同様にオペレーティング・システムのサポートを必要とします。一般に、256 ビットに拡張されたベクトル整数命令のほとんどは、インテル® AVX の 256 ビット浮動小数点 SIMD 命令と同様に、128 ビットのレーンを処理します。
インテル® AVX2 命令は、大きく次のカテゴリーに分けられます。