1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
# 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
# Test out-of-range mapped constants
addiu16 $2, $4, 4 # OK
addiu16 $2, $4, 5 # error
addiu16 $2, $4, 7 # error
addiu16 $2, $4, 8 # OK
andi16 $2, $4, 4 # OK
andi16 $2, $4, 5 # error
andi16 $2, $4, 7 # OK
andi16 $2, $4, 8 # OK
# Test invalid ADDIUSP
addiusp16 4 # error
addiusp16 7 # error
addiusp16 8 # OK
addiusp16 10 # error
addiusp16 12 # OK
addiusp16 1028 # OK
addiusp16 1032 # error
addiusp16 -1032 # OK
addiusp16 -1036 # error
# Force at least 8 (non-delay-slot) zero bytes, to make 'objdump' print ...
.align 2
.space 8
|