blob: 3e1e84ba799d24c0cb124e4e4f3de255972eabc7 [file] [log] [blame]
;; opcodes tests
.text
.mmregs
.global X, Y, Z
.global _opcodes, _opcodes_end
.label _opcodes_load
_opcodes:
abdst *ar3+, *ar4+
abs a
abs a,b
add *ar0+, a ; Smem, src
add *ar1+, ts, a ; Smem, TS, src
add *ar2+, 16, a ; Smem, 16, src [,dst]
add *ar3+, a, b ; Smem [,SHIFT], src [,dst] (-16<=SHIFT<=15)
add *ar4+, 1, a ; Xmem, SHFT, src (0<=SHFT<=15)
add *ar3+, *ar4+, a ; Xmem, Ymem, dst
add #-32768, a ; #lk [,SHFT], src [,dst] (-32768<=lk<=32767)
add #0,16,a,b ; #lk, 16, src, [,dst]
add a,-16,b ; src [,SHIFT][,dst]
add a,asm,b ; src, ASM [,dst]
addc *ar0+,a
addm #1,*ar1+
adds *ar2+,a
and *ar3+,a ; Smem,src
and #1,1,a,b ; #lk[,SHFT],src[,dst]
and #1,#16,a,b ; #lk,16,src[,dst]
and a ; src[,SHIFT][,dst]
andm #1,*ar0+
b _opcodes_end
bd #_opcodes_end
nop
nop
bacc a
baccd b
nop
nop
banz _opcodes_end,*ar1+
banzd _opcodes_end,*ar2+
nop
nop
bc _opcodes_end, AEQ,AOV
bcd _opcodes_end, BIO,C,TC
nop
nop
bit *ar3+,1
bitf *ar4+,#-1
bitt *ar5+
cala a
calad b
nop
nop
call _opcodes_end
calld _opcodes_end
nop
nop
cc _opcodes_end, tc
ccd _opcodes_end, aeq
nop
nop
cmpl b,a
cmpm *ar0+,#1
cmpr 1,ar1
cmps a,*ar2+
dadd *ar3-, a, b
dadst *ar4-, a
delay *ar5+
dld *ar6-, a
drsub *ar7-, b
dsadt *ar0-, a
dst a, *ar1-
dsub *ar2-, b
dsubt *ar3-, a
exp a
firs *ar3+,*ar4+,_opcodes_end
frame -128
idle 2
intr 15
ld *ar0+,a ; Smem,dst
ld *ar1+,ts,a ; Smem,TS,dst
ld *ar2+,16,a ; Smem,16,dst
ld *ar3+,1,a ; Smem[,SHIFT],dst
ld *ar4+,1,a ; Xmem,SHFT,dst
ld #1,b ; #K,dst
ld #32767,1,a ; #lk,[,SHFT],dst
ld #32767,16,a ; #lk,16,dst
ld a,asm,b ; src,ASM[,dst]
ld a,1,b ; src[,SHIFT],dst
ld *ar0+,t
ld *ar1+,dp
ld #_opcodes_end,dp ; FIXME try to print label on disasm
; note: TI assembler doesn't shift
; the address encoding.
ld #15,asm
ld #7,arp
ld *ar2+,asm
ldm ar3,a
ld *ar2+,a || mac *ar3+,b ; single-line parallell
ld *ar4+,b || macr *ar5+,a ; with optional DST_ specified
ld *ar2+,a ; double-line parallel
|| mas *ar3+
ld *ar4+,b ; parallel spans
; inserted line
|| masr *ar5+
ldr *ar6+,a
ldu *ar7+,a
lms *ar3+,*ar4+
ltd *ar0+
mac *ar1+,a
macr *ar2+,a
mac *ar2+,*ar3+,a,b
macr *ar4+,*ar5+,a,b
mac #1,a,b
mac *ar0+,#1,a
maca *ar1+ ; *ar6+,b (valid)
maca t,a,b
macd *ar2+,_opcodes_end,a
macp *ar3+,_opcodes_end,a
macsu *ar4+,*ar5+,a
mar *ar6+
mas *ar7+,a
masr *ar0+,a
mas *ar3+,*ar4+,a,b
masr *ar2+,*ar5+,a,b
masa *ar6+ ; *ar6+,b (valid)
masa t,a,b
masar t,a
max a
min b
mpy *ar7+,a
mpy *ar3+,*ar4+,b
mpy *ar0,#1,a
mpy #1,a
mpya *ar0+
mpya b
mpyu *ar1+,b
mvdd *ar2+,*ar3+
mvdk *ar4+,X
mvdm X,ar5
mvdp *ar6+,_opcodes_end
mvkd X,*ar7+
mvmd ar0,X
mvmm ar1,ar2
mvpd _opcodes_end,*ar3+
neg a,b
nop
norm a
or *ar0+,b
or #(3+4),b
or #1,16,b
or b
orm #1,*ar1+
poly *ar2+
popd *ar3+
popm ar4
portr 0,*ar5+
portw *ar6+,0
pshd *ar7+
pshm ar0
rc ANEQ
rcd AGT
reada *ar1+
reset
ret
retd
nop
nop
rete
reted
nop
nop
retf
retfd
rol a
roltc a
ror b
rpt *ar0+
nop
rpt #32
nop
rpt #65535
nop
rptb _opcodes_end-1
nop
rptbd _opcodes_end-1
nop
nop
rptz a,#32767
nop
rsbx 1,15
saccd a,*ar3+,ALT
sat a
sfta a,15,b
sftc a
sftl a,15
sqdst *ar2+,*ar3+
squr *ar4+,b
squr a,a
squra *ar5+,a
squrs *ar6+,a
srccd *ar2+,ALEQ
ssbx 1,15
st t,*ar0+
st trn,*ar1+
st #32767,*ar2+
sth a,*ar3+
sth a,asm,*ar4+
sth a,15,*ar5+
sth a,-16,*ar6+
stl a,*ar7+
stl a,asm,*ar0+
stl a,15,*ar1+
stl a,15,*ar2+
stlm a,ar3
stm #32767,ar4
st a,*ar5+
|| add *ar4+,b
st a,*ar3+
|| ld *ar2+,b
st a,*ar3+
|| ld *ar4+,t
st a,*ar5+
|| mac *ar2+,b
st a,*ar3+
|| masr *ar4+,b
st a,*ar3+
|| mpy *ar4+,b
st a,*ar3+
|| sub *ar4+,b
strcd *ar5+,BEQ
sub *ar0+,a
sub *ar1+,ts,a
sub *ar2+,16,a,b
sub *ar3+,a,b
sub *ar4+,15,a
sub *ar5+,*ar4+,b
sub #1,15,a,b
sub #1,16,a,b
sub a,-16,b
sub a,asm,b
subb *ar0+,a
subc *ar1+,a
subs *ar2+,a
trap 15
writa *ar3+
xc 1,AOV
xor *ar4+,a
xor #1,a
xor #1,16,a
xor a,1,b
xorm #1,*ar5+
_opcodes_end:
.data
X: .word 0
Y: .word 1
* .word Z
.end