sse

    5

    2答えて

    ビットがすべての変数を移動するように、mビットで__m128i変数(たとえばv)をシフトする必要があります(結果変数はv * 2^mを表します)。 これを行う最善の方法は何ですか? 別々V0シフトを_mm_slli_epi64とV1注: r0 := v0 << count r1 := v1 << count のでV0の最後のビットは逃したが、私はR1にそれらのビットを移動したいです。 編集:

    9

    3答えて

    __m128の値で動作するコードがあります。私はこれらの値にx86-64 SSE組み込み関数を使用しています。値がメモリ内でアライメントされていないとクラッシュします。これは私のコンパイラ(この例ではclang)が整列したロード命令だけを生成するためです。 グローバルに、または特定の値(おそらく種類のアノテーションを含む)の代わりに、アライメントされていないロードを生成するようにコンパイラに指示で

    8

    1答えて

    私は(SSE4.1)固有のSIMDとC++で実装されてgithubのからthis projectをコンパイルしようとしています。 githubのプロジェクトはVisual Studioのソリューションとして提供されていますが、Qtcreatorでcmakeを使って移植しようとしています。私はそれをコンパイルしようとしている一方で、私は次のエラーを取得する:私はそれがSSE最適化の一部に関係している

    14

    1答えて

    System.Numerics.Vector<T>を使用するC#コードを実行していますが、SIMD組み込み関数の利点をすべて得ることはできません。私はUpdate 1でVisual Studio Community 2015を使用していますが、私のclrjit.dllはv4.6.1063.1です。 AVX命令セット拡張機能を実装しているIntel Core i5-3337U Processorで動

    6

    1答えて

    これまでのところ、私がいることを見つけるために管理している: SSEとSSE2は、Windows 8のために必須であり、後に(そしてもちろん、任意の64ビットOS用)AVXが唯一のWindows 7 SP1でサポートされていますまたはそれ以降 WindowsでSSE3、SSSE3、SSE4.1、SSE 4.2、AVX2、およびAVX-512を使用する際には注意が必要ですか? いくつかの説明:SSE

    5

    1答えて

    誰かが次のコードの機能を説明できますか? addsd xmm0, ds:[email protected][edx*8] は、私はいくつかの値がXMM0登録float型に追加されていることを考え出したが、41f00000000000000000000000000000定数@ __xmmの意味は何ですか?私がそれについて読むことができる文書はありますか? は、ここで私は理解しようとしているコード

    1

    2答えて

    別のベクトルの周りのベクトルを所定の角度に回転させるコードがあります。私はクォータニオンを使用し、これを行うにはfast formulaです。私は、SIMDコンパイラ組み込み関数を使用する場合と使用しない場合の2つの変種を記述しました。 バリアント1: #include <xmmintrin.h> #include <pmmintrin.h> #include "test2.h" stat

    8

    3答えて

    私は画像処理を扱います。私は当然知っている255は2 のパワーの倍数ではないので、私は、)(_mm_srli_epi16ようにシフト演算子を使用することはできません255 により16ビット整数SSEベクトルを分割する必要 整数を浮動小数点に変換し、除算を行った後、整数に変換することができます。 しかし、誰かが別の解決策を知っているかもしれない...

    1

    1答えて

    MSVC v140でコンパイルされた小さなC++プログラムを逆アセンブルし、コード設計がパフォーマンスにどのように影響するかをよりよく理解するために、1命令あたりのサイクル数を見積もっています。私は"Data-Oriented Design and C++"のマイク・アクトンのCppCon 2014講演、特に私がリンクした部分に従っています。それに 、彼はこれらの行を指摘する: movss 8(%

    1

    1答えて

    GCCのasmを使用して実際のアプリケーションを実行するための基本機能をいくつか書いています。 私の関数pretty,wrap、およびpureは、64ビット整数を128ビットベクトルにアンパックするのと同じ命令を生成します。 およびwrapをそれぞれ呼び出すadd1およびadd2も同じ命令を生成します。しかしadd3は、xmm0レジスタを別のxmmレジスタにコピーするのではなく、スタックにプッシュ