Instruction Set Restrictions
SC140 DSP Core Reference Manual
6-21
6.4.4 AGU Instruction Pipeline and Sequence Restrictions
The following restrictions apply to AGU register usage:
Restriction A.1
— There should be at least two cycles between an instruction that changes the value
of the modulo control (MCTL) register and an instruction that uses the R0–R7 registers as a pointer
or operand for instructions that are affected by the modifier mode (such as ADDA, SUBA, INCA,
DECA, ADDL1A, or ADDL2A).
Restriction A.2
— If a register (Rn, Nn, Mn, or Bn) is changed with a move, pop, or bit-mask
instruction, the new content is not available for an additional cycle for use as an address pointer or
an operand of an AGU arithmetic or control instruction. The register that has been changed cannot
be used as a source during this cycle since its previous value may not be valid during this extra cycle.
For this restriction, note the following:
— Remember (for this restriction as well as in general) that changing R8-R15 is equivalent to
changing B0-B7 and vice versa.
— JMP Rn and DOENn Rn are included in this restriction. They cannot appear immediately
following a move-like instruction to Rn.
These examples are restricted:
BMSET #$0500,R4.L
ADDA R4,R5
MOVE.L #$123456,B0
MOVE.L D0,(R8)
Restriction A.3
— A valid execution set (which may contain only a NOP) must follow the execution
set that contains JT/JF or TRAP instructions.
Restriction A.4
— Grouping an instruction that updates an AGU register through an AGU
arithmetic instruction (or address calculation) with a move-like instruction that uses the same
register as a source, is restricted. For example, the following groupings are restricted:
ADDA #$5,r0
MOVE.W (r0)+,d0 BMTSTS r0.l
TFRA r1,r0
Similarly, an LC update by a DOEN/SH Rn or #x (AGU register or immediate instruction) cannot
be grouped with a move-like instruction that uses the same register as a source. The following are
examples of restricted groupings:
MOVE.W r0,($100)
PUSH r0
DOEN0 r0
DOENSH0 #5
MOVE.W lc0,($100)
PUSH lc0
6.4.5 Delayed Instructions Restrictions
This section lists the instructions that cannot be included in the delay slot execution set:
Restriction D.1
— The following instructions are not allowed in any type of delay slot:
— Change-of-flow instructions (listed in
Section 5.1.4, “Change-of-Flow Instructions,”
on page
5-7), plus the CONT, CONTD, BREAK, SKIPLS, and TRAP instructions
— Low power instructions, STOP and WAIT
— Special instructions such as DI