# Test the mips16 instruction set. | |
.set mips16 | |
.macro ldst op, reg, base | |
\op \reg,0(\base) | |
\op \reg,1(\base) | |
\op \reg,2(\base) | |
\op \reg,3(\base) | |
\op \reg,4(\base) | |
\op \reg,8(\base) | |
\op \reg,16(\base) | |
\op \reg,32(\base) | |
\op \reg,64(\base) | |
\op \reg,128(\base) | |
\op \reg,256(\base) | |
\op \reg,512(\base) | |
\op \reg,1024(\base) | |
\op \reg,2048(\base) | |
\op \reg,-1(\base) | |
\op \reg,-2(\base) | |
\op \reg,-3(\base) | |
\op \reg,-4(\base) | |
\op \reg,-8(\base) | |
\op \reg,-16(\base) | |
\op \reg,-32(\base) | |
\op \reg,-64(\base) | |
\op \reg,-128(\base) | |
\op \reg,-256(\base) | |
\op \reg,-512(\base) | |
\op \reg,-1024(\base) | |
\op \reg,-2048(\base) | |
.endm | |
.p2align 3 | |
data1: | |
.word 0 | |
insns1: | |
ldst ld, $2, $3 | |
ld $2,data1 | |
ld $2,data2 | |
ld $2,bar | |
ld $2,quux | |
ldst ld, $2, $sp | |
ldst lwu, $2, $3 | |
ldst lw, $2, $3 | |
lw $2,data1 | |
lw $2,data2 | |
lw $2,bar | |
lw $2,quux | |
ldst lw, $2, $sp | |
ldst lh, $2, $3 | |
ldst lhu, $2, $3 | |
ldst lb, $2, $3 | |
ldst lbu, $2, $3 | |
ldst sd, $2, $3 | |
ldst sd, $2, $sp | |
ldst sd, $31, $sp | |
ldst sw, $2, $3 | |
ldst sw, $2, $sp | |
ldst sw, $31, $sp | |
ldst sh, $2, $3 | |
ldst sb, $2, $3 | |
li $2,0 | |
li $2,1 | |
li $2,256 | |
move $2,$30 | |
move $20,$2 | |
daddu $2,$3,0 | |
daddu $2,$3,1 | |
daddu $2,$3,-1 | |
daddu $2,$3,16 | |
daddu $2,$3,-16 | |
daddu $2,$3,$4 | |
daddu $2,0 | |
daddu $2,1 | |
daddu $2,-1 | |
daddu $2,32 | |
daddu $2,-32 | |
daddu $2,128 | |
daddu $2,-128 | |
dla $2,data1 | |
dla $2,data2 | |
dla $2,bar | |
dla $2,quux | |
daddu $sp,0 | |
daddu $sp,1 | |
daddu $sp,-1 | |
daddu $sp,256 | |
daddu $sp,-256 | |
daddu $2,$sp,0 | |
daddu $2,$sp,1 | |
daddu $2,$sp,-1 | |
daddu $2,$sp,32 | |
daddu $2,$sp,-32 | |
daddu $2,$sp,128 | |
daddu $2,$sp,-128 | |
addu $2,$3,0 | |
addu $2,$3,1 | |
addu $2,$3,-1 | |
addu $2,$3,16 | |
addu $2,$3,-16 | |
addu $2,$3,$4 | |
addu $2,0 | |
addu $2,1 | |
addu $2,-1 | |
addu $2,32 | |
addu $2,-32 | |
addu $2,128 | |
addu $2,-128 | |
la $2,data1 | |
la $2,data2 | |
la $2,bar | |
la $2,quux | |
addu $sp,0 | |
addu $sp,1 | |
addu $sp,-1 | |
addu $sp,256 | |
addu $sp,-256 | |
addu $2,$sp,0 | |
addu $2,$sp,1 | |
addu $2,$sp,-1 | |
addu $2,$sp,32 | |
addu $2,$sp,-32 | |
addu $2,$sp,128 | |
addu $2,$sp,-128 | |
data2: | |
.word 0 | |
insns2: | |
dsubu $2,$3,$4 | |
subu $2,$3,$4 | |
neg $2,$3 | |
and $2,$3 | |
or $2,$3 | |
xor $2,$3 | |
not $2,$3 | |
slt $2,0 | |
slt $2,1 | |
slt $2,-1 | |
slt $2,255 | |
slt $2,256 | |
slt $2,$3 | |
sltu $2,0 | |
sltu $2,1 | |
sltu $2,-1 | |
sltu $2,255 | |
sltu $2,256 | |
sltu $2,$3 | |
cmp $2,0 | |
cmp $2,1 | |
cmp $2,255 | |
cmp $2,256 | |
cmp $2,$3 | |
dsll $2,$3,0 | |
dsll $2,$3,1 | |
dsll $2,$3,8 | |
dsll $2,$3,9 | |
dsll $2,$3,63 | |
dsll $2,$3 | |
dsrl $2,0 | |
dsrl $2,1 | |
dsrl $2,8 | |
dsrl $2,9 | |
dsrl $2,63 | |
dsrl $2,$3 | |
dsra $2,0 | |
dsra $2,1 | |
dsra $2,8 | |
dsra $2,9 | |
dsra $2,63 | |
dsra $2,$3 | |
mflo $2 | |
mfhi $3 | |
sll $2,$3,0 | |
sll $2,$3,1 | |
sll $2,$3,8 | |
sll $2,$3,9 | |
sll $2,$3,31 | |
sll $2,$3 | |
srl $2,$3,0 | |
srl $2,$3,1 | |
srl $2,$3,8 | |
srl $2,$3,9 | |
srl $2,$3,31 | |
srl $2,$3 | |
sra $2,$3,0 | |
sra $2,$3,1 | |
sra $2,$3,8 | |
sra $2,$3,9 | |
sra $2,$3,31 | |
sra $2,$3 | |
dmult $2,$3 | |
dmultu $2,$3 | |
ddiv $2,$3 | |
ddivu $2,$3 | |
mult $2,$3 | |
multu $2,$3 | |
div $2,$3 | |
divu $2,$3 | |
jr $2 | |
jr $31 | |
jalr $31,$2 | |
beqz $2,insns1 | |
beqz $2,insns2 | |
beqz $2,bar | |
beqz $2,quux | |
bnez $2,insns1 | |
bnez $2,insns2 | |
bnez $2,bar | |
bnez $2,quux | |
bteqz insns1 | |
bteqz insns2 | |
bteqz bar | |
bteqz quux | |
btnez insns1 | |
btnez insns2 | |
btnez bar | |
btnez quux | |
b insns1 | |
b insns2 | |
b bar | |
b quux | |
break 0 | |
break 1 | |
break 63 | |
jal extern | |
entry | |
entry $4 | |
entry $4-$6,$16 | |
entry $16-$17,$31 | |
entry $31 | |
exit | |
exit $16 | |
exit $16-$17,$31 | |
exit $31 | |
.p2align 3 | |
bar: | |
.skip 200 | |
quux: |