Hardware Reference
In-Depth Information
MIPS Floating-Point Operations
Floating-point instructions manipulate the floating-point registers and indicate whether the
operation to be performed is single or double precision. The operations
MOV.S
and
MOV.D
copy
a single-precision (
MOV.S
) or double-precision (
MOV.D
) floating-point register to another register
of the same type. The operations
MFC1
,
MTC1
,
D MFC1
, and
D MTC1
move data between a single
or double floating-point register and an integer register. Conversions from integer to loating
point are also provided, and vice versa.
The floating-point operations are add, subtract, multiply, and divide; a suffix
D
is used for
double precision, and a suffix
S
is used for single precision (e.g.,
ADD.D
,
ADD.S
,
SUB.D
,
SUB.S
,
MUL.D
,
MUL.S
,
DIV.D
,
DIV.S
). Floating-point compares set a bit in the special floating-point status register
that can be tested with a pair of branches:
BC1T
and
BC1F
, branch floating-point true and branch
floating-point false.
To get greater performance for graphics routines, MIPS64 has instructions that perform two
32-bit floating-point operations on each half of the 64-bit floating-point register. These
paired
single
operations include
ADD.PS
,
SUB.PS
,
MUL.PS
, and
DIV.PS
. (They are loaded and stored using
double-precision loads and stores.)
Giving a nod toward the importance of multimedia applications, MIPS64 also includes both
integer and floating-point multiply-add instructions:
MADD
,
MADD.S
,
MADD.D
, and
MADD.PS
. The re-
gisters are all the same width in these combined operations.
Figure A.26
contains a list of a
subset of MIPS64 operations and their meanings.
MIPS Instruction Set Usage
To give an idea of which instructions are popular,
Figure A.27
shows the frequency of instruc-
tions and instruction classes for five SPECint2000 programs, and
Figure A.28
shows the same
data for five SPECfp2000 programs.
Search WWH ::
Custom Search