9 fmac, fnmac, fmsc, and fnmsc – ARM VERSION 1.2 User Manual

Page 265

Advertising
background image

Vector Floating-point Programming

ARM DUI 0068B

Copyright © 2000, 2001 ARM Limited. All rights reserved.

6-27

6.7.9

FMAC, FNMAC, FMSC, and FNMSC

Floating-point multiply-accumulate, negate-multiply-accumulate, multiply-subtract
and negate-multiply-subtract. These instructions can be scalar, vector, or mixed (see
Vector and scalar operations on page 6-7).

Syntax

<op><precision>{cond} Fd, Fn, Fm

where:

<op>

must be one of

FMAC

,

FNMAC

,

FMSC

, or

FNMSC

.

<precision>

must be either

S

for single-precision, or

D

for double-precision.

cond

is an optional condition code (see VFP and condition codes on page 6-8).

Fd

is the VFP register for the result.

Fn

is the VFP register holding the first operand.

Fm

is the VFP register holding the second operand.

The precision of

Fd

,

Fn

and

Fm

must match the precision specified in

<precision>

.

Usage

The

FMAC

instruction calculates

Fd

+

Fn

*

Fm

and places the result in

Fd

.

The

FNMAC

instruction calculates

Fd

Fn

*

Fm

and places the result in

Fd

.

The

FMSC

instruction calculates –

Fd

+

Fn

*

Fm

and places the result in

Fd

.

The

FNMSC

instruction calculates –

Fd

Fn

*

Fm

and places the result in

Fd

.

Exceptions

These operations can produce Invalid Operation, Overflow, Underflow, or Inexact
exceptions.

Examples

FMACD d8, d0, d8
FMACS s20, s24, s28

Advertising