問題タブ [intrinsics]

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.

0 投票する
2 に答える
279 参照

assembly - SSE 組み込み関数からアセンブラーへの変換ガイドはどこにありますか

SSE2 アセンブラーで何かをプログラムする必要があります。
私が見るのは組み込み関数だけです。

組み込み関数からアセンブラーへの変換テーブルを探していましたが、無駄でした。
私は推測ゲームをしたくないので、誰かがこれらのひどい組み込み関数をきれいなアセンブリに変換するためのリンクを教えてください。

SSE/SSE2 整数命令のみが必要です。

そして、C(++) だけを使うように言わないでください。私にはそのオプションがありませんし、したくもありません。

翻訳ガイドはどこで入手できますか?

EDIT
リンクをありがとう、しかし私はまだ複合組み込み関数の翻訳を持っていません.誰かがそのリンクを持っていますか? それは本当に物事をスピードアップします。:-)

0 投票する
1 に答える
1356 参照

c# - C#でプラグマ組み込み(sqrt、pow)を使用していますか?

C++ のまとめ

コードのプリプロセッサ セクションでコマンドを使用する#pragma intrinsicと、ほとんどの数学関数呼び出しの速度が大幅に向上します。

上記のコードでは、ほとんどの数学関数呼び出しを、関数スタックに送信するのではなく、数学コプロセッサに直接送信できます。

質問

C#でこれを行う方法はありますか? 組み込み関数を書き直して同様のことを行う以外は。たとえば、2 の累乗を行うのが一般的であるため、これは適切ですが、私が探しているものではありません。

0 投票する
2 に答える
1399 参照

intrinsics - AVX _m256_unpack*_ps unpack 組み込みからの予期しない結果

_m256_unpacklo_psAVX 組み込みのアンパック命令を使用して、 _m256_unpackhi_ps16 個の float 値をインターリーブしようとしています。AVX でアンパックがどのように機能するかを理解していないか、何かが正常に機能していないため、得られた結果は奇妙です。

私が見ているのは、たとえば、2 つのベクトル v1 と v2 から低次浮動小数点数を 3 番目の v3 にアンパックしようとすると、次のように表示されることです。

v1 が [a b c d e f g h] v1 の場合[i j k l m n o p]

その後v3 = _m256_unpacklo_ps(v1, v2)[a i b j e m f n]

v3が与えると思ったとき[a i b j c k d l]

私の期待は間違っていますか、それともこれを間違って使用していますか? それとも他の何かが故障していますか?

テストコードは次のとおりです。

コンパイルに gcc 4.5.2 を使用しています。

助けてくれてありがとう!- ジャスティン

0 投票する
1 に答える
6412 参照

android - NEON 組み込み関数を使用した浮動小数点数による除算

私はarmv7、Android アプリケーション用に、一度に 4 ピクセルで画像を処理しています。

float32x4_tベクトルを別のベクトルで除算したいのですが、その中の数値は から までさまざまです。除算0.7する3.85唯一の方法は右シフトを使用することですが、それは数値 です2^n

また、私はこれが初めてなので、建設的な助けやコメントを歓迎します。

例:

これらの操作を NEON 組み込み関数で実行するにはどうすればよいですか?

0 投票する
2 に答える
1281 参照

android - ネオン組み込み関数のフロートとの比較

これはばかげた問題だと思いますが、運が悪かったので、これを解決するために1日試しました。

私は 4 つのベクトル (float32x4) のレジスタを持っており、そのうちのいくつかに何らかのプロセスを作成し、もう 1 つを 0 に設定したいと考えています。

たとえば、cのこの問題:

最初のものは処理されませんが、他のものは処理されます。そのため、最初のレーンに 0 があり、もう 1 つのレーンに結果があるレジスタが必要です。

しかし、ネオン組み込みでこれを行う方法がわかりません。

vcltq_f32 があることは知っていますが、これを試してみましたが、結果はありませんでした。

0 投票する
2 に答える
10875 参照

simd - SIMD 組み込み関数のリファレンス マニュアル/チュートリアル?

これらを使用して一部のコードのパフォーマンスを改善することを検討していますが、* mmintrin.h ヘッダーで定義されている関数については適切なドキュメントを見つけるのが難しいようです。

EDIT:開始方法に関する非常に基本的なチュートリアルに特に興味があります。

0 投票する
2 に答える
461 参照

assembly - SSE2 assembly-overflow using intrinsics

I am new to SSE and SSE2, and I wrote a small C sample (allocating two counters, one increasing other decreasing than adding the two), which is working as expected. I used intrinsics and Microsoft Visual Studio 10 C++ Express. As second step I wanted to understand what's going on under the hood, but I'm puzzled now. For example the assignment operation in the for loops compiles to:

I understand that the first two lines gets the components of a_aligned's address, and the third line copies it to the xmm0 register. But I don't understand why it's copied back to memory, than to xmm0 again (than to a_ptr). I though that the _mm_load_si128 intrinsic should copy a_aligned[i]'s 128 bits to xmm0 and nothing more. Why is this happened? Am I wrong theoretically? If not how should I hint the compiler? Is my sample code correct (in sense that it doesn't have unnecessarities)? Here is my full sample code:

0 投票する
1 に答える
826 参照

macos - OSX Accelerate フレームワークでの float 選択の 4-way SIMD バージョンは何ですか?

OSX のAccelerate フレームワークを使用すると、ベクトル float、ベクトル int、およびベクトル bool を操作できる 4 方向の SIMD 機能にアクセスできます。それはあなたに4方向の除算、例えば4方向のsin、cos、tanなどを提供します.

4 つの float の vector float の場合、フレームワークはvFloatを提供します。4 つの bool のベクトル bool の場合、フレームワークはvBool32を提供します。

私が達成しようとしているのは、このコード行の 4-way SIMD バージョンです。

たとえば、Cell プロセッサでは、組み込みの 'spu_sel(val1, val2, conditional)' を使用します。

4方向の選択を次のように書き留めてみました。

...これは '?' として LLVM コンパイラによって受け入れられません。operator は vBool32 を受け入れません。また、上記の Web ページには、「vsel」または「vself」などと呼ばれる演算子はありません。このフレームワークで使用可能な浮動小数点選択はありますか? もしそうなら、どのようにアクセスするのですか?

0 投票する
2 に答える
1954 参照

sse - 2つのアラインされていない64ビット値をSSSE3のsseレジスタにロードする最良の方法は何ですか?

xmmレジスタにロードされる2つのアラインされていない8バイトチャンクへの2つのポインタがあります。可能であれば、組み込み関数を使用します。そして、可能であれば、補助レジスタを使用せずに。ピンなし。(SSSEコア2)

0 投票する
3 に答える
516 参照

c++ - VC++ インライン アセンブラーを組み込み関数に変換するスクリプトはどこにありますか?

SSE コマンドを使用するインライン アセンブラを組み込み関数に移植しています。アセンブラ命令に適した組み込み関数を見つけるには、多くの作業が必要です。インターネットのどこかで、この作業を簡素化する Python スクリプトを見ましたが、今は見つかりません。