FMA3
読み:エフエムエイ-スリー
外語:FMA3: three-operand Fused Multiply/Add

 オペランドが3つあるFMA(積和演算)命令で、特にx86に搭載されている命令セットの一部をいう。
目次

概要
 IntelIntel AVXの一部として導入した。
 元々は4オペランドのFMA4を発表していたが、命令長が長くなること、そして命令デコーダーが肥大化することを懸念し、最終的に3オペランドのFMA3となった。
 オペコードは当初発表していたFMA4とは異なるものが割り当てられた。
 AMDBulldozerは、後から発表されたFMA3の搭載が間に合わない代わりにFMA4が搭載され、FMA3はTrinity(Piledriverなど)から対応した。
 なお、Microsoft Visual Studioの実装では、FMA3も含めて「FMA4」と呼んでいるようなので、注意が必要である。

特徴

VEX
 VEXを使っての符号化でのみ動作する命令である。
 VEX.L=1で、ymmおよびm256命令にできる命令が多い。
 ss/sdまたはps/pdは、VEX.W=0/1で切り換える。

符号
 66 0F 38 xx /r相当の機械語をVEX符号化したものを使う。

命令
 3つのオペランドを、それぞれ132/213/231として扱うため3種類の命令がある。
 順番が異なるだけで、命令の種類は同じ。分かりにくくなるが、3種類全ての命令を以下に一覧する。

再検索