blob: c58e54326e9772a71202e927816efe5f07a2b884 [file] [log] [blame]
# Source file used to test the microMIPS instruction size overrides (#0).
.text
foo:
# Smoke-test a trivial case.
nop
nop16
nop32
# Test ALU operations.
addu $2, $4
addu16 $2, $4
addu32 $2, $4
addu $12, $14
addu16 $12, $14
addu32 $12, $14
add.ps $f2, $f4
add16.ps $f2, $f4
add32.ps $f2, $f4
addiusp 256
addiusp16 256
addiusp32 256
# Test jumps and branches.
jar $23
jar16 $23
jar32 $23
jalr $4
jalr16 $4
jalr32 $4
jalr $24
jalr16 $24
jalr32 $24
jalr $31,$5
jalr16 $31,$5
jalr32 $31,$5
jalr $31,$25
jalr16 $31,$25
jalr32 $31,$25
jalr $30,$26
jalr16 $30,$26
jalr32 $30,$26
b bar
b16 bar
b32 bar
beqz $7, bar
beqz16 $7, bar
beqz32 $7, bar
beqz $27, bar
beqz16 $27, bar
beqz32 $27, bar
# Test branch delay slots.
.set noreorder
bltzal $2, bar
addu $16, $17
bltzal $2, bar
addu16 $16, $17
bltzal $2, bar
addu32 $16, $17
bltzals $2, bar
addu $16, $17
bltzals $2, bar
addu16 $16, $17
bltzals $2, bar
addu32 $16, $17
bltzal $2, bar
add.ps $f2, $f4
bltzal $2, bar
add16.ps $f2, $f4
bltzal $2, bar
add32.ps $f2, $f4
bltzals $2, bar
add.ps $f2, $f4
bltzals $2, bar
add16.ps $f2, $f4
bltzals $2, bar
add32.ps $f2, $f4
bltzal $2, bar
addiusp 256
bltzal $2, bar
addiusp16 256
bltzal $2, bar
addiusp32 256
bltzals $2, bar
addiusp 256
bltzals $2, bar
addiusp16 256
bltzals $2, bar
addiusp32 256
.set reorder
# Test macro delay slots.
.set noreorder
bltzall $2, bar
addu $16, $17
bltzall $2, bar
addu16 $16, $17
bltzall $2, bar
addu32 $16, $17
bltzall $2, bar
add.ps $f2, $f4
bltzall $2, bar
add16.ps $f2, $f4
bltzall $2, bar
add32.ps $f2, $f4
bltzall $2, bar
addiusp 256
bltzall $2, bar
addiusp16 256
bltzall $2, bar
addiusp32 256
.set reorder
# Test shift instructions to complement 64-bit tests.
sll $2, $3, 5
sll16 $2, $3, 5
sll32 $2, $3, 5
sll $2, $3, 13
sll16 $2, $3, 13
sll32 $2, $3, 13
sll $10, $11, 5
sll16 $10, $11, 5
sll32 $10, $11, 5
# Test 64-bit instructions.
dsll $2, $3, 5
dsll16 $2, $3, 5
dsll32 $2, $3, 5 # No way to force 32-bit DSLL.
dsll3216 $2, $3, 5
dsll3232 $2, $3, 5
dsll $2, $3, 13
dsll16 $2, $3, 13
dsll32 $2, $3, 13 # No way to force 32-bit DSLL.
dsll3216 $2, $3, 13
dsll3232 $2, $3, 13
dsll $10, $11, 5
dsll16 $10, $11, 5
dsll32 $10, $11, 5 # No way to force 32-bit DSLL.
dsll3216 $10, $11, 5
dsll3232 $10, $11, 5
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
.align 2
.space 8