AVX 組み込み関数を使用して 8 つの浮動小数点数を __m256 変数にロードするにはどうすればよいですか?

DDD
リリース: 2024-11-02 00:22:30
オリジナル
786 人が閲覧しました

How to Load 8 Floats into an __m256 Variable Using AVX Intrinsics?

8 つの Float をメモリから __m256 変数にロード

目的は、Float バッファ[8]を組み込み変数 __m256 に置き換えることです。これを実現する手順は次のとおりです。

AVX2 手順:

  1. VPMOVZXBD ymm0, [rsi] を使用して、メモリ内のバイトを 32 にゼロ拡張します。ビット整数。
  2. VCVTDQ2PS ymm0、ymm0 を使用して整数を浮動小数点数に変換します。

AVX1 命令:

  1. VPMOVZXBD xmm0 を使用します。 、[rsi] を使用して最初の 4 バイトをロードします。
  2. VPMOVZXBD xmm1、[rsi 4] を使用して次の 4 バイトをロードします。
  3. VINSERTF128 を使用して 2 番目のロードを ymm0 の上位 128 ビットに挿入します。 ymm0, ymm0, xmm1, 1.
  4. VCVTDQ2PS ymm0, ymm0.

最適化のヒント:

  • AVX2 の場合は、パフォーマンスのために 128 ビットのブロードキャスト ロードと VPMOVZXBD の使用を検討してください。
  • 最適化が失われる可能性があるため、組み込み関数で VPMOVZXBD ymm, [mem] を使用することは避けてください。
  • AVX1 の場合、コードを最適化するには、_mm_loadl_epi64 を使用してロードを VPMOVZXBD 命令に組み込みます。

以上がAVX 組み込み関数を使用して 8 つの浮動小数点数を __m256 変数にロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート