;; 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