
PowerPC 604e RISC Microprocessor Technical Summary
25
— Logical instructions
— Integer rotate and shift instructions
Floating-point instructions—These include floating-point computational instructions, as well as
instructions that affect the FPSCR. Floating-point instructions include the following:
— Floating-point arithmetic instructions
— Floating-point multiply/add instructions
— Floating-point rounding and conversion instructions
— Floating-point compare instructions
— Floating-point move instructions
— Floating-point status and control instructions
— Optional floating-point instructions (listed with the optional instructions below)
The 604e supports all IEEE 754-1985 floating-point data types (normalized, denormalized, NaN,
zero, and infinity) in hardware, eliminating the latency incurred by software exception routines.
The PowerPC architecture also supports a non-IEEE mode, controlled by a bit in the FPSCR. In this
mode, denormalized numbers, NaNs, and some IEEE invalid operations are not required to conform
to IEEE standards and can execute faster. Note that all single-precision arithmetic instructions are
performed using a double-precision format. The floating-point pipeline is a single-pass
implementation for double-precision products. Except for divide instructions, a single-precision
instruction using only single-precision operands in double-precision format performs the same as
its double-precision equivalent.
Load/store instructions—These include integer and floating-point load and store instructions.
— Integer load and store instructions
— Integer load and store multiple instructions
— Integer load and store string instructions
— Floating-point load and store
Flow control instructions—These include branching instructions, condition register logical
instructions, trap instructions, and other instructions that affect the instruction flow.
— Branch and trap instructions
— System call and
rfi
instructions
— Condition register logical instructions
Synchronization instructions—The PowerPC architecture defines instructions for memory
synchronizing, especially useful for multiprocessing:
— Load and store with reservation instructions—These UISA-defined instructions provide
primitives for synchronization operations such as test and set, compare and swap, and compare
memory.
— The Synchronize (
sync
) instruction—This UISA-defined instruction is useful for
synchronizing load and store operations on a memory bus that is shared by multiple devices.
— The Enforce In-Order Execution of I/O (
eieio
) instruction—The
eieio
instruction, defined by
the VEA, can be used instead of the
sync
instruction when only memory references seen by
I/O devices need to be ordered.
— The Instruction Synchronize (
isync
) instruction waits until all previous instructions have
completed and discards and then refetches any subsequent instructions to ensure that those
instructions complete in the context established by the previous instructions.