問題タブ [avx2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
x86 - AVX2 の _mm_alignr_epi8 (PALIGNR) に相当
SSE3 では、PALIGNR 命令は次のことを実行します。
PALIGNR は、デスティネーション オペランド (第 1 オペランド) とソース オペランド (第 2 オペランド) を中間コンポジットに連結し、バイト粒度でコンポジットを定数即値分だけ右にシフトし、右揃えの結果をデスティネーションに抽出します。
私は現在、SSE4 コードを移植して AVX2 命令を使用し、128 ビットではなく 256 ビット レジスタに取り組んでいる最中です。単純に、組み込み関数_mm256_alignr_epi8
(VPALIGNR) が 256 ビット レジスタに対してのみ同じ操作を実行すると信じていました_mm_alignr_epi8
。残念ながら、そうではありません。実際、_mm256_alignr_epi8
256 ビット レジスタを 2 つの 128 ビット レジスタとして扱い、隣接する 2 つの 128 ビット レジスタに対して 2 つの「整列」操作を実行します。と同じ操作を効果的に実行します_mm_alignr_epi8
が、一度に 2 つのレジスタに対して実行します。ここに最も明確に示されています: _mm256_alignr_epi8
現在、私の解決策は、次のよう_mm_alignr_epi8
に、ymm (256 ビット) レジスタを 2 つの xmm (128 ビット) レジスタ (上位と下位) に分割して使用し続けることです。
これは機能しますが、もっと良い方法があるはずですよね? 同じ結果を得るために使用する必要がある、おそらくより「一般的な」AVX2命令はありますか?
x86 - 256 ビット AVX ベクトルで水平方向の最大値を見つける方法
4 つの 64 ビット浮動小数点値でパックされた __m256d ベクトルがあります。
ベクトルの要素の水平方向の最大値を見つけて、結果を倍精度スカラー値に格納する必要があります。
私の試みはすべて、ベクトル要素のシャッフルを大量に使用することになり、コードはあまりエレガントでも効率的でもありませんでした。また、AVX ドメインだけにとどまることは不可能であることがわかりました。ある時点で、SSE 128 ビット命令を使用して最終的な 64 ビット値を抽出する必要がありました。ただし、この最後のステートメントで私が間違っていることを証明したいと思います。
したがって、理想的なソリューションは次のとおりです
。1) AVX 命令のみを使用します。
2) 命令の数を最小限に抑えます。(私は 3-4 以上の命令を望んでいません)
そうは言っても、上記のガイドラインに準拠していなくても、エレガントで効率的なソリューションは受け入れられます。
助けてくれてありがとう。
-ルイージ
x86 - SSE movlps/movhps のように、AVX/AVX2(YMM) レジスタからメモリに低い値または高い値を格納する方法は?
SSE 命令 movlps/movhps のように、256 ビット AVX/AVX2(YMM) レジスタからメモリ アドレスに低い値または高い値を格納できる既存の命令はありますか?
または、これを実装する他の方法はありますか?
どんな助けでも大歓迎です、ありがとう!
cpu-architecture - AVX2 Haswell プロセッサの 256 ビット ベクトル レジスタへのロード
256 bit YMM
それぞれの長さが 1 バイトの 32 個の値を持つレジスタをロードしたいと考えています。私が調べたすべての組み込み関数はdouble word
、4 byte
整数または値のいずれかをロードquad word
し8 byte
ます。これらよりも小さいサイズのデータをロードする方法は? これを行うニーモニックはありますが、同等の組み込み関数はありませんか?
x86 - AVX2 ギャザー命令使用時のロードアドレス計算
AVX2 組み込みドキュメントを見ると、次のようなロード命令が集められていますVPGATHERDD
。
ドキュメントから明確でないのは、計算されたロード アドレスが 要素アドレスかバイトアドレスか、つまり要素のロード アドレスかどうかi
です。
また:
Intel ドキュメントからは(2) のように見えますが、収集されたロードの最小要素サイズが 32 ビットであることを考えると、これはあまり意味がありません。 ) ?