問題タブ [mmx]
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.
gcc - GCC 5.3 i686 ホスト ツールチェーンを使用して i586 ターゲット用にビルドする必要がある
i686 ホスト環境 (32 ビット Ubuntu Docker コンテナー) 内で GCC 5.3 を使用して、i586 ターゲット (MMX 命令なし) 用にビルドする必要があります。ホスト ツールチェーンは i686 です。i586クロスコンパイラを構築せずにこれを行う方法はありますか?
visual-c++ - MSVCで2つの__m128dから1つの__m128iに効率的に変換するには?
__m128d
2から1 に変換する唯一の方法は、変換してからシフトしてからビット単位の論理和をとること__m128i
ですか?
これは、x64 ビルドの Xcode には完全に受け入れられます。
そして分解は使用されていることを示し_mm_cvtpd_pi32
ています。ただし、Visual Studio はこれをコンパイルできず、リンカー エラーが発生します。これは VS ドキュメントでサポートされており_mm_cvtpd_pi32
、x64 ではサポートされていません。
利用できないことをあまり心配していませんが、2回の変換、シフト、そしてビットごとの変換が最速の方法ですか?
sse - _mm_mul_ps() はどのようにして 2 つの __m128 を追加しますか?
私は、2 つの行列 4x4 を受け取り、組み込み関数を使用してそれらを乗算するプログラムを実行しています。私が今まで理解していること:
- MMX/SSE 命令セットにより、コンピューティングを高速化できます。特に、4 バイトの要素ベクトルを使用します。
__m128
16 バイトのベクトル (4 バイトの 4 つの要素) を表します。さらに、機能するためには__m128
データを整列させる必要があります。
私が迷子になる場所はここにあります:
_mm_mul_ps(_m128, _m128)
(私が読んだように)4バイトの4つのflotatの16バイトの2つのベクトルを取る関数。2 つのベクトルを「1 対 1」で乗算し、 を返します_m128
。しかし、その_m128
ベクトルには正確に何が含まれていますか (何の結果)?- 関数
_mm_hadd_ps(_m128, _m128)
は、2 つの 16 バイトのベクトル (それぞれ 4 バイトの float) を追加します。このように「水平に追加」します。
vectorA(a1, a2, a3,a4) + vectorB(b1, b2, b3, b4) = vectorResult(a1 + a2, a3 + a4, b1 + b2, b3 + b4)
私がやろうとしていること:
機能がどのように機能するかわかりません (「心的イメージ」がありません)。