sse

    2

    1答えて

    SSEプログラミングの初心者ですので、誰かが私を助けてくれることを願っています。私は最近、GCC SSE組み込み関数を使用して32ビット整数の配列の合計を計算する関数を実装しました。私の実装のコードを以下に示します。 int ssum(const int *d, unsigned int len) { static const unsigned int BLOCKSIZE=4;

    1

    2答えて

    32ビットオペレーティングシステムで128ビットレジスタXMM0を使用して、charポインタ配列との間でメモリをロード/ストアしようとしています。私が試した何 は非常に簡単です: int main() { char *data = new char[33]; for (int i = 0; i < 32; i++) data[i] = 'a'; data[

    1

    1答えて

    私はサウンドミキサーを実装していますが、SIMD命令を使用しなくてもうまく動作しますが、サウンドデータを別々のチャネルに抽出する方法はわかりません。 私のデータはインターリーブ形式になります:L0R0 L1R1 L2R2 L3R3 ... 同じフォーマットで__m128iにロードするので、レジスタに4つのサンプルがあります。 私はそれらを別々のチャンネルにしたいと思います:L0L1L2L3 R0R

    0

    1答えて

    一部のCコードでAVX2命令を使用しています。 VPERMD命令はidxに基づいaを置換することによって、2つの8整数ベクトルaとidxを取り、第三のいずれかを生成する、dst。これはdst[i] = a[idx[i]] for i in 0..7に相当します。このソースは、ソースに基づいてインデックス付けされているため、このソースをベースとしています。 ただし、計算されたインデックスは宛先ベース

    4

    1答えて

    私は特別な使用事例を念頭に置いていません。私はこれが本当にインテルの組み込み関数の設計上の瑕疵/制限であるのか、それとも何か不足しているのかどうかを尋ねています。 スカラー浮動小数点を既存のベクトルに結合する場合、インテルの組み込み関数を使用して、要素の高精度化やベクトルへのスカラーのブロードキャストを行わない方法はありません。私はGNU Cのネイティブベクトル拡張と関連する組み込み関数については

    1

    1答えて

    最近、fp番号の小さなプログラムを書いていました。 まず、私はその後、私は二重の移動 segment .data scanf_fmt: db "%f%ld", 0 segment .bss align 16, db 0 x resq 1 ; for double fp number resq 1 ; for integer align 16,

    2

    2答えて

    私は8台の山車、内部の要素を格納するために使用され__m256を、持っているようなものです:ここ __m256 dst = {0,1,2,4,5,6,x,x}; X:今、私は次のような値の別の__m256を取得したい __m256 v = {0,1,2,3,4,5,6,7}; 私が気にしないことを意味します。 私はSIMDに精通していませんが、誰も助けることができますか?または私にいくつか

    1

    3答えて

    popcntとSSE4.2を使用して、CPUのアレイの近似平方根をより速く計算するにはどうすればよいですか? 入力は、浮動小数点配列に格納された正の整数(0〜約200,000の範囲)です。 出力は浮動小数点数の配列です。 どちらのアレイも、sseの正しいメモリ配置を持っています。 コードのみ1つのXMMレジスタを使用して下には、Linux上で動作し、ありがとうgcc -O3 code.cpp -l

    2

    1答えて

    ゼロにされた128ビットのレジスタがあります。左にシフトしてバイトを追加します。私はそれをシフトすることができます: pslldq xmm0, 1 ...しかし、私は空のスペースにalをコピーしたいと思います。次のようなものがあります: or xmm0, al もちろん動作しません。私は影響を受けた最も低い8ビットのみを必要とします。これはループの中で、レジスタの充填にalの連続する値が使

    2

    1答えて

    私はxmm0の0 .. 12の範囲内の8つの符号なし8ビット数のベクトルを持っています。私は、ベクトルの各要素eで次の変換を実行します: if (e != 12) e = 11 - e; 、番号0、1、...、11は、10、11に変更されていることを...、0〜12のに対し、変更されません。他の値は発生しません、私はそれらに何が起こるか気にしません。 この操作をSSE4命令セットで効