2016-05-07 4 views

答えて

3

制御入力を8ビットの即時に受け取るシャッフルには、まだ_MM_SHUFFLE()を使用します。例えば_mm256_shuffle_epi32vpshufd)は両方のレーンで同じシャッフルを行います。

_MM_SHUFFLE(dd,cc,bb,aa)は、各argの下位2ビットを0bddccbbaaにパックするだけです。

_MM_SHUFFLE(1,1,1,1)(ブロードキャスト要素1)は、0b01010101、つまり0x55と書くことができます。

C++ 14セパレータ(またはそれが呼び出されているもの)を使用して、人間が読みやすくするために0b01'01'01'01と書くことができます。各要素が異なる場合に使用されます。

+0

私はベース-4がバイナリよりもこの場合に優れていると思います。 2つの基底4桁は1つの16進(16進)桁です。例えば、3,1,1,2を3 * 4 + 1、1 * 4 + 2 = 0xdaにシャッフルしたい場合などです。一方、_MM_SHUFFLEは基本的に基数4で読みやすくなっています。 –

+0

@ Zboson:Cでbase-4を使用できますか?私はCでは_MM_SHUFFLEを使用しますが、asmでは '0baabbccdd'を使用します。 '.S'ファイルでは、アセンブルする前にgccがCPPを実行すると思いますが、_MM_SHUFFLEのマクロ定義をコピーすることができます。 –

+0

いいえ、私は頭の中でそれを行い、16進値を書き出すか、コメントを書いています。しかし、 '_MM_SHUFFLE'は基本的に基本4マクロです。 –

関連する問題