.data
foodata: .hword 42
.text
footext:
.text
.macro test nm:req, args:vararg
\nm: \nm \args
.global \nm
.endm
;;; Basic Instruction Tests
1: ; All branches
test beq,1b
test bne,1b
test bgtu,1b
test bgteu,1b
test blteu,1b
test bltu,1b
test bgt,1b
test bgte,1b
test blt,1b
test blte,1b
test bbeq,1b
test bbne,1b
test bblt,1b
test b,1b
test bl,1b
;;; jumps
test jr,r1
jr r31
test jalr,r1
jalr r31
.macro test3i nm:req
test \nm,r1,r2,r3
\nm r32,r33,r34
\nm r1,r2,#3
\nm r11,r2,#16
.endm
test3i add
test3i sub
test3i asr
test3i lsr
test3i lsl
.macro test3 nm:req
test \nm,r1,r2,r3
\nm r11,r12,r13
.endm
test3 orr
test3 and
test3 eor
.macro testmem nm:req
\nm r0,[r1,#3]
\nm r10,[r1,#255]
\nm r0,[r1,r2]
\nm r0,[r1,r11]
\nm r0,[r3],r2
\nm r10,[r12],r13
.endm
testmem ldrb
testmem ldrh
testmem ldr
testmem ldrd
testmem strb
testmem strh
testmem str
testmem strd
test mov,r6,#255
mov r31,#65535
mov r0,#4098
.macro testmov cond:req
mov\cond r1,r2
mov\cond r11,r12
.endm
testmov eq
testmov ne
testmov gtu
testmov gteu
testmov lteu
testmov ltu
testmov gt
testmov gte
testmov lt
testmov lte
testmov beq
testmov bne
testmov blt
testmov blte
mov r1,r2
mov r11,r12
test nop
test idle
test bkpt
test3 fadd
test3 fsub
test3 fmul
test3 fmadd
test3 fmsub
movts config,r1
movts status,r31
movfs r1,imask
movfs r31,pc
test trap,#0 ; write syscall for simulator.
rti ; dummy instruction