• 検索結果がありません。

・ SSE3

5.7. SSE3

SSE3 では、 SSE テクノロジ、 SSE2 テクノロジ、および x87-FP 演算機能の性能を高め

13

個の命令が追加されている。SSE3 は、以下のカテゴリに分けられる。

整数変換で使用される

x87FPU

命令

×1

アライメントの合っていないデータロードに対処する SIMD 整数命令

×1

・ SIMD 浮動小数点パックド加算/

減算命令

×2

・ SIMD

浮動小数点水平加算

/

減算命令

×4

・ SIMD 浮動小数点ロード /

転送

/

複製命令

×3

スレッド同期化命令

×2

SSE3

は、

SSE3

をサポートする

IA-32

プロセッサ上でのみ実行できる。プロセッサが

SSE3

をサポートしているかどうかは、

CPUID

命令によって検出できる(『

IA-32

インテル®アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル、中巻

A

』 の第

3

章「命令セット・リファレンス

A-M

」の

CPUID

命令の説明を参照)。

以下の各項では、各サブグループについて説明する。

5.7.1. SSE3 x87-FP

整数変換命令

FISTTP Behaves like the FISTP instruction but uses truncation, irrespective of the rounding mode specified in the floating-point control word (FCW).

FISTP 命令と同様の動作をするが、浮動小数点制御ワード(FCW)

で指定された丸めモードにかかわらず切り捨てを使用

5.7.2.

アライメントの合っていない

SSE3

専用

128

ビット・データ・ロード命

LDDQU Special 128-bit unaligned load designed to avoid cache line splits.

キャッシュ・ラインの分割を防止するように設計された、アライ メントの合っていない専用128ビット・ロード

命令セットの要約

5

5.7.3. SSE3 SIMD 浮動小数点パックド加算 /

減算命令

ADDSUBPS Performs single-precision addition on the second and fourth pairs of 32-bit data elements within the operands; and single-precision subtraction on the first and third pairs.

オペランド内の32ビット・データ要素の2番目と4番目のペア に対して単精度の加算を実行、1番目と3番目のペアに対して単 精度の減算を実行

ADDSUBPD Performs double-precision addition on the second pair of quadwords, and double-precision subtraction on the first pair.

クワッドワードの 2 番目のペアに対して倍精度の加算を実行、1 番目のペアに対して倍精度の減算を実行

5.7.4. SSE3 SIMD

浮動小数点水平加算

/

減算命令

HADDPS Performs a single-precision addition on contiguous data elements. The first data element of the result is obtained by adding the first and second elements of the first operand; the second element by adding the third and fourth elements of the first operand; the third by adding the first and second elements of the second operand; and the fourth by adding the third and fourth elements of the second operand.

隣接したデータ要素に対して単精度の加算を実行。結果中の最初 のデータ要素は、第1オペランド中の1番目と2番目の要素を足 して得られたものである。同様に、2番目のデータ要素は第1オ ペランド中の3番目と4番目の要素を、3番目のデータ要素は第 2オペランド中の1番目と2番目の要素を、4番目のデータ要素 は第2オペランド中の3番目と4番目の要素をそれぞれ足して得 られたものである

HSUBPS Performs a single-precision subtraction on contiguous data elements. The first data element of the result is obtained by subtracting the second element of the first operand from the first element of the first operand; the second element by subtracting the fourth element of the first operand from the third element of the first operand; the third by subtracting the second element of the second operand from the first element of the second operand; and the fourth by subtracting the fourth element of the second operand from the third element of the second operand.

隣接したデータ要素に対して単精度の減算を実行。結果中の最初 のデータ要素は、第1オペランド中の1番目の要素から第1オペ ランド中の 2 番目の要素を引いて得られたものである。同様に、

2番目のデータ要素は第1オペランド中の3番目の要素から第1 オペランド中の4番目の要素を、3番目のデータ要素は第2オペ ランド中の1番目の要素から第2オペランド中の2番目の要素を、

4番目のデータ要素は第2オペランド中の3番目の要素から第2 オペランド中の4番目の要素をそれぞれ引いて得られたものであ る

IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻:基本アーキテクチャ

5-40

HADDPD Performs a double-precision addition on contiguous data elements. The first data element of the result is obtained by adding the first and second elements of the first operand; the second element by adding the first and second elements of the second operand.

隣接したデータ要素に対して倍精度の加算を実行。結果中の最初 のデータ要素は、第1オペランド中の1番目と2番目の要素を足 して得られたものである。同様に、2番目のデータ要素は第2オ ペランド中の1番目と2番目の要素を足して得られたものである HSUBPD Performs a double-precision subtraction on contiguous data elements. The first data element of the result is obtained by subtracting the second element of the first operand from the first element of the first operand; the second element by subtracting the second element of the second operand from the first element of the second operand.

隣接したデータ要素に対して倍精度の減算を実行。結果中の最初 のデータ要素は、第1オペランド中の1番目の要素から第1オペ ランド中の 2 番目の要素を引いて得られたものである。同様に、

2番目のデータ要素は第2オペランド中の1番目の要素から第2 オペランド中の2番目の要素を引いて得られたものである

5.7.5. SSE3 SIMD

浮動小数点ロード

/

転送

/

複製命令

MOVSHDUP Loads/moves 128-bits, duplicating the second and fourth 32-bit data elements.

128ビットをロード/転送し、2番目と4番目の32ビット・デー タ要素を複製

MOVSLDUP Loads/moves 128-bits, duplicating the first and third 32-bit data elements.

128ビットをロード/転送し、1番目と3番目の32ビット・デー タ要素を複製

MOVDDUP Loads/moves 64-bits (bits[63-0] if the source is a register) and returns the same 64 bits in both the lower and upper halves of the 128-bit result register.

This duplicates the 64 bits from the source.

64ビット(ソースがレジスタの場合はビット[63~0])をロード /転送し、128ビットの結果レジスタの下位半分と上位半分で同じ 64ビットを返す。これにより、ソース中の64ビットが複製される

5.7.6. SSE3

エージェント同期化命令

MONITOR Sets up an address range used to monitor write-back stores.

ライトバック・ストアの監視に使用されるアドレス範囲をセット アップ

MWAIT Enables a logical processor to enter into an optimized state while waiting for a write-back store to the address range set up by the MONITOR instruction.

MONITOR 命令でセットアップされたアドレス範囲へのライト

バック・ストアを待機する間に、論理プロセッサを最適化された 状態にすることができる

命令セットの要約

5