8 つの Float をメモリから __m256 変数にロード
目的は、Float バッファ[8]を組み込み変数 __m256 に置き換えることです。これを実現する手順は次のとおりです。
AVX2 手順:
- VPMOVZXBD ymm0, [rsi] を使用して、メモリ内のバイトを 32 にゼロ拡張します。ビット整数。
- VCVTDQ2PS ymm0、ymm0 を使用して整数を浮動小数点数に変換します。
AVX1 命令:
- VPMOVZXBD xmm0 を使用します。 、[rsi] を使用して最初の 4 バイトをロードします。
- VPMOVZXBD xmm1、[rsi 4] を使用して次の 4 バイトをロードします。
- VINSERTF128 を使用して 2 番目のロードを ymm0 の上位 128 ビットに挿入します。 ymm0, ymm0, xmm1, 1.
- VCVTDQ2PS ymm0, ymm0.
最適化のヒント:
- AVX2 の場合は、パフォーマンスのために 128 ビットのブロードキャスト ロードと VPMOVZXBD の使用を検討してください。
- 最適化が失われる可能性があるため、組み込み関数で VPMOVZXBD ymm, [mem] を使用することは避けてください。
- AVX1 の場合、コードを最適化するには、_mm_loadl_epi64 を使用してロードを VPMOVZXBD 命令に組み込みます。
以上がAVX 組み込み関数を使用して 8 つの浮動小数点数を __m256 変数にロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。