0

CでSSE 4.2組み込み関数を使用してテーブルを比較する2つの文字列を文字ごとに取得するにはどうすればよいですか?

_mm_cmpistrm 重要なビットのマスクを返します。つまり、表の処理結果を比較して char ごとに関数を集計します。

__m128i _mm_cmpistrm (
   __m128i a, 
   __m128i b, 
   const int mode
); 

集計関数を呼び出さずに、テーブルを比較する文字ごとに文字を抽出する方法は? (おそらく_SIDD_UNIT_MASK...)

例:

      A T G A
    A 1 0 0 1
    G 0 0 1 0
    T 0 1 0 0
    C 0 0 0 0

私が実際に必要とするこのテーブル。

_mm_cmpistrm (特定のモード Equal_each で) の結果はマスクです:

    (0 1 1 1)
4

1 に答える 1

1

SSEレジスタには、すべての結果を保持するのに十分なビットがないため、SSE4.2命令は中間テーブルを返しません。(少数の項目のみを検索する場合は可能ですが、一般的には当てはまりません。)テーブルが必要な場合は、垂直列の各文字を一度に1つずつ検索し、自分でテーブルを作成する必要があります。(ごめん。)

于 2012-10-08T17:51:01.850 に答える