Skip to content

Instruction Timing

kombos edited this page Oct 6, 2026 · 1 revision

Instruction Timing

Normative source: SPRU056D, Appendix B (Instruction Classes and Cycles), with the cycle notation from chapter 6. Cycle counts are machine cycles (CLKOUT1 periods) for a single execution; repeats and wait states add to them as described below.

Notation

Where the instruction executes (the code source):

Source Meaning
ROM on-chip program ROM
DARAM on-chip dual-access program RAM
SARAM on-chip single-access program RAM
External external program memory

Where an operand lives:

Operand Meaning
DARAM internal dual-access RAM
SARAM internal single-access RAM
External external memory
ROM internal program ROM
MMR memory-mapped register
MMPORT memory-mapped I/O port

Wait-state and repeat variables (with optional src, dst, code subscripts):

Symbol Meaning
d data-memory wait states for an external data access
io I/O wait states for an external I/O access
p program-memory wait states for an external program access
n repetitions (n > 2 to fill the pipeline) of a repeated instruction

An external read takes at least one machine cycle; an external write at least two (three if it is immediately next to an external read). With m on-chip wait states both reads and writes take m+1 cycles.

Cycle classes

Every instruction falls into one of these classes (SPRU056D Table B-1).

Class Words, cycles and access pattern
I 1 word, 1 cycle, no memory operands
IIA 1 word, 1 cycle, memory read operand
IIB 1 word, 1 cycle, memory-mapped register read
III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
IVA 1 word, 1 cycle, memory write operand
IVB 1 word, 1 cycle, memory-mapped register write
V 1 word, 1 cycle, memory read and write
VI 2 words, 2 cycles, memory read and write
VIIa 2 words, 2 cycles, memory read operand
VIIb 2 words, 2 cycles, memory write operand, not repeatable
VIII 2 words, 4 cycles, program-counter discontinuity, no delayed slots, not repeatable
IX 2 words, 2 cycles, program-counter discontinuity, 2 delayed slots, not repeatable
X 1 word, 4 cycles, program-counter discontinuity, no delayed slots, not repeatable
XI 1 word, 2 cycles, program-counter discontinuity, 2 delayed slots, not repeatable
XII 2 words, 3 cycles, block data transfer, data to data space
XIII 1 word, 2 cycles, block data transfer, data to data space
XIV 2 words, 3 cycles, block data transfer, program to data space
XV 1 word, 2 cycles, block data transfer, program to data space
XVI 1 word, 2 cycles, block data transfer, data to program space
XVII 1 word, 3 cycles, table read
XVIII 1 word, 3 cycles, table write
XIX 2 words, 3 cycles, multiply accumulate
XX 1 word, 2 cycles, multiply accumulate
XXI 2 words, 3 cycles, multiply accumulate with data move
XXII 1 word, 2 cycles, multiply accumulate with data move
XXIII 2 words, 2 cycles, memory-mapped register load
XXIV 2 words, 2 cycles, memory-mapped register store
XXV 2 words, 3 cycles, output port
XXVI 2 words, 2 cycles, input port
XXVII 1 word, 2 cycles, pipeline-protected, memory read
XXVIII 1 word, 2 cycles, pipeline-protected, memory read, not repeatable
XXIIX 1 word, 2 cycles, no memory access, not repeatable, pipeline protected

Instruction to cycle class

From SPRU056D Table B-2. A mnemonic with several forms appears once per form, since the form determines the class.

Instruction form Cycle class Words, cycles, access
ABS I 1 word, 1 cycle, no memory operands
ADCB I 1 word, 1 cycle, no memory operands
ADD IIA 1 word, 1 cycle, memory read operand
ADD #k I 1 word, 1 cycle, no memory operands, not repeatable
ADD #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
ADDB I 1 word, 1 cycle, no memory operands
ADDC IIA 1 word, 1 cycle, memory read operand
ADDS IIA 1 word, 1 cycle, memory read operand
ADDT IIA 1 word, 1 cycle, memory read operand
ADRK #k I 1 word, 1 cycle, no memory operands, not repeatable
AND IIA 1 word, 1 cycle, memory read operand
AND #lk III 2 words, 2 cycles long-immediate operand, no memory access, not repeatable
ANDB I 1 word, 1 cycle, no memory operands
APAC I 1 word, 1 cycle, no memory operands
APL V 1 word, 1 cycle, memory read and write
APL VI 2 words, 2 cycles, memory read and write
B VIII 2 words, 4 cycles program counter discontinuity, no delayed slots, not repeatable
BACC X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
BACCD XI 1 word, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable Instruction Classes and Cycles B-5
BANZ VIII 2 words, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
BANZD IX 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable
BCND VIII 2 words, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
BCNDD IX 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable
BD IX 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable
BIT IIA 1 word, 1 cycle, memory read operand
BITT IIA 1 word, 1 cycle, memory read operand
BLDD XIII 1 word, 2 cycles, block data transfer, data to data space
BLDD XII 2 words, 3 cycles, block data transfer, data to data space
BLDP XVI 1 word, 2 cycles, block data transfer, data to program space
BLPD XV 1 word, 2 cycles, block data transfer, program to data space
BLPD XIV 2 words, 3 cycles, block data transfer, program to data space
BSAR I 1 word, 1 cycle, no memory operands
CALA X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
CALAD XI 1 word, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable
CALL VIII 2 words, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
CALLD IX 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable
CC VIII 2 words, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
CCD IX 2 words, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable
CLRC I 1 word, 1 cycle, no memory operands
CMPL I 1 word, 1 cycle, no memory operands
CMPR I 1 word, 1 cycle, no memory operands
CPL IIA 1 word, 1 cycle, memory read operand
CPL #lk VIIa 2 words, 2 cycles, memory read operand
CRGT I 1 word, 1 cycle, no memory operands
CRLT I 1 word, 1 cycle, no memory operands
DMOV V 1 word, 1 cycle, memory read and write
EXAR I 1 word, 1 cycle, no memory operands
IDLE I 1 word, 1 cycle, no memory operands, not repeatable
IDLE2 I 1 word, 1 cycle, no memory operands, not repeatable
IN XXVI 2 words, 2 cycles, input port
INTR X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
LACB I 1 word, 1 cycle, no memory operands
LACC IIA 1 word, 1 cycle, memory read operand
LACC #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
LACL IIA 1 word, 1 cycle, memory read operand
LACL #k I 1 word, 1 cycle, no memory operands, not repeatable
LACT IIA 1 word, 1 cycle, memory read operand
LAMM IIB 1 word, 1 cycle, memory-mapped register read
LAR XXVII 1 word, 2 cycles, pipeline-protected, memory read
LAR ARn, #k XXVIII 1 word, 2 cycles, pipeline-protected, memory read, not repeatable Instruction Classes and Cycles B-7
LAR ARn, #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
LDP XXVII 1 word, 2 cycles, pipeline-protected, memory read
LDP #k XXVIII 1 word, 2 cycles, pipeline-protected, memory read, not repeatable
LMMR XXIII 2 words, 2 cycles, memory-mapped register load
LPH IIA 1 word, 1 cycle, memory read operand
LST XXVII 1 word, 2 cycles, pipeline-protected, memory read
LT IIA 1 word, 1 cycle, memory read operand
LTA IIA 1 word, 1 cycle, memory read operand
LTD V 1 word, 1 cycle, memory read and write
LTP IIA 1 word, 1 cycle, memory read operand
LTS IIA 1 word, 1 cycle, memory read operand
MAC XIX 2 words, 3 cycles, multiply accumulate
MACD XXI 2 words, 3 cycles, multiply accumulate with data move
MADD XXII 1 word, 2 cycles, multiply accumulate with data move
MADS XX 1 word, 2 cycles, multiply accumulate
MAR I 1 word, 1 cycle, no memory operands
MPY IIA 1 word, 1 cycle, memory read operand
MPY #k I 1 word, 1 cycle, no memory operands, not repeatable
MPY #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
MPYA IIA 1 word, 1 cycle, memory read operand
MPYS IIA 1 word, 1 cycle, memory read operand
MPYU IIA 1 word, 1 cycle, memory read operand
NEG I 1 word, 1 cycle, no memory operands
NMI X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
NOP I 1 word, 1 cycle, no memory operands
NORM I 1 word, 1 cycle, no memory operands
OPL V 1 word, 1 cycle, memory read and write
OPL VI 2 words, 2 cycles, memory read and write
OR IIA 1 word, 1 cycle, memory read operand
OR #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
ORB I 1 word, 1 cycle, no memory operands
OUT XXV 2 words, 3 cycles, output port
PAC I 1 word, 1 cycle, no memory operands
POP I 1 word, 1 cycle, no memory operands
POPD IVA 1 word, 1 cycle, memory write operand
PSHD IIA 1 word, 1 cycle, memory read operand
PUSH I 1 word, 1 cycle, no memory operands
RET X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
RETC X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
RETCD XI 1 word, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable
RETD XI 1 word, 2 cycles, program counter discontinuity, 2 delayed slots, not repeatable
RETE X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
RETI X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
ROL I 1 word, 1 cycle, no memory operands Instruction Classes and Cycles B-9
ROLB I 1 word, 1 cycle, no memory operands
ROR I 1 word, 1 cycle, no memory operands
RORB I 1 word, 1 cycle, no memory operands
RPT IIA 1 word, 1 cycle, memory read operand, not repeatable
RPT #k XXIX 1 word, 2 cycle, no memory operands, not repeatable
RPT #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
RPTB III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
RPTZ #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
SACB I 1 word, 1 cycle, no memory operands
SACH IVA 1 word, 1 cycle, memory write operand
SACL IVA 1 word, 1 cycle, memory write operand
SAMM IVB 1 word, 1 cycle, memory-mapped register write
SAR IVA 1 word, 1 cycle, memory write operand
SATH I 1 word, 1 cycle, no memory operands
SATL I 1 word, 1 cycle, no memory operands
SBB I 1 word, 1 cycle, no memory operands
SBBB I 1 word, 1 cycle, no memory operands
SBRK #k I 1 word, 1 cycle, no memory operands, not repeatable
SETC I 1 word, 1 cycle, no memory operands
SFL I 1 word, 1 cycle, no memory operands
SFLB I 1 word, 1 cycle, no memory operands
SFR I 1 word, 1 cycle, no memory operands
SFRB I 1 word, 1 cycle, no memory operands
SMMR XXIV 2 words, 2 cycles, memory-mapped register store
SPAC I 1 word, 1 cycle, no memory operands
SPH IVA 1 word, 1 cycle, memory write operand
SPL IVA 1 word, 1 cycle, memory write operand
SPLK VIIb 2 words, 2 cycles, memory write operand, not repeatable
SPM I 1 word, 1 cycle, no memory operands, not repeatable
SQRA IIA 1 word, 1 cycle, memory read operand
SQRS IIA 1 word, 1 cycle, memory read operand
SST IVA 1 word, 1 cycle, memory write operand
SUB IIA 1 word, 1 cycle, memory read operand
SUB #k I 1 word, 1 cycle, no memory operands, not repeatable
SUB #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
SUBB IIA 1 word, 1 cycle, memory read operand
SUBC IIA 1 word, 1 cycle, memory read operand
SUBS IIA 1 word, 1 cycle, memory read operand
SUBT IIA 1 word, 1 cycle, memory read operand
TBLR XVII 1 word, 3 cycles, table read
TBLW XVIII 1 word, 3 cycles, table write
TRAP X 1 word, 4 cycles, program counter discontinuity, no delayed slots, not repeatable
XC I 1 word, 1 cycle, no memory operands, not repeatable
XOR IIA 1 word, 1 cycle, memory read operand
XOR #lk III 2 words, 2 cycles, long-immediate operand, no memory access, not repeatable
XORB I 1 word, 1 cycle, no memory operands
XPL V 1 word, 1 cycle, memory read and write
XPL VI 2 words, 2 cycles, memory read and write Instruction Classes and Cycles B-11
ZALR IIA 1 word, 1 cycle, memory read operand
ZAP I 1 word, 1 cycle, no memory operands
ZPR I 1 word, 1 cycle, no memory operands Appendix AppendixCA

License

MIT - (c) 2026 Grzegorz Worona grzegorz@worona.pl. See LICENSE.

c5xtools wiki

Start here

The TMS320C5x processor

Writing assembly

The instruction set

A: ABS ADCB ADD ADDB ADDC ADDH ADDI ADDK ADDS ADDT ADLK ADRK AND ANDB ANDI ANDK APAC APL APLI APLK

B: B BACC BACCD BANZ BANZD BBNZ BBZ BC BCND BCNDD BD BDDD BDSD BGEZ BGZ BIOZ BIT BITT BKDK BLDD BLDP BLEZ BLKD BLKP BLPD BLZ BNC BNV BNZ BPSD BSAR BV BZ

C: CALA CALAD CALL CALLD CC CCD CLRC CMPL CMPR CNFD CNFP CONF CPL CPLI CPLK CRGT CRLT

D: DINT DMOV

E: EHWBS EHWBT EINT EMPSD EMRET ESTOP ESTPD ETRAP EXAR

F: FORT

I: IDLE IDLE1 IDLE2 IN INTR

L: LAC LACB LACC LACI LACK LACL LACT LALK LAMM LAR LARK LARP LDP LDPI LDPK LMMR LPH LRLK LST LST0 LST1 LT LTA LTD LTP LTS

M: MAC MACD MADD MADS MAR MPY MPYA MPYI MPYK MPYS MPYU MRKL

N: NEG NMI NOP NORM

O: OPL OPLI OPLK OR ORB ORI ORK OUT

P: PAC POP POPD PSHD PUSH

R: RC RET RETC RETCD RETD RETE RETI RFSM RHM ROL ROLB ROR RORB ROVM RPT RPTB RPTI RPTK RPTR RPTZ RSXM RTC RTXM RXF

S: SACB SACH SACL SAMM SAR SATH SATL SBB SBBB SBLK SBRK SC SETC SFL SFLB SFR SFRB SFSM SHM SMMR SOVM SPAC SPH SPL SPLK SPM SQRA SQRS SST SST0 SST1 SSXM STC STXM SUB SUBB SUBC SUBH SUBI SUBK SUBS SUBT SWI SXF

T: TBLR TBLW TRAP TRAPD

X: XC XOR XORB XORI XORK XPL XPLI XPLK

Z: ZAC ZALH ZALR ZALS ZAP ZPR

Building a program

The tools

Normative sources: TI SPRU056D and SPRU018D (see References).

Changelog


License: MIT - (c) 2026 Grzegorz Worona.

Clone this wiki locally