「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > AVX 組み込み関数を使用して 8 つの浮動小数点数を __m256 変数にロードするにはどうすればよいですか?

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

2024 年 11 月 17 日に公開
ブラウズ:645

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

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

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

AVX2 手順:

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

AVX1 命令:

  1. VPMOVZXBD xmm0, [rsi] を使用して最初の 4 バイトをロードします。
  2. 次の 4 バイトを VPMOVZXBD xmm1 でロードします、[rsi 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 命令に折り込みます。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3