問題タブ [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.
c++ - mm1レジスタパーツへのアクセス
配列のように、mmxレジスタの1バイトにアクセスすることは可能ですか?私はこのコードを持っています:
mm1 [1]、mm1 [2]、mm1 [3]....をc++変数に入れたいのですが、次のようになります。
ありがとう。
c++ - SSE組み込み関数のif/elseステートメント
私はSSE組み込み関数を使用して小さなコードを最適化しようとしています(私はこのトピックの完全な初心者です)が、条件の使用に少し固執しています。
私の元のコードは次のとおりです。
このコードの目的は、crcテーブルを計算することです(定数は任意の多項式にすることができ、ここでは役割を果たしません)、
最適化されたコードは次のようになると思います。
if-elseステートメントをどのように処理するかはわかりませんが、巧妙なトリックがあるのではないかと思います。誰かがそれを行う方法についてのアイデアを持っていますか?
(これを除けば、私の最適化はおそらくかなり貧弱です-それに関するアドバイスや修正は最大の共感で扱われます)
delphi - Delphi はすべての MMX/SSE 命令をサポートしていますか?
私はこのコードスニペットを持っています:
次のエラーが表示されます。
[パスカル エラー] SDIMAIN.pas(718): E2003 宣言されていない識別子: 'PUNPCKDQ'
それとも、Delphi 2007 は MMX/SSE 命令の完全なセットをサポートしていませんか?
optimization - ベクトルの最適化されたビットシフトのためのアセンブリコード
BYTE-> BYTE、WORD-> WORD、DWORD->DWORDおよびWORD-> BYTE(結果に8ビットのみが存在すると仮定)。プロセッサのタイプに応じて、タイプごとに3つのルーチンが必要です(SSE2がサポートされ、MMXのみがサポートされ、標準の命令のみがサポートされます)。したがって、合計12個の関数が必要です。
必要なレジスタをバックアップおよび復元する方法、ループを作成する方法、データを通常のレジスタまたはMMXレジスタにコピーする方法、および論理的に1桁シフトする方法をすでに自分で見つけました。
私はそれについてのアセンブリ言語に精通していないので。各命令セットにどのレジスタを使用する必要がありますか?L1キャッシュ内の大きなベクター(画像)の可用性はどのように最適化されますか?ベクトルの次の要素(ポインターのようなもの)を見つけるにはどうすればよいですか?アドレスで移動できることはわかっていますが、データの種類に応じてアドレスを1、2、または4ずつインクリメントする必要があると思いますか?
私はすべてのアイデアを持っていますが、この時点でコードを書くのは少し難しいです。
ありがとうございました。
アルノー。
編集:これは、DWORDで1シフトするためにMMXに対して実行しようとしていることです。
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
assembly - MMX符号拡張
MMX レジスタを使用して 16 ビット ワードから 32 ビット ワードに符号拡張する方法を知っている人はいますか? MMX レジスタに格納されている 2 つの 16 ビット ワードから 2 つの 32 ビット符号拡張ワードを取得したいと考えています。SSE4 命令は許可されていません。
よろしく
assembly - MMXアセンブラ命令を使用したマルチプラス左シフト操作
乗算と(両方とも16ビットの符号付き整数)および乗算結果を算術的に左にシフトする演算shl(mult(var1,var2),1)
を実行することを探しています。結果は飽和している必要があります。つまり、オーバーフローまたはアンダーフローが発生した場合はint32maxまたはint32minであり、。mult
var1
var2
shl
mult(-32768,-32768)=2147483647
MMX / SSE命令セットを使用すると思われる効率的な方法で、複数の値に対してこの操作を行う必要があります。私は作ることについては考えましたがmult(sign_extesion(var1)
、shl(sign_extension(var2)))
MMXmult()
飽和バージョンが存在しないことを発見しました。あなたはそれを手に入れる他の方法を知っていますか?
assembly - 飽和状態の32ビットワードを追加する
MMX / SSEアセンブラ命令を使用して飽和32ビット符号付きワードを追加する方法を知っていますか?8/16ビットバージョンは見つかりましたが、32ビットバージョンは見つかりませんでした。
visual-studio - 'long long'(または__int64)を__m64に変換する方法
SSEで使用するために__int64
値を値に変換する適切な方法は何ですか?__m64
jms - WebSphere MQ および mmx : キューに接続できない
WebSphere MQ と mmx を使用していますが、キューに接続しようとしているときに問題に直面しています。
この問題の考えられる原因をお知らせください。関連するすべての変更 (ホスト名:ポート) などを行いました。