Contents
vi
SPRU733
Contents
3
Instruction Set
3-1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Describes the assembly language instructions of the TMS320C67x DSP. Also described are
parallel operations, conditional operations, resource constraints, and addressing modes.
3.1
Instruction Operation and Execution Notations
3-2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2
Instruction Syntax and Opcode Notations
3-7
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3
Overview of IEEE Standard Single- and Double-Precision Formats
3-9
. . . . . . . . . . . . . . . .
3.4
Delay Slots
3-14
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5
Parallel Operations
3-16
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.1
Example Parallel Code
3-18
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5.2
Branching Into the Middle of an Execute Packet
3-18
. . . . . . . . . . . . . . . . . . . . . . . .
3.6
Conditional Operations
3-19
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7
Resource Constraints
3-20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.1
Constraints on Instructions Using the Same Functional Unit
3-20
. . . . . . . . . . . . . .
3.7.2
Constraints on the Same Functional Unit Writing in the
Same Instruction Cycle
3-20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.3
Constraints on Cross Paths (1X and 2X)
3-21
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.4
Constraints on Loads and Stores
3-22
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.5
Constraints on Long (40-Bit) Data
3-23
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.6
Constraints on Register Reads
3-24
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.7
Constraints on Register Writes
3-25
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7.8
Constraints on Floating-Point Instructions
3-26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8
Addressing Modes
3-30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8.1
Linear Addressing Mode
3-30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8.2
Circular Addressing Mode
3-31
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8.3
Syntax for Load/Store Address Generation
3-32
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.9
Instruction Compatibility
3-34
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.10 Instruction Descriptions
3-34
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ABS (Absolute Value With Saturation)
3-38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ABSDP (Absolute Value, Double-Precision Floating-Point)
3-40
. . . . . . . . . . . . . . . . . . . . . .
ABSSP (Absolute Value, Single-Precision Floating-Point)
3-42
. . . . . . . . . . . . . . . . . . . . . . .
ADD (Add Two Signed Integers Without Saturation)
3-44
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADDAB (Add Using Byte Addressing Mode)
3-48
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADDAD (Add Using Doubleword Addressing Mode)
3-50
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADDAH (Add Using Halfword Addressing Mode)
3-52
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADDAW (Add Using Word Addressing Mode)
3-54
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADDDP (Add Two Double-Precision Floating-Point Values)
3-56
. . . . . . . . . . . . . . . . . . . . .
ADDK (Add Signed 16-Bit Constant to Register)
3-59
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ADDSP (Add Two Single-Precision Floating-Point Values)
3-60
. . . . . . . . . . . . . . . . . . . . . .
ADDU (Add Two Unsigned Integers Without Saturation)
3-63
. . . . . . . . . . . . . . . . . . . . . . . .
ADD2 (Add Two 16-Bit Integers on Upper and Lower Register Halves)
3-65
. . . . . . . . . . .
AND (Bitwise AND)
3-67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B (Branch Using a Displacement)
3-69
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B (Branch Using a Register)
3-71
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B IRP (Branch Using an Interrupt Return Pointer)
3-73
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
B NRP (Branch Using NMI Return Pointer)
3-75
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .