問題タブ [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.

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

c++ - mm1レジスタパーツへのアクセス

配列のように、mmxレジスタの1バイトにアクセスすることは可能ですか?私はこのコードを持っています:

mm1 [1]、mm1 [2]、mm1 [3]....をc++変数に入れたいのですが、次のようになります。

ありがとう。

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

c++ - SSE組み込み関数のif/elseステートメント

私はSSE組み込み関数を使用して小さなコードを最適化しようとしています(私はこのトピックの完全な初心者です)が、条件の使用に少し固執しています。

私の元のコードは次のとおりです。

このコードの目的は、crcテーブルを計算することです(定数は任意の多項式にすることができ、ここでは役割を果たしません)、

最適化されたコードは次のようになると思います。

if-elseステートメントをどのように処理するかはわかりませんが、巧妙なトリックがあるのではないかと思います。誰かがそれを行う方法についてのアイデアを持っていますか?

(これを除けば、私の最適化はおそらくかなり貧弱です-それに関するアドバイスや修正は最大の共感で扱われます)

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

delphi - Delphi はすべての MMX/SSE 命令をサポートしていますか?

私はこのコードスニペットを持っています:

次のエラーが表示されます。

[パスカル エラー] SDIMAIN.pas(718): E2003 宣言されていない識別子: 'PUNPCKDQ'

それとも、Delphi 2007 は MMX/SSE 命令の完全なセットをサポートしていませんか?

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

optimization - ベクトルの最適化されたビットシフトのためのアセンブリコード

BYTE-> BYTE、WORD-> WORD、DWORD->DWORDおよびWORD-> BYTE(結果に8ビットのみが存在すると仮定)。プロセッサのタイプに応じて、タイプごとに3つのルーチンが必要です(SSE2がサポートされ、MMXのみがサポートされ、標準の命令のみがサポートされます)。したがって、合計12個の関数が必要です。

必要なレジスタをバックアップおよび復元する方法、ループを作成する方法、データを通常のレジスタまたはMMXレジスタにコピーする方法、および論理的に1桁シフトする方法をすでに自分で見つけました。

私はそれについてのアセンブリ言語に精通していないので。各命令セットにどのレジスタを使用する必要がありますか?L1キャッシュ内の大きなベクター(画像)の可用性はどのように最適化されますか?ベクトルの次の要素(ポインターのようなもの)を見つけるにはどうすればよいですか?アドレスで移動できることはわかっていますが、データの種類に応じてアドレスを1、2、または4ずつインクリメントする必要があると思いますか?

私はすべてのアイデアを持っていますが、この時点でコードを書くのは少し難しいです。

ありがとうございました。

アルノー。

編集:これは、DWORDで1シフトするためにMMXに対して実行しようとしていることです。

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

c - MMX演算(add 16bitは行わない)

フレームのピクセルを表す unsigned char を含むベクトルをいくつか取得しました。MMX の改善なしでこの機能が動作するようになりましたが、MMX が動作しないことに不満を感じました...

2 つの unsigned char を追加する必要があります (unsigned char は既知のように 0 ~ 255 になるため、8 ビットではなく 16 ビットとして合計する必要があります)、それらを 2 で割ります (右シフト 1)。これまでに行ったコードは次のとおりですが、値が間違っています。adds_pu16 は 16 ビットを 8 だけ追加しません。


新展開: king_nak さん、ありがとうございます!! 私がやろうとしていることの簡単なバージョンを書きました:



結果は次のとおりです。

和:

分割:

最終結果:

小さい数は問題ありませんが、127 を与える大きな数は間違っています。これは問題です。何が間違っているのですか :s

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

assembly - MMX符号拡張

MMX レジスタを使用して 16 ビット ワードから 32 ビット ワードに符号拡張する方法を知っている人はいますか? MMX レジスタに格納されている 2 つの 16 ビット ワードから 2 つの 32 ビット符号拡張ワードを取得したいと考えています。SSE4 命令は許可されていません。

よろしく

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

assembly - MMXアセンブラ命令を使用したマルチプラス左シフト操作

乗算と(両方とも16ビットの符号付き整数)および乗算結果を算術的に左にシフトする演算shl(mult(var1,var2),1)を実行することを探しています。結果は飽和している必要があります。つまり、オーバーフローまたはアンダーフローが発生した場合はint32maxまたはint32minであり、。multvar1var2shlmult(-32768,-32768)=2147483647

MMX / SSE命令セットを使用すると思われる効率的な方法で、複数の値に対してこの操作を行う必要があります。私は作ることについては考えましたがmult(sign_extesion(var1)shl(sign_extension(var2)))MMXmult()飽和バージョンが存在しないことを発見しました。あなたはそれを手に入れる他の方法を知っていますか?

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

assembly - 飽和状態の32ビットワードを追加する

MMX / SSEアセンブラ命令を使用して飽和32ビット符号付きワードを追加する方法を知っていますか?8/16ビットバージョンは見つかりましたが、32ビットバージョンは見つかりませんでした。

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

visual-studio - 'long long'(または__int64)を__m64に変換する方法

SSEで使用するために__int64値を値に変換する適切な方法は何ですか?__m64

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

jms - WebSphere MQ および mmx : キューに接続できない

WebSphere MQ と mmx を使用していますが、キューに接続しようとしているときに問題に直面しています。

この問題の考えられる原因をお知らせください。関連するすべての変更 (ホスト名:ポート) などを行いました。