問題タブ [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.
assembly - MMX レジスタは最新のプロセッサに常に存在しますか?
最近のプロセッサの図や概要を見ても [1]、MMX レジスタ MM0 ~ MM7 についての言及は見当たりません。でも、スペックからしてまだ残っているようです。SSEをサポートするすべてのプロセッサにそれらが存在することに依存できますか? それらは、さらに古い FPU スタック以外のものと競合しますか? それらは一般的な 64 ビットのものと同じ物理レジスタですか?
ベクトルには XMM と YMM の方がはるかに優れていますが、MMX レジスタを使用して、そうでなければスタックにスピルする値を格納したい場合があります。速度的には、これで少し良くなりました。また、追加のストアとロードを避けたい場合もあります。
assembly - シフトせずに O(1) 時間 (レジスタ x86 または SIMD で動作) のバイナリ対数?
数値のバイナリログを見つける方法があるかどうかを確認したかった. 数字の 4 があるとすると、2 をレイズして 4 を得るベキ乗は 2 です。
これはシフトとカウントで可能ですが、それはO(N)
操作を使用します。どこかへ行く方法はありO(1)
ますか?n
x = 2^n
n
ここをx
ワンオペレーションで知りたいとかO(1)
。
c - 8バイト長整数の各バイトを追加する方法は?
ビデオ アプリケーションで Intel MMX および SSE 命令を使用する方法を学習しています。8 バイトの単語があり、8 バイトすべてを加算して、結果として 1 つの整数を生成したいと考えています。簡単な方法は一連の 7 回のシフトと加算ですが、これでは時間がかかります。これを行う最速の方法は何ですか? このための MMX または SSE 命令はありますか?
これはそれを行う遅い方法です
gcc - gcc の「-march=native」または Core2 チップのその他のフラグによって設定された SSE 命令をアクティブにできません
私のマシンは Core2 マイクロアーキテクチャーで、SSE 命令セットを対象とする算術コードをコンパイルしようとしました。Web と公式マニュアルで検索しましたが、-march=native
私のチップは SSE をサポートしているため、フラグを追加するだけでよいと思います。
しかし gcc -march=native -Q --help=target -v
、フラグが実際に機能するかどうかを確認するために使用すると、画面に表示される結果は期待したものではありません。例:</p>
すべての SSE (および MMX) 命令が無効になっていることがわかりました。誰かがそれを解決する理由と方法を教えてもらえますか? どうもありがとう!</p>
gcc - MOVAPS を使用する x86 からのコンパイル エラー
のコンパイル エラーが発生しましたError: operand type mismatch for 'movaps'
。Google で調べても解決策が見つかりませんでした。movups
またaddps
、同じエラーが発生します。
関連する抜粋を次に示します。
.s
完全を期すために、ファイルをコンパイルしています-m32
.
assembly - 「エラー C2400: 'opcode' のインライン アセンブラー構文エラー」mmx フラグを有効にして ffmpeg をコンパイルする pxor
mmx フラグを有効にして (Visual Studio 2005) ffmpeg をコンパイルしようとしています ( HAVE_MMX ) が、次のエラーが表示されます:「エラー C2400: 'opcode' のインライン アセンブラー構文エラー」
アイデア?
[更新] Jester は、おそらくマクロの問題であると指摘しました。
#define mmx_r2r(op,regs,regd) \
__asm__ volatile (#op " %" #regs ", %" #regd)
直接使用:
動作します (前述のマクロのように) volatile__asm__ pxor mm7 mm7
を追加すると、以前と同じエラー、構文エラーが'opcode' found 'data_type'に発生します。
マクロからvolatileを削除するだけでは機能せず、代わりに'opcode' found '('でエラーが発生します
代わりに括弧を削除すると、 'opcode' found 'bad_token'でエラーが発生します
vectorization - SIMD 整数ストア
SSE 命令を使用して整数値の乗算と加算を行うプログラムを作成しています。フロートで同じプログラムを実行しましたが、整数バージョンの指示がありません。
float を使用すると、すべての操作が完了したら、値を通常の float 配列に戻して次のようにします。
temp4 は float * で、temp3 は __m128 です。
問題は、整数の同様の組み込み関数が見つからないことです。値を通常の配列に戻すにはどうすればよいですか?
回答ありがとうございます ;)