Files
adsp219x-re/docs/opcode_mnemonics.txt
Siggi 6af34837d2 Initial commit: ADSP-219x disassembler, docs, test ROMs, analysis tools
- Standalone Python disassembler for 24-bit ADSP-219x instructions
- Complete instruction set reference (PDFs + extracted text)
- Architecture documentation and getting-started guide
- Test ROM generator with packed (3-byte) and padded (4-byte) formats
- r2pipe-based analysis script for radare2 integration
2026-04-12 13:05:38 +00:00

813 lines
26 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
9 INSTRUCTION OPCODES
Figure 9-0.
Table 9-0.
Listing 9-0.
This chapter lists and describes the opcodes that defines each of the
instructions in the ADSP-219xs instruction set. This information is use-
ful for debugging programs.
This chapter covers the following topics:
• “Opcode Mnemonics” on page 9-1
• “Opcode Definitions” on page 9-20
Opcode Mnemonics
This section lists, describes, and gives the numeric value for each opcode
mnemonic.
Table 9-1. Opcode mnemonics
Mnemonic Description Details
AMF Specifies an ALU or multiplier operation. page 9-8
AS Specifies whether ALU saturation mode is page 9-40
0 = disabled
1 = enabled
B Specifies whether branch is page 9-32
page 9-41
0 = immediate
page 9-42
1 = delayed
ADSP-219x Instruction Set Reference 9-1
Instruction Opcodes
Table 9-1. Opcode mnemonics (Contd)
Mnemonic Description Details
BIT Specifies which interrupt to enable or disable (015). page 9-60
BO Specifies whether the supplied 4-bit constant in a type 9 instruction is page 9-12
page 9-27
01 = as is
11 = negated
BR Specifies whether bit-reverse addressing on DAG1 is page 9-40
0 = disabled
1 = enabled
BSR Specifies whether the secondary DAG address registers are page 9-40
0 = disabled
1 = enabled
C Specifies whether a software interrupt is page 9-60
0 = set
1 = cleared
CC Specifies the two LSBs of a 4-bit constant value in a type 9 instruction. page 9-12
page 9-27
CF Specifies whether to flush the instruction cache page 9-50
0 = No flush
1 = flush
COND Specifies one of the condition codes on which to base execution of the page 9-11
instruction.
9-2 ADSP-219x Instruction Set Reference
Table 9-1. Opcode mnemonics (Contd)
Mnemonic Description Details
D Specifies the direction of a data move. page 9-22
page 9-35
0 = read
page 9-51
1 = write page 9-54
page 9-57
page 9-58
DD Specifies a destination data register for a DM bus transfer. page 9-21
00 = AX0
01 = AX1
10 = MX0
11 = MX1
DDREG Specifies a destination register for a register-to-register move operation. page 9-13
DREG Specifies an unrestricted data register (REG0 only). page 9-13
DMI Specifies a DAG index address register (I0I3) for a DM bus transfer. page 9-18
page 9-21
DMM Specifies a DAG modify address register (M0M3) for a DM bus trans- page 9-18
fer. page 9-21
DRGP Specifies a destination register group. page 9-39
00 = REG0
01 = REG1
10 = REG2
11 = REG3
DRL Specifies two MSBs of DREG data register address. page 9-13
DRU Specifies two LSBs of DREG data register address. page 9-13
Exponent Specifies an 8-bit, twos-complement shift value. page 9-37
ADSP-219x Instruction Set Reference 9-3
Instruction Opcodes
Table 9-1. Opcode mnemonics (Contd)
Mnemonic Description Details
G Specifies a DAG register group. page 9-17
0 = DAG1
1 = DAG2
IREG/MREG Specifies DAG index and modify registers (I0I7, M0M7). page 9-18
I Specifies DAG index register (I0I7). page 9-17
Idle Value Specifies a 4-bit value that defines an internal clock divisor. page 9-53
INT Specifies whether interrupts are globally page 9-40
0 = disabled
1 = enabled
LPP Specifies push/pop of the loop stacks. page 9-50
0 = disabled
1 = enabled
M Specifies a DAG modify register. page 9-17
MM Specifies whether MAC integer mode is page 9-40
0 = disabled
1 = enabled
MOD DATA Specifies an 8-bit, twos-complement immediate data value. page 9-44
page 9-51
MS Specifies memory bus for a memory data transfer page 9-54
0 = 16-bit DM bus
1 = 24-bit PM bus
9-4 ADSP-219x Instruction Set Reference
Table 9-1. Opcode mnemonics (Contd)
Mnemonic Description Details
OL Specifies whether ALU overflow mode is page 9-40
0 = disabled
1 = enabled
PD Specifies a destination data register for a PM bus transfer. page 9-21
00 = AY0
01 = AY1
10 = MY0
11 = MY1
PMI Specifies a DAG index address register (I4I7) for a PM bus transfer. page 9-18
PMM Specifies a DAG modify address register (M4M7) for a PM bus trans- page 9-18
fer.
PPP Specifies push/pop of the PC stack. page 9-50
0 = disabled
1 = enabled
Q Specifies the RTI mode. page 9-42
0 = normal
1 = single-step
R Specifies a result register. page 9-49
0 = MR register
1 = SR register
REG Specifies a core register of RGPx. page 9-13
REG1 Specifies a register group 1 register page 9-13
page 9-25
ADSP-219x Instruction Set Reference 9-5
Instruction Opcodes
Table 9-1. Opcode mnemonics (Contd)
Mnemonic Description Details
REG2 Specifies a register group 2 register page 9-13
page 9-25
REG3 Specifies a register group 3 register page 9-13
page 9-56
RGP Specifies a register group. page 9-13
00 = REG0
01 = REG1
10 = REG2
11 = REG3.
S Specifies the branch type. page 9-32
page 9-41
0 = jump
1 = call
SDREG Specifies the source data register for a data move operation. page 9-13
SF Specifies a shift function. page 9-15
SPP Specifies push/pop of the status stack. page 9-50
0 = disabled
1 = enabled
SR Specifies whether the secondary data registers are page 9-40
0 = disabled
1 = enabled
9-6 ADSP-219x Instruction Set Reference
Table 9-1. Opcode mnemonics (Contd)
Mnemonic Description Details
SRGP Specifies a source register group for a data move operation. page 9-39
00 = REG0
01 = REG1
10 = REG2
11 = REG3
SWCD Specifies a 4-bit nonfunctional value used by ADI tools only. page 9-52
T Specifies the return type. page 9-42
0 = RTS
1 = RTI
TERM Specifies the terminating condition for the type 11 instruction. page 9-34
1110 = NOT CE
1111 = TRUE
TI Specifies whether the timer is page 9-40
0 = disabled
1 = enabled
U Specifies whether the DAG index register is page 9-54
0 = premodified with no update
1 = postmodified with update
XOP Specifies a restricted data register used to supply the x operand value in page 9-19
a multifunction or conditional instruction.
XREG Specifies the source register (REG0) in a shift function. page 9-13
ADSP-219x Instruction Set Reference 9-7
Instruction Opcodes
Table 9-1. Opcode mnemonics (Contd)
Mnemonic Description Details
Y0 Specifies whether the source of the x-operand is page 9-11
0 = data register
1 = 0 (explicit value)
YOP Specifies a restricted data register used to supply the y operand value in page 9-19
a multifunction or conditional instruction.
YREG Specifies the destination register (REG0) in a shift function. page 9-13
page 9-11
YY Specifies the two MSBs of a 4-bit constant value in a type 9 instruc- page 9-12
tion. page 9-27
Z Specifies a result or feedback register page 9-23
page 9-26
0 = result register
page 9-27
1 = feedback register page 9-11
ALU or Multiplier Function (AMF) Codes
Table 9-2 on page 9-9 lists the AMF codes used by these instruction types:
• “Type 1: Compute | DregX«···DM | DregY«···PM” on page 9-21
• “Type 4: Compute | Dreg «···» DM/PM” on page 9-23
• “Type 8: Compute | Dreg1 «··· Dreg2” on page 9-26
• “Type 9: Compute” on page 9-27
9-8 ADSP-219x Instruction Set Reference
Table 9-2. ALU/multiplier function (AMF) codes
Code Function Description
Multiplier functions
00000 NOP No operation
00001 X * Y (RND) Multiply
00010 MR + X * Y (RND) Multiply and accumulate
00011 MR X * Y (RND) Multiply and subtract
00100 X * Y (SS) Multiply
00101 X * Y (SU) Multiply
00110 X * Y (US) Multiply
00111 X * Y (UU) Multiply
01000 MR + X * Y (SS) Multiply and accumulate
01001 MR + X * Y (SU) Multiply and accumulate
01010 MR + X * Y (US) Multiply and accumulate
01011 MR + X * Y (UU) Multiply and accumulate
01100 MR X * Y (SS) Multiply and subtract
01101 MR X * Y (SU) Multiply and subtract
01110 MR X * Y (US) Multiply and subtract
01111 MR X * Y (UU) Multiply and subtract
(RND) = round results; (SS) = both operands signed; (SU) = x operand signed, y operand unsigned;
(US) =x operand unsigned, y operand signed; (UU) = both operands unsigned
ADSP-219x Instruction Set Reference 9-9
Instruction Opcodes
Table 9-2. ALU/multiplier function (AMF) codes (Contd)
Code Function Description
ALU functions
10000 Y PASS/CLEAR
10001 Y+1 PASS
10010 X+Y+C Add with carry
10011 X+Y Add
10100 NOT Y Negate
10101 Y PASS
10110 XY+C1 Subtract (XY) with borrow
10111 XY Subtract
11000 Y1 PASS
11001 YX Subtract
11010 YX+C1 Subtract (YX) with borrow
11011 NOT X Negate
11100 X AND Y AND/test bit,clear bit
11101 X OR Y OR/set bit
11110 X XOR Y XOR/toggle bit
11111 ABS X Absolute value
(RND) = round results; (SS) = both operands signed; (SU) = x operand signed, y operand unsigned;
(US) =x operand unsigned, y operand signed; (UU) = both operands unsigned
9-10 ADSP-219x Instruction Set Reference
Condition Codes
Table 9-3 on page 9-11 lists the condition codes used by these instruction
types:
• “Type 9: Compute” on page 9-27
• “Type 10: Direct Jump” on page 9-32
• “Type 16: Shift Reg0” on page 9-38
• “Type 19: Indirect Jump/Call” on page 9-41
• “Type 20: Return” on page 9-42
• “Type 36: Long Jump/Call” on page 9-59
• “Type 11: Do ··· Until” on page 9-34
uses NOT CE and TRUE only for the terminating condition.
Table 9-3. Condition codes
Code Condition Description
0000 EQ Equal to 0 (= 0)
0001 NE Not equal to 0 (≠ 0)
0010 GT Greater than 0 (>0)
0011 LE Less than or equal to 0 (≤0)
0100 LT Less than 0 (<0)
0101 GE Greater than or equal to 0 (≥0)
0110 AV ALU overflow
0111 NOT AV Not ALU overflow
ADSP-219x Instruction Set Reference 9-11
Instruction Opcodes
Table 9-3. Condition codes (Contd)
Code Condition Description
1000 AC ALU carry
1001 NOT AC Not ALU carry
1010 SWCOND CCODE register condition
1011 NOT SWCOND Not CCODE register condition
1100 MV MAC overflow
1101 NOT MV Not MAC overflow
1110 NOT CE Counter not expired
1111 TRUE Always true
Constant Codes
Table 9-4 lists the valid constants used by “Type 9: Compute” on
page 9-27. As shown, the YY/CC bits determine the constant value and the
BO bits determine the sign of the value.
Table 9-4. Constants
Code Decimal / Hex Decimal / Hex
YY CC BO = 01 BO = 11
00 00 1 / 0x0001 2 / 0xFFFE
00 01 2 / 0x0002 3 / 0xFFFD
00 10 4 / 0x0004 5 / 0xFFFB
00 11 8 / 0x0008 9 / 0xFFF7
9-12 ADSP-219x Instruction Set Reference
Table 9-4. Constants (Contd)
Code Decimal / Hex Decimal / Hex
YY CC BO = 01 BO = 11
01 00 16 / 0x0010 17 / 0xFFEF
01 01 32 / 0x0020 33 / 0xFFDF
01 10 64 / 0x0040 65 / 0xFFBF
01 11 128 / 0x0080 129 / 0xFF7F
10 00 256 / 0x0100 257 / 0xFEFF
10 01 512 / 0x0200 513 / 0xFDFF
10 10 1024 / 0x0400 1025 / 0xFBFF
10 11 2048 / 0x0800 2049 / 0xF7FF
11 00 4096 / 0x1000 4097 / 0xEFFF
11 01 8192 / 0x2000 8193 / 0xDFFF
11 10 16384 / 0x4000 16385 / 0xBFFF
11 11 32768 / 0x8000 +32767 / 0x7FFF
Core Register Codes
Table 9-5 on page 9-14 list the core registers and their addresses. The
complete address of any individual register is formed by appending the
registers address bits to its RGP bits, so, for example, the address of the I2
register is 010010. The opcode mnemonics DREG, DDREG, SDREG, XREG, and
YREG and the following instruction types reference these registers by their
address bits:
• “Type 3: Dreg/Ireg/Mreg «···» DM/PM” on page 9-22
ADSP-219x Instruction Set Reference 9-13
Instruction Opcodes
• “Type 4: Compute | Dreg «···» DM/PM” on page 9-23
• “Type 6: Dreg «··· Data16” on page 9-24
• “Type 8: Compute | Dreg1 «··· Dreg2” on page 9-26
• “Type 9: Compute” on page 9-27
• “Type 12: Shift | Dreg «···» DM/PM” on page 9-35
• “Type 14: Shift | Dreg1 «··· Dreg2” on page 9-36
• “Type 15: Shift Data8” on page 9-37
• “Type 16: Shift Reg0” on page 9-38
• “Type 17: Any Reg «··· Any Reg” on page 9-39
• “Type 34: Dreg «···» IOreg” on page 9-57
• “Type 35: Dreg «···»Sreg” on page 9-58
Table 9-5. Core registers
RGP/Address Register Groups (RGP)
Address 00 (REG0) 01 (REG1) 10 (REG2) 11 (REG3)
0000 AX0 I0 I4 ASTAT
0001 AX1 I1 I5 MSTAT
0010 MX0 I2 I6 SSTAT
0011 MX1 I3 I7 LPSTACKP
0100 AY0 M0 M4 CCODE
0101 AY1 M1 M5 SE
0110 MY0 M2 M6 SB
9-14 ADSP-219x Instruction Set Reference
Table 9-5. Core registers (Contd)
RGP/Address Register Groups (RGP)
Address 00 (REG0) 01 (REG1) 10 (REG2) 11 (REG3)
0111 MY1 M3 M7 PX
1000 MR2 L0 L4 DMPG1
1001 SR2 L1 L5 DMPG2
1010 AR L2 L6 IOPG
1011 SI L3 L7 IJPG
1100 MR1 IMASK Reserved Reserved
1101 SR1 IRPTL Reserved Reserved
1110 MR0 ICNTL CNTR Reserved
1111 SR0 STACKA LPSTACKA STACKP
SF Function Codes
Table 9-6 list the shift function (SF) codes used by these instruction types:
• “Type 12: Shift | Dreg «···» DM/PM” on page 9-35
• “Type 14: Shift | Dreg1 «··· Dreg2” on page 9-36
• “Type 15: Shift Data8” on page 9-37
—shift functions (codes 00000111) only
• “Type 16: Shift Reg0” on page 9-38
ADSP-219x Instruction Set Reference 9-15
Instruction Opcodes
Table 9-6. SF codes
Code Function
0000 LSHIFT (HI)
0001 LSHIFT (HI, OR)
0010 LSHIFT (LO)
0011 LSHIFT (LO, OR)
0100 ASHIFT (HI)
0101 ASHIFT (HI, OR)
0110 ASHIFT (LO)
0111 ASHIFT (LO, OR)
1000 NORM (HI)
1001 NORM (HI, OR)
1010 NORM (LO)
1011 NORM (LO, OR)
1100 EXP (HI)
1101 EXP (HIX)
1110 EXP (LO)
1111 Derive Block Exponent
9-16 ADSP-219x Instruction Set Reference
I and M Codes
Table 9-7 on page 9-17 lists the DAG index and modify register codes
used by the following instruction types. The G bit (DAG1/DAG2) determines
which group of I (index) and M (modify) registers.
• “Type 4: Compute | Dreg «···» DM/PM” on page 9-23.
• “Type 12: Shift | Dreg «···» DM/PM” on page 9-35
• “Type 19: Indirect Jump/Call” on page 9-41
• “Type 21: Modify DagI” on page 9-43
• “Type 21a: Modify DagI” on page 9-44
• “Type 22: DM/PM «··· Data16” on page 9-45
• “Type 29: Dreg «···» DM” on page 9-51
• “Type 32: Any Reg «···» PM/DM” on page 9-54
Table 9-7. I and M codes
DAG1 (G=0) DAG2 (G=1)
Code I M I M
00 I0 M0 I4 M4
01 I1 M1 I5 M5
10 I2 M2 I6 M6
11 I3 M3 I7 M7
ADSP-219x Instruction Set Reference 9-17
Instruction Opcodes
DMI, DMM, PMI, and PMM Codes
Table 9-8 lists the DAG index and modify register codes used by “Type 1:
Compute | DregX«···DM | DregY«···PM” on page 9-21.
Table 9-8. DMI, DMM, PMI, PMM codes
Code DMI DMM PMI PMM
00 I0 M0 I4 M4
01 I1 M1 I5 M5
10 I2 M2 I6 M6
11 I3 M3 I7 M7
IREG/MREG Codes
Table 9-9 lists the Ireg and Mreg codes used by “Type 3: Dreg/Ireg/Mreg
«···» DM/PM” on page 9-22 to specify a DAG index or modify register.
Table 9-9. Ireg, Mreg codes
Code Register Code Register
0000 I0 1000 M0
0001 I1 1001 M1
0010 I2 1010 M2
0011 I3 1011 M3
0100 I4 1100 M4
0101 I5 1101 M5
9-18 ADSP-219x Instruction Set Reference
Table 9-9. Ireg, Mreg codes (Contd)
Code Register Code Register
0110 I6 1110 M6
0111 I7 1111 M7
XOP and YOP Codes
Table 9-10 on page 9-19 lists the XOP and YOP codes used by these
instructions:
• “Type 1: Compute | DregX«···DM | DregY«···PM” on page 9-21
• “Type 4: Compute | Dreg «···» DM/PM” on page 9-23
• “Type 8: Compute | Dreg1 «··· Dreg2” on page 9-26
• “Type 9: Compute” on page 9-27
• “Type 12: Shift | Dreg «···» DM/PM” on page 9-35
• “Type 23: Divide primitive, DIVQ” on page 9-47
• “Type 24: Divide primitive, DIVS” on page 9-48
Table 9-10. XOP/YOP codes
XOP YOP
Code ALU MAC Shift Code ALU MAC
000 AX0 MX0 SI 00 AY0 MY0
001 AX1 MX1 SR2 01 AY1 MY1
010 AR AR AR 10 AF SR1
ADSP-219x Instruction Set Reference 9-19
Instruction Opcodes
Table 9-10. XOP/YOP codes
XOP YOP
Code ALU MAC Shift Code ALU MAC
011 MR0 MR0 MR0 11 0 0
100 MR1 MR1 MR1
101 MR2 MR2 MR2
110 SR0 SR0 SR0
111 SR1 SR1 SR1
Opcode Definitions