1 #include <stdio.h> 2 3 #define TESTINST1(instruction, RSval, RTval, RD, RS, RT) \ 4 { \ 5 unsigned int out; \ 6 __asm__ volatile( \ 7 "li $" #RD ", 0\n\t" \ 8 "move $" #RS ", %1\n\t" \ 9 "move $" #RT ", %2\n\t" \ 10 instruction "\n\t" \ 11 "move %0, $" #RD "\n\t" \ 12 : "=&r" (out) \ 13 : "r" (RSval), "r" (RTval) \ 14 : #RD, #RS, #RT, "cc", "memory" \ 15 ); \ 16 printf("%s :: rd 0x%08x rs 0x%08x, rt 0x%08x\n", \ 17 instruction, out, RSval, RTval); \ 18 } 19 20 #define TESTINST2(instruction, RSval, imm, RT, RS) \ 21 { \ 22 unsigned int out; \ 23 __asm__ volatile( \ 24 "move $" #RS ", %1\n\t" \ 25 instruction "\n\t" \ 26 "move %0, $" #RT "\n\t" \ 27 : "=&r" (out) \ 28 : "r" (RSval) \ 29 : #RT, #RS, "cc", "memory" \ 30 ); \ 31 printf("%s :: rt 0x%08x rs 0x%08x, imm 0x%08x\n", \ 32 instruction, out, RSval, imm); \ 33 } 34 35 #define TESTINST3(instruction, RSval, RD, RS) \ 36 { \ 37 unsigned int out; \ 38 __asm__ volatile( \ 39 "move $" #RS ", %1\n\t" \ 40 instruction "\n\t" \ 41 "move %0, $" #RD "\n\t" \ 42 : "=&r" (out) \ 43 : "r" (RSval) \ 44 : #RD, #RS, "cc", "memory" \ 45 ); \ 46 printf("%s :: rd 0x%08x rs 0x%08x\n", \ 47 instruction, out, RSval); \ 48 } 49 50 #define TESTINST3a(instruction, RSval, RTval, RS, RT) \ 51 { \ 52 unsigned int HI; \ 53 unsigned int LO; \ 54 __asm__ volatile( \ 55 "li $" #RS ", 0x0\n\t" \ 56 "mthi $" #RS"\n\t" \ 57 "mtlo $" #RS"\n\t" \ 58 "move $" #RS ", %2\n\t" \ 59 "move $" #RT ", %3\n\t" \ 60 instruction "\n\t" \ 61 "mfhi %0 \n\t" \ 62 "mflo %1 \n\t" \ 63 : "=&r" (HI), "=&r" (LO) \ 64 : "r" (RSval), "r"(RTval) \ 65 : #RS, #RT, "cc", "memory" \ 66 ); \ 67 printf("%s :: rs 0x%08x rt 0x%08x HI 0x%08x LO 0x%08x \n", \ 68 instruction, RSval, RTval, HI, LO); \ 69 } 70 71 #define TESTINST4(instruction, RTval, RSval, RT, RS, pos, size) \ 72 { \ 73 unsigned int out; \ 74 __asm__ volatile( \ 75 "move $" #RT ", %1\n\t" \ 76 "move $" #RS ", %2\n\t" \ 77 instruction "\n\t" \ 78 "move %0, $" #RT "\n\t" \ 79 : "=&r" (out) \ 80 : "r" (RTval), "r" (RSval) \ 81 : #RT, #RS, "cc", "memory" \ 82 ); \ 83 printf("%s :: rt 0x%08x rs 0x%08x, pos 0x%08x, size 0x%08x\n", \ 84 instruction, out, RSval, pos, size); \ 85 } 86 87 const unsigned int mem[] = { 88 0x121f1e1f, 0, 3, -1, 89 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, 90 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, 91 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c 92 }; 93 94 // load $t0, 0($t1) 95 #define TESTINSN5LOAD(instruction, RTval, offset, RT) \ 96 { \ 97 unsigned int out; \ 98 __asm__ volatile( \ 99 "move $t1, %1\n\t" \ 100 "li $t0, " #RTval"\n\t" \ 101 instruction "\n\t" \ 102 "move %0, $" #RT "\n\t" \ 103 : "=&r" (out) \ 104 : "r" (mem), "r" (RTval) \ 105 : #RT, "cc", "memory" \ 106 ); \ 107 printf("%s :: rt 0x%08x\n", \ 108 instruction, out); \ 109 } 110 111 #define TESTINSN_HILO(RSval) \ 112 { \ 113 unsigned int HI; \ 114 unsigned int LO; \ 115 __asm__ volatile( \ 116 "move $t0, %2\n\t" \ 117 "mthi $t0\n\t" \ 118 "addiu $t0, $t0, 0xffff\n\t" \ 119 "mtlo $t0\n\t" \ 120 "mfhi %0\n\t" \ 121 "mflo %1\n\t" \ 122 : "=&r" (HI), "=&r" (LO) \ 123 : "r" (RSval)\ 124 : "cc", "memory" \ 125 ); \ 126 printf("mfhi mflo :: HI: 0x%x, LO: 0x%x\n", \ 127 HI, LO); \ 128 } 129 130 int main(int argc, char **argv) 131 { 132 printf("ADD\n"); 133 TESTINST1("add $t0, $t1, $t2", 0, 0, t0, t1, t2); 134 TESTINST1("add $t0, $t1, $t2", 0, 1, t0, t1, t2); 135 TESTINST1("add $t0, $t1, $t2", 1, 0, t0, t1, t2); 136 TESTINST1("add $t0, $t1, $t2", 1, 1, t0, t1, t2); 137 TESTINST1("add $t0, $t1, $t2", 0, -1, t0, t1, t2); 138 TESTINST1("add $t0, $t1, $t2", 1, -1, t0, t1, t2); 139 TESTINST1("add $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 140 TESTINST1("add $t0, $t1, $t2", 0x31415927, 0x27181728, t0, t1, t2); 141 TESTINST1("add $t0, $t1, $t2", 0x31415927, 0x97181728, t0, t1, t2); 142 TESTINST1("add $t0, $t1, $t2", -1, 0, t0, t1, t2); 143 TESTINST1("add $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 144 TESTINST1("add $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 145 146 printf("ADDI\n"); 147 TESTINST2("addi $t0, $t1, 0", 0, 0, t0, t1); 148 TESTINST2("addi $t0, $t1, 1", 0, 1, t0, t1); 149 TESTINST2("addi $t0, $t1, 1", 1, 0, t0, t1); 150 TESTINST2("addi $t0, $t1, 1", 1, 1, t0, t1); 151 TESTINST2("addi $t0, $t1, -1", 0, -1, t0, t1); 152 TESTINST2("addi $t0, $t1, -1", 1, -1, t0, t1); 153 TESTINST2("addi $t0, $t1, 0", 0x80000000, 0, t0, t1); 154 TESTINST2("addi $t0, $t1, 0", -1, 0, t0, t1); 155 TESTINST2("addi $t0, $t1, 0", 0x80000000, 0, t0, t1); 156 157 printf("ADDIU\n"); 158 TESTINST2("addiu $t0, $t1, 0", 0, 0, t0, t1); 159 TESTINST2("addiu $t0, $t1, 1", 0, 1, t0, t1); 160 TESTINST2("addiu $t0, $t1, 1", 1, 0, t0, t1); 161 TESTINST2("addiu $t0, $t1, 1", 1, 1, t0, t1); 162 TESTINST2("addiu $t0, $t1, -1", 0, -1, t0, t1); 163 TESTINST2("addiu $t0, $t1, -1", 1, -1, t0, t1); 164 TESTINST2("addiu $t0, $t1, 0", 0x80000000, 0, t0, t1); 165 TESTINST2("addiu $t0, $t1, 0", -1, 0, t0, t1); 166 TESTINST2("addiu $t0, $t1, 0", 0x80000000, 0, t0, t1); 167 168 printf("ADDU\n"); 169 TESTINST1("addu $t0, $t1, $t2", 0, 0, t0, t1, t2); 170 TESTINST1("addu $t0, $t1, $t2", 0, 1, t0, t1, t2); 171 TESTINST1("addu $t0, $t1, $t2", 1, 0, t0, t1, t2); 172 TESTINST1("addu $t0, $t1, $t2", 1, 1, t0, t1, t2); 173 TESTINST1("addu $t0, $t1, $t2", 0, -1, t0, t1, t2); 174 TESTINST1("addu $t0, $t1, $t2", 1, -1, t0, t1, t2); 175 TESTINST1("addu $t0, $t1, $t2", 0x31415927, 0x27181728, t0, t1, t2); 176 TESTINST1("addu $t0, $t1, $t2", 0x31415927, 0x97181728, t0, t1, t2); 177 TESTINST1("addu $t0, $t1, $t2", 0, 0, t0, t1, t2); 178 TESTINST1("addu $t0, $t1, $t2", 1, 0, t0, t1, t2); 179 TESTINST1("addu $t0, $t1, $t2", 0, 1, t0, t1, t2); 180 TESTINST1("addu $t0, $t1, $t2", -1, 0, t0, t1, t2); 181 TESTINST1("addu $t0, $t1, $t2", 0, -1, t0, t1, t2); 182 TESTINST1("addu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 183 TESTINST1("addu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 184 TESTINST1("addu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 185 TESTINST1("addu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 186 TESTINST1("addu $t0, $t1, $t2", 0x80000000, 0x7fffffff, t0, t1, t2); 187 TESTINST1("addu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 188 189 printf("AND\n"); 190 TESTINST1("and $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 191 TESTINST1("and $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 192 TESTINST1("and $t0, $t1, $t2", 0, 255, t0, t1, t2); 193 TESTINST1("and $t0, $t1, $t2", -1, 0, t0, t1, t2); 194 TESTINST1("and $t0, $t1, $t2", 0, 1, t0, t1, t2); 195 TESTINST1("and $t0, $t1, $t2", 0, 0, t0, t1, t2); 196 TESTINST1("and $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 197 TESTINST1("and $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 198 TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 199 TESTINST1("and $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 200 TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 201 TESTINST1("and $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 202 TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 203 TESTINST1("and $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 204 TESTINST1("and $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 205 TESTINST1("and $t0, $t1, $t2", 0, 255, t0, t1, t2); 206 TESTINST1("and $t0, $t1, $t2", 1, 0, t0, t1, t2); 207 TESTINST1("and $t0, $t1, $t2", 0, 1, t0, t1, t2); 208 TESTINST1("and $t0, $t1, $t2", -1, 0, t0, t1, t2); 209 TESTINST1("and $t0, $t1, $t2", 0, -1, t0, t1, t2); 210 TESTINST1("and $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 211 TESTINST1("and $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 212 TESTINST1("and $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 213 TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 214 TESTINST1("and $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 215 TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 216 217 printf("ANDI\n"); 218 TESTINST2("andi $t0, $t1, 1", 0, 1, t0, t1); 219 TESTINST2("andi $t0, $t1, 0", 1, 0, t0, t1); 220 TESTINST2("andi $t0, $t1, 1", 1, 1, t0, t1); 221 TESTINST2("andi $t0, $t1, 1", 0x7fffffff, 0, t0, t1); 222 TESTINST2("andi $t0, $t1, 0", 0x80000000, 0, t0, t1); 223 TESTINST2("andi $t0, $t1, 0x3145", 0xffffffff, 0x3145, t0, t1); 224 225 printf("CLO\n"); 226 TESTINST3("clo $t0, $t1", 0, t0, t1); 227 TESTINST3("clo $t0, $t1", 1, t0, t1); 228 TESTINST3("clo $t0, $t1", 0x10, t0, t1); 229 TESTINST3("clo $t0, $t1", 0xffffffff, t0, t1); 230 231 printf("CLZ\n"); 232 TESTINST3("clz $t0, $t1", 0, t0, t1); 233 TESTINST3("clz $t0, $t1", 1, t0, t1); 234 TESTINST3("clz $t0, $t1", 0x10, t0, t1); 235 TESTINST3("clz $t0, $t1", 0xffffffff, t0, t1); 236 237 printf("DIV\n"); 238 TESTINST3a("div $t0, $t1", 0x6, 0x2, t0, t1); 239 TESTINST3a("div $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 240 TESTINST3a("div $t0, $t1", 0xffffffff, 0x1, t0, t1); 241 TESTINST3a("div $t0, $t1", 0x1, 0xffffffff, t0, t1); 242 TESTINST3a("div $t0, $t1", 0x2, 0x6, t0, t1); 243 244 printf("DIVU\n"); 245 TESTINST3a("divu $t0, $t1", 0x6, 0x2, t0, t1); 246 TESTINST3a("divu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 247 TESTINST3a("divu $t0, $t1", 0xffffffff, 0x1, t0, t1); 248 TESTINST3a("divu $t0, $t1", 0x1, 0xffffffff, t0, t1); 249 TESTINST3a("divu $t0, $t1", 0x2, 0x6, t0, t1); 250 TESTINST3a("divu $t0, $t1", 0x0, 0x2, t0, t1); 251 252 #if (__mips==32) && (__mips_isa_rev>=2) 253 printf("EXT\n"); 254 TESTINST4("ext $t0, $t1, 2, 6", 0, 0xffffffff, t0, t1, 2, 6); 255 TESTINST4("ext $t0, $t1, 2, 6", 0xffffffff, 0xffffffff, t0, t1, 2, 6); 256 TESTINST4("ext $t0, $t1, 2, 6", 0, 0xffffffff, t0, t1, 31, 6); 257 TESTINST4("ext $t0, $t1, 2, 6", 0, 0, t0, t1, 32, 32); 258 TESTINST4("ext $t0, $t1, 2, 6", 0, 0xffff, t0, t1, 31, 0); 259 TESTINST4("ext $t0, $t1, 2, 6", 0, 0xff, t0, t1, 31, 0) 260 TESTINST4("ext $t0, $t1, 2, 6", 0, 0xf0000000, t0, t1, 31, 0) 261 TESTINST4("ext $t0, $t1, 2, 6", 0, 0xf0000000, t0, t1, 0, 31) 262 TESTINST4("ext $t0, $t1, 2, 6", 0, 0x31415927, t0, t1, 3, 25) 263 264 printf("INS\n"); 265 TESTINST4("ins $t0, $t1, 2, 6", 0, 0xffffffff, t0, t1, 2, 6); 266 TESTINST4("ins $t0, $t1, 2, 6", 0xffffffff, 0xffffffff, t0, t1, 2, 6); 267 TESTINST4("ins $t0, $t1, 2, 6", 0, 0xffffffff, t0, t1, 31, 6); 268 TESTINST4("ins $t0, $t1, 2, 6", 0, 0, t0, t1, 32, 32); 269 TESTINST4("ins $t0, $t1, 2, 6", 0, 0xffff, t0, t1, 31, 0); 270 TESTINST4("ins $t0, $t1, 2, 6", 0, 0xff, t0, t1, 31, 0) 271 TESTINST4("ins $t0, $t1, 2, 6", 0, 0xf0000000, t0, t1, 31, 0) 272 TESTINST4("ins $t0, $t1, 2, 6", 0, 0xf0000000, t0, t1, 0, 31) 273 TESTINST4("ins $t0, $t1, 2, 6", 0, 0x31415927, t0, t1, 3, 25) 274 #endif 275 276 printf("LB\n"); 277 TESTINSN5LOAD("lb $t0, 0($t1)", 0, 0, t0); 278 TESTINSN5LOAD("lb $t0, 4($t1)", 0, 4, t0); 279 TESTINSN5LOAD("lb $t0, 8($t1)", 0, 8, t0); 280 TESTINSN5LOAD("lb $t0, 12($t1)", 0, 12, t0); 281 TESTINSN5LOAD("lb $t0, 16($t1)", 0, 16, t0); 282 TESTINSN5LOAD("lb $t0, 20($t1)", 0, 20, t0); 283 TESTINSN5LOAD("lb $t0, 24($t1)", 0, 24, t0); 284 TESTINSN5LOAD("lb $t0, 28($t1)", 0, 28, t0); 285 TESTINSN5LOAD("lb $t0, 32($t1)", 0, 32, t0); 286 TESTINSN5LOAD("lb $t0, 36($t1)", 0, 36, t0); 287 TESTINSN5LOAD("lb $t0, 40($t1)", 0, 40, t0); 288 TESTINSN5LOAD("lb $t0, 44($t1)", 0, 44, t0); 289 TESTINSN5LOAD("lb $t0, 48($t1)", 0, 48, t0); 290 TESTINSN5LOAD("lb $t0, 52($t1)", 0, 52, t0); 291 TESTINSN5LOAD("lb $t0, 56($t1)", 0, 56, t0); 292 TESTINSN5LOAD("lb $t0, 60($t1)", 0, 60, t0); 293 TESTINSN5LOAD("lb $t0, 64($t1)", 0, 64, t0); 294 TESTINSN5LOAD("lb $t0, 2($t1)", 0, 2, t0); 295 TESTINSN5LOAD("lb $t0, 6($t1)", 0, 6, t0); 296 TESTINSN5LOAD("lb $t0, 10($t1)", 0, 10, t0); 297 TESTINSN5LOAD("lb $t0, 14($t1)", 0, 14, t0); 298 TESTINSN5LOAD("lb $t0, 18($t1)", 0, 18, t0); 299 TESTINSN5LOAD("lb $t0, 22($t1)", 0, 22, t0); 300 TESTINSN5LOAD("lb $t0, 26($t1)", 0, 26, t0); 301 TESTINSN5LOAD("lb $t0, 30($t1)", 0, 30, t0); 302 TESTINSN5LOAD("lb $t0, 34($t1)", 0, 34, t0); 303 TESTINSN5LOAD("lb $t0, 38($t1)", 0, 38, t0); 304 305 printf("LBU\n"); 306 TESTINSN5LOAD("lbu $t0, 0($t1)", 0, 0, t0); 307 TESTINSN5LOAD("lbu $t0, 4($t1)", 0, 4, t0); 308 TESTINSN5LOAD("lbu $t0, 8($t1)", 0, 8, t0); 309 TESTINSN5LOAD("lbu $t0, 12($t1)", 0, 12, t0); 310 TESTINSN5LOAD("lbu $t0, 16($t1)", 0, 16, t0); 311 TESTINSN5LOAD("lbu $t0, 20($t1)", 0, 20, t0); 312 TESTINSN5LOAD("lbu $t0, 24($t1)", 0, 24, t0); 313 TESTINSN5LOAD("lbu $t0, 28($t1)", 0, 28, t0); 314 TESTINSN5LOAD("lbu $t0, 32($t1)", 0, 32, t0); 315 TESTINSN5LOAD("lbu $t0, 36($t1)", 0, 36, t0); 316 TESTINSN5LOAD("lbu $t0, 40($t1)", 0, 40, t0); 317 TESTINSN5LOAD("lbu $t0, 44($t1)", 0, 44, t0); 318 TESTINSN5LOAD("lbu $t0, 48($t1)", 0, 48, t0); 319 TESTINSN5LOAD("lbu $t0, 52($t1)", 0, 52, t0); 320 TESTINSN5LOAD("lbu $t0, 56($t1)", 0, 56, t0); 321 TESTINSN5LOAD("lbu $t0, 60($t1)", 0, 60, t0); 322 TESTINSN5LOAD("lbu $t0, 64($t1)", 0, 64, t0); 323 TESTINSN5LOAD("lbu $t0, 2($t1)", 0, 2, t0); 324 TESTINSN5LOAD("lbu $t0, 6($t1)", 0, 6, t0); 325 TESTINSN5LOAD("lbu $t0, 10($t1)", 0, 10, t0); 326 TESTINSN5LOAD("lbu $t0, 14($t1)", 0, 14, t0); 327 TESTINSN5LOAD("lbu $t0, 18($t1)", 0, 18, t0); 328 TESTINSN5LOAD("lbu $t0, 22($t1)", 0, 22, t0); 329 TESTINSN5LOAD("lbu $t0, 26($t1)", 0, 26, t0); 330 TESTINSN5LOAD("lbu $t0, 30($t1)", 0, 30, t0); 331 TESTINSN5LOAD("lbu $t0, 34($t1)", 0, 34, t0); 332 TESTINSN5LOAD("lbu $t0, 38($t1)", 0, 38, t0); 333 334 printf("LH\n"); 335 TESTINSN5LOAD("lh $t0, 0($t1)", 0, 0, t0); 336 TESTINSN5LOAD("lh $t0, 4($t1)", 0, 4, t0); 337 TESTINSN5LOAD("lh $t0, 8($t1)", 0, 8, t0); 338 TESTINSN5LOAD("lh $t0, 12($t1)", 0, 12, t0); 339 TESTINSN5LOAD("lh $t0, 16($t1)", 0, 16, t0); 340 TESTINSN5LOAD("lh $t0, 20($t1)", 0, 20, t0); 341 TESTINSN5LOAD("lh $t0, 24($t1)", 0, 24, t0); 342 TESTINSN5LOAD("lh $t0, 28($t1)", 0, 28, t0); 343 TESTINSN5LOAD("lh $t0, 32($t1)", 0, 32, t0); 344 TESTINSN5LOAD("lh $t0, 36($t1)", 0, 36, t0); 345 TESTINSN5LOAD("lh $t0, 40($t1)", 0, 40, t0); 346 TESTINSN5LOAD("lh $t0, 44($t1)", 0, 44, t0); 347 TESTINSN5LOAD("lh $t0, 48($t1)", 0, 48, t0); 348 TESTINSN5LOAD("lh $t0, 52($t1)", 0, 52, t0); 349 TESTINSN5LOAD("lh $t0, 56($t1)", 0, 56, t0); 350 TESTINSN5LOAD("lh $t0, 60($t1)", 0, 60, t0); 351 TESTINSN5LOAD("lh $t0, 64($t1)", 0, 64, t0); 352 TESTINSN5LOAD("lh $t0, 2($t1)", 0, 2, t0); 353 TESTINSN5LOAD("lh $t0, 6($t1)", 0, 6, t0); 354 TESTINSN5LOAD("lh $t0, 10($t1)", 0, 10, t0); 355 TESTINSN5LOAD("lh $t0, 14($t1)", 0, 14, t0); 356 TESTINSN5LOAD("lh $t0, 18($t1)", 0, 18, t0); 357 TESTINSN5LOAD("lh $t0, 22($t1)", 0, 22, t0); 358 TESTINSN5LOAD("lh $t0, 26($t1)", 0, 26, t0); 359 TESTINSN5LOAD("lh $t0, 30($t1)", 0, 30, t0); 360 TESTINSN5LOAD("lh $t0, 34($t1)", 0, 34, t0); 361 TESTINSN5LOAD("lh $t0, 38($t1)", 0, 38, t0); 362 363 printf("LHU\n"); 364 TESTINSN5LOAD("lhu $t0, 0($t1)", 0, 0, t0); 365 TESTINSN5LOAD("lhu $t0, 4($t1)", 0, 4, t0); 366 TESTINSN5LOAD("lhu $t0, 8($t1)", 0, 8, t0); 367 TESTINSN5LOAD("lhu $t0, 12($t1)", 0, 12, t0); 368 TESTINSN5LOAD("lhu $t0, 16($t1)", 0, 16, t0); 369 TESTINSN5LOAD("lhu $t0, 20($t1)", 0, 20, t0); 370 TESTINSN5LOAD("lhu $t0, 24($t1)", 0, 24, t0); 371 TESTINSN5LOAD("lhu $t0, 28($t1)", 0, 28, t0); 372 TESTINSN5LOAD("lhu $t0, 32($t1)", 0, 32, t0); 373 TESTINSN5LOAD("lhu $t0, 36($t1)", 0, 36, t0); 374 TESTINSN5LOAD("lhu $t0, 40($t1)", 0, 40, t0); 375 TESTINSN5LOAD("lhu $t0, 44($t1)", 0, 44, t0); 376 TESTINSN5LOAD("lhu $t0, 48($t1)", 0, 48, t0); 377 TESTINSN5LOAD("lhu $t0, 52($t1)", 0, 52, t0); 378 TESTINSN5LOAD("lhu $t0, 56($t1)", 0, 56, t0); 379 TESTINSN5LOAD("lhu $t0, 60($t1)", 0, 60, t0); 380 TESTINSN5LOAD("lhu $t0, 64($t1)", 0, 64, t0); 381 TESTINSN5LOAD("lhu $t0, 2($t1)", 0, 2, t0); 382 TESTINSN5LOAD("lhu $t0, 6($t1)", 0, 6, t0); 383 TESTINSN5LOAD("lhu $t0, 10($t1)", 0, 10, t0); 384 TESTINSN5LOAD("lhu $t0, 14($t1)", 0, 14, t0); 385 TESTINSN5LOAD("lhu $t0, 18($t1)", 0, 18, t0); 386 TESTINSN5LOAD("lhu $t0, 22($t1)", 0, 22, t0); 387 TESTINSN5LOAD("lhu $t0, 26($t1)", 0, 26, t0); 388 TESTINSN5LOAD("lhu $t0, 30($t1)", 0, 30, t0); 389 TESTINSN5LOAD("lhu $t0, 34($t1)", 0, 34, t0); 390 TESTINSN5LOAD("lhu $t0, 38($t1)", 0, 38, t0); 391 392 printf("LUI\n"); 393 TESTINST3("lui $t0, 0xffff", 0xffff, t0, t1); 394 TESTINST3("lui $t0, 0xff00", 0xff00, t0, t1); 395 TESTINST3("lui $t0, 0xff", 0xff, t0, t1); 396 TESTINST3("lui $t0, 0x0", 0x0, t0, t1); 397 TESTINST3("lui $t0, 0x5", 0x5, t0, t1); 398 TESTINST3("lui $t0, 0x387", 0x387, t0, t1); 399 400 printf("LW\n"); 401 TESTINSN5LOAD("lw $t0, 0($t1)", 0, 0, t0); 402 TESTINSN5LOAD("lw $t0, 4($t1)", 0, 4, t0); 403 TESTINSN5LOAD("lw $t0, 8($t1)", 0, 8, t0); 404 TESTINSN5LOAD("lw $t0, 12($t1)", 0, 12, t0); 405 TESTINSN5LOAD("lw $t0, 16($t1)", 0, 16, t0); 406 TESTINSN5LOAD("lw $t0, 20($t1)", 0, 20, t0); 407 TESTINSN5LOAD("lw $t0, 24($t1)", 0, 24, t0); 408 TESTINSN5LOAD("lw $t0, 28($t1)", 0, 28, t0); 409 TESTINSN5LOAD("lw $t0, 32($t1)", 0, 32, t0); 410 TESTINSN5LOAD("lw $t0, 36($t1)", 0, 36, t0); 411 TESTINSN5LOAD("lw $t0, 40($t1)", 0, 40, t0); 412 TESTINSN5LOAD("lw $t0, 44($t1)", 0, 44, t0); 413 TESTINSN5LOAD("lw $t0, 48($t1)", 0, 48, t0); 414 TESTINSN5LOAD("lw $t0, 52($t1)", 0, 52, t0); 415 TESTINSN5LOAD("lw $t0, 56($t1)", 0, 56, t0); 416 TESTINSN5LOAD("lw $t0, 60($t1)", 0, 60, t0); 417 TESTINSN5LOAD("lw $t0, 64($t1)", 0, 64, t0); 418 TESTINSN5LOAD("lw $t0, 2($t1)", 0, 2, t0); 419 TESTINSN5LOAD("lw $t0, 6($t1)", 0, 6, t0); 420 TESTINSN5LOAD("lw $t0, 10($t1)", 0, 10, t0); 421 TESTINSN5LOAD("lw $t0, 14($t1)", 0, 14, t0); 422 TESTINSN5LOAD("lw $t0, 18($t1)", 0, 18, t0); 423 TESTINSN5LOAD("lw $t0, 22($t1)", 0, 22, t0); 424 TESTINSN5LOAD("lw $t0, 26($t1)", 0, 26, t0); 425 TESTINSN5LOAD("lw $t0, 30($t1)", 0, 30, t0); 426 TESTINSN5LOAD("lw $t0, 34($t1)", 0, 34, t0); 427 TESTINSN5LOAD("lw $t0, 38($t1)", 0, 38, t0); 428 429 printf("LWL\n"); 430 TESTINSN5LOAD("lwl $t0, 0($t1)", 0, 0, t0); 431 TESTINSN5LOAD("lwl $t0, 4($t1)", 0, 4, t0); 432 TESTINSN5LOAD("lwl $t0, 8($t1)", 0, 8, t0); 433 TESTINSN5LOAD("lwl $t0, 12($t1)", 0, 12, t0); 434 TESTINSN5LOAD("lwl $t0, 16($t1)", 0, 16, t0); 435 TESTINSN5LOAD("lwl $t0, 20($t1)", 0, 20, t0); 436 TESTINSN5LOAD("lwl $t0, 24($t1)", 0, 24, t0); 437 TESTINSN5LOAD("lwl $t0, 28($t1)", 0, 28, t0); 438 TESTINSN5LOAD("lwl $t0, 32($t1)", 0, 32, t0); 439 TESTINSN5LOAD("lwl $t0, 36($t1)", 0, 36, t0); 440 TESTINSN5LOAD("lwl $t0, 40($t1)", 0, 40, t0); 441 TESTINSN5LOAD("lwl $t0, 44($t1)", 0, 44, t0); 442 TESTINSN5LOAD("lwl $t0, 48($t1)", 0, 48, t0); 443 TESTINSN5LOAD("lwl $t0, 52($t1)", 0, 52, t0); 444 TESTINSN5LOAD("lwl $t0, 56($t1)", 0, 56, t0); 445 TESTINSN5LOAD("lwl $t0, 60($t1)", 0, 60, t0); 446 TESTINSN5LOAD("lwl $t0, 64($t1)", 0, 64, t0); 447 TESTINSN5LOAD("lwl $t0, 2($t1)", 0, 2, t0); 448 TESTINSN5LOAD("lwl $t0, 6($t1)", 0, 6, t0); 449 TESTINSN5LOAD("lwl $t0, 10($t1)", 0, 10, t0); 450 TESTINSN5LOAD("lwl $t0, 14($t1)", 0, 14, t0); 451 TESTINSN5LOAD("lwl $t0, 18($t1)", 0, 18, t0); 452 TESTINSN5LOAD("lwl $t0, 22($t1)", 0, 22, t0); 453 TESTINSN5LOAD("lwl $t0, 26($t1)", 0, 26, t0); 454 TESTINSN5LOAD("lwl $t0, 30($t1)", 0, 30, t0); 455 TESTINSN5LOAD("lwl $t0, 34($t1)", 0, 34, t0); 456 TESTINSN5LOAD("lwl $t0, 38($t1)", 0, 38, t0); 457 458 printf("LWR\n"); 459 TESTINSN5LOAD("lwr $t0, 0($t1)", 0, 0, t0); 460 TESTINSN5LOAD("lwr $t0, 4($t1)", 0, 4, t0); 461 TESTINSN5LOAD("lwr $t0, 8($t1)", 0, 8, t0); 462 TESTINSN5LOAD("lwr $t0, 12($t1)", 0, 12, t0); 463 TESTINSN5LOAD("lwr $t0, 16($t1)", 0, 16, t0); 464 TESTINSN5LOAD("lwr $t0, 20($t1)", 0, 20, t0); 465 TESTINSN5LOAD("lwr $t0, 24($t1)", 0, 24, t0); 466 TESTINSN5LOAD("lwr $t0, 28($t1)", 0, 28, t0); 467 TESTINSN5LOAD("lwr $t0, 32($t1)", 0, 32, t0); 468 TESTINSN5LOAD("lwr $t0, 36($t1)", 0, 36, t0); 469 TESTINSN5LOAD("lwr $t0, 40($t1)", 0, 40, t0); 470 TESTINSN5LOAD("lwr $t0, 44($t1)", 0, 44, t0); 471 TESTINSN5LOAD("lwr $t0, 48($t1)", 0, 48, t0); 472 TESTINSN5LOAD("lwr $t0, 52($t1)", 0, 52, t0); 473 TESTINSN5LOAD("lwr $t0, 56($t1)", 0, 56, t0); 474 TESTINSN5LOAD("lwr $t0, 60($t1)", 0, 60, t0); 475 TESTINSN5LOAD("lwr $t0, 64($t1)", 0, 64, t0); 476 TESTINSN5LOAD("lwr $t0, 2($t1)", 0, 2, t0); 477 TESTINSN5LOAD("lwr $t0, 6($t1)", 0, 6, t0); 478 TESTINSN5LOAD("lwr $t0, 10($t1)", 0, 10, t0); 479 TESTINSN5LOAD("lwr $t0, 14($t1)", 0, 14, t0); 480 TESTINSN5LOAD("lwr $t0, 18($t1)", 0, 18, t0); 481 TESTINSN5LOAD("lwr $t0, 22($t1)", 0, 22, t0); 482 TESTINSN5LOAD("lwr $t0, 26($t1)", 0, 26, t0); 483 TESTINSN5LOAD("lwr $t0, 30($t1)", 0, 30, t0); 484 TESTINSN5LOAD("lwr $t0, 34($t1)", 0, 34, t0); 485 TESTINSN5LOAD("lwr $t0, 38($t1)", 0, 38, t0); 486 487 printf("MADD\n"); 488 TESTINST3a("madd $t0, $t1", 0x6, 0x2, t0, t1); 489 TESTINST3a("madd $t0, $t1", 0x55, 0x28, t0, t1); 490 TESTINST3a("madd $t0, $t1", 0x18, 0xfff, t0, t1); 491 TESTINST3a("madd $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 492 TESTINST3a("madd $t0, $t1", 0xffffffff, 0x1, t0, t1); 493 TESTINST3a("madd $t0, $t1", 0x1, 0xffffffff, t0, t1); 494 TESTINST3a("madd $t0, $t1", 0x2, 0x6, t0, t1); 495 TESTINST3a("madd $t0, $t1", 0x356, 0x555, t0, t1); 496 497 printf("MADDU\n"); 498 TESTINST3a("maddu $t0, $t1", 0x6, 0x2, t0, t1); 499 TESTINST3a("maddu $t0, $t1", 0x55, 0x28, t0, t1); 500 TESTINST3a("maddu $t0, $t1", 0x18, 0xfff, t0, t1); 501 TESTINST3a("maddu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 502 TESTINST3a("maddu $t0, $t1", 0xffffffff, 0x1, t0, t1); 503 TESTINST3a("maddu $t0, $t1", 0x1, 0xffffffff, t0, t1); 504 TESTINST3a("maddu $t0, $t1", 0x2, 0x6, t0, t1); 505 TESTINST3a("maddu $t0, $t1", 0x356, 0x555, t0, t1); 506 507 printf("MOVN\n"); 508 TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); 509 TESTINST1("movn $t0, $t1, $t2", 0x31415927, 1, t0, t1, t2); 510 TESTINST1("movn $t0, $t1, $t2", 0, 255, t0, t1, t2); 511 TESTINST1("movn $t0, $t1, $t2", -1, 0, t0, t1, t2); 512 TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); 513 TESTINST1("movn $t0, $t1, $t2", 0, 0, t0, t1, t2); 514 TESTINST1("movn $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 515 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 516 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 1, t0, t1, t2); 517 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 518 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 519 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 520 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 521 TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); 522 TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 523 TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); 524 TESTINST1("movn $t0, $t1, $t2", 1, 0, t0, t1, t2); 525 TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); 526 TESTINST1("movn $t0, $t1, $t2", -1, 0, t0, t1, t2); 527 TESTINST1("movn $t0, $t1, $t2", 0, -1, t0, t1, t2); 528 TESTINST1("movn $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 529 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 530 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 531 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 532 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 533 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 534 535 printf("MOVZ\n"); 536 TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); 537 TESTINST1("movz $t0, $t1, $t2", 0x31415927, 1, t0, t1, t2); 538 TESTINST1("movz $t0, $t1, $t2", 0, 255, t0, t1, t2); 539 TESTINST1("movz $t0, $t1, $t2", -1, 0, t0, t1, t2); 540 TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); 541 TESTINST1("movz $t0, $t1, $t2", 0, 0, t0, t1, t2); 542 TESTINST1("movz $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 543 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 544 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 1, t0, t1, t2); 545 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 546 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 547 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 548 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 549 TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); 550 TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 551 TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); 552 TESTINST1("movz $t0, $t1, $t2", 1, 0, t0, t1, t2); 553 TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); 554 TESTINST1("movz $t0, $t1, $t2", -1, 0, t0, t1, t2); 555 TESTINST1("movz $t0, $t1, $t2", 0, -1, t0, t1, t2); 556 TESTINST1("movz $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 557 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 558 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 559 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 560 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 561 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 562 563 printf("MSUB\n"); 564 TESTINST3a("msub $t0, $t1", 0x6, 0x2, t0, t1); 565 TESTINST3a("msub $t0, $t1", 0x55, 0x28, t0, t1); 566 TESTINST3a("msub $t0, $t1", 0x18, 0xfff, t0, t1); 567 TESTINST3a("msub $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 568 TESTINST3a("msub $t0, $t1", 0xffffffff, 0x1, t0, t1); 569 TESTINST3a("msub $t0, $t1", 0x1, 0xffffffff, t0, t1); 570 TESTINST3a("msub $t0, $t1", 0x2, 0x6, t0, t1); 571 TESTINST3a("msub $t0, $t1", 0x356, 0x555, t0, t1); 572 573 printf("MSUBU\n"); 574 TESTINST3a("msubu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 575 TESTINST3a("msubu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 576 TESTINST3a("msubu $t0, $t1", 0, 255, t0, t1); 577 TESTINST3a("msubu $t0, $t1", -1, 0, t0, t1); 578 TESTINST3a("msubu $t0, $t1", 0, 1, t0, t1); 579 TESTINST3a("msubu $t0, $t1", 0, 0, t0, t1); 580 TESTINST3a("msubu $t0, $t1", 0x80000000, -1, t0, t1); 581 TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 582 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0, t0, t1); 583 TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 584 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 585 TESTINST3a("msubu $t0, $t1", 0x80000000, 0xff000000, t0, t1); 586 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 587 TESTINST3a("msubu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 588 TESTINST3a("msubu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 589 TESTINST3a("msubu $t0, $t1", 0, 255, t0, t1); 590 TESTINST3a("msubu $t0, $t1", 1, 0, t0, t1); 591 TESTINST3a("msubu $t0, $t1", 0, 1, t0, t1); 592 TESTINST3a("msubu $t0, $t1", -1, 0, t0, t1); 593 TESTINST3a("msubu $t0, $t1", 0, -1, t0, t1); 594 TESTINST3a("msubu $t0, $t1", 0, 0x80000000, t0, t1); 595 TESTINST3a("msubu $t0, $t1", 0x80000000, 0, t0, t1); 596 TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 597 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 598 TESTINST3a("msubu $t0, $t1", 0x80000000, 0xff000000, t0, t1); 599 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 600 TESTINST3a("msubu $t0, $t1", 0xffffffff, 0, t0, t1); 601 TESTINST3a("msubu $t0, $t1", 0, 0xffffffff, t0, t1); 602 TESTINST3a("msubu $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); 603 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 604 TESTINST3a("msubu $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); 605 606 printf("MUL\n"); 607 TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 608 TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 609 TESTINST1("mul $t0, $t1, $t2", 0, 255, t0, t1, t2); 610 TESTINST1("mul $t0, $t1, $t2", -1, 0, t0, t1, t2); 611 TESTINST1("mul $t0, $t1, $t2", 0, 1, t0, t1, t2); 612 TESTINST1("mul $t0, $t1, $t2", 0, 0, t0, t1, t2); 613 TESTINST1("mul $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 614 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 615 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 616 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 617 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 618 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 619 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 620 TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 621 TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 622 TESTINST1("mul $t0, $t1, $t2", 0, 255, t0, t1, t2); 623 TESTINST1("mul $t0, $t1, $t2", 1, 0, t0, t1, t2); 624 TESTINST1("mul $t0, $t1, $t2", 0, 1, t0, t1, t2); 625 TESTINST1("mul $t0, $t1, $t2", -1, 0, t0, t1, t2); 626 TESTINST1("mul $t0, $t1, $t2", 0, -1, t0, t1, t2); 627 TESTINST1("mul $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 628 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 629 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 630 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 631 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 632 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 633 TESTINST1("mul $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 634 TESTINST1("mul $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 635 TESTINST1("mul $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 636 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 637 TESTINST1("mul $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 638 639 printf("MULT\n"); 640 TESTINST3a("mult $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 641 TESTINST3a("mult $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 642 TESTINST3a("mult $t0, $t1", 0, 255, t0, t1); 643 TESTINST3a("mult $t0, $t1", -1, 0, t0, t1); 644 TESTINST3a("mult $t0, $t1", 0, 1, t0, t1); 645 TESTINST3a("mult $t0, $t1", 0, 0, t0, t1); 646 TESTINST3a("mult $t0, $t1", 0x80000000, -1, t0, t1); 647 TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); 648 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0, t0, t1); 649 TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); 650 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 651 TESTINST3a("mult $t0, $t1", 0x80000000, 0xff000000, t0, t1); 652 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 653 TESTINST3a("mult $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 654 TESTINST3a("mult $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 655 TESTINST3a("mult $t0, $t1", 0, 255, t0, t1); 656 TESTINST3a("mult $t0, $t1", 1, 0, t0, t1); 657 TESTINST3a("mult $t0, $t1", 0, 1, t0, t1); 658 TESTINST3a("mult $t0, $t1", -1, 0, t0, t1); 659 TESTINST3a("mult $t0, $t1", 0, -1, t0, t1); 660 TESTINST3a("mult $t0, $t1", 0, 0x80000000, t0, t1); 661 TESTINST3a("mult $t0, $t1", 0x80000000, 0, t0, t1); 662 TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); 663 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 664 TESTINST3a("mult $t0, $t1", 0x80000000, 0xff000000, t0, t1); 665 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 666 TESTINST3a("mult $t0, $t1", 0xffffffff, 0, t0, t1); 667 TESTINST3a("mult $t0, $t1", 0, 0xffffffff, t0, t1); 668 TESTINST3a("mult $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); 669 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 670 TESTINST3a("mult $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); 671 672 printf("MULTU\n"); 673 TESTINST3a("multu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 674 TESTINST3a("multu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 675 TESTINST3a("multu $t0, $t1", 0, 255, t0, t1); 676 TESTINST3a("multu $t0, $t1", -1, 0, t0, t1); 677 TESTINST3a("multu $t0, $t1", 0, 1, t0, t1); 678 TESTINST3a("multu $t0, $t1", 0, 0, t0, t1); 679 TESTINST3a("multu $t0, $t1", 0x80000000, -1, t0, t1); 680 TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 681 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0, t0, t1); 682 TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 683 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 684 TESTINST3a("multu $t0, $t1", 0x80000000, 0xff000000, t0, t1); 685 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 686 TESTINST3a("multu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 687 TESTINST3a("multu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 688 TESTINST3a("multu $t0, $t1", 0, 255, t0, t1); 689 TESTINST3a("multu $t0, $t1", 1, 0, t0, t1); 690 TESTINST3a("multu $t0, $t1", 0, 1, t0, t1); 691 TESTINST3a("multu $t0, $t1", -1, 0, t0, t1); 692 TESTINST3a("multu $t0, $t1", 0, -1, t0, t1); 693 TESTINST3a("multu $t0, $t1", 0, 0x80000000, t0, t1); 694 TESTINST3a("multu $t0, $t1", 0x80000000, 0, t0, t1); 695 TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 696 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 697 TESTINST3a("multu $t0, $t1", 0x80000000, 0xff000000, t0, t1); 698 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 699 TESTINST3a("multu $t0, $t1", 0xffffffff, 0, t0, t1); 700 TESTINST3a("multu $t0, $t1", 0, 0xffffffff, t0, t1); 701 TESTINST3a("multu $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); 702 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 703 TESTINST3a("multu $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); 704 705 printf("NOR\n"); 706 TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 707 TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 708 TESTINST1("nor $t0, $t1, $t2", 0, 255, t0, t1, t2); 709 TESTINST1("nor $t0, $t1, $t2", -1, 0, t0, t1, t2); 710 TESTINST1("nor $t0, $t1, $t2", 0, 1, t0, t1, t2); 711 TESTINST1("nor $t0, $t1, $t2", 0, 0, t0, t1, t2); 712 TESTINST1("nor $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 713 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 714 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 715 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 716 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 717 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 718 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 719 TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 720 TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 721 TESTINST1("nor $t0, $t1, $t2", 0, 255, t0, t1, t2); 722 TESTINST1("nor $t0, $t1, $t2", 1, 0, t0, t1, t2); 723 TESTINST1("nor $t0, $t1, $t2", 0, 1, t0, t1, t2); 724 TESTINST1("nor $t0, $t1, $t2", -1, 0, t0, t1, t2); 725 TESTINST1("nor $t0, $t1, $t2", 0, -1, t0, t1, t2); 726 TESTINST1("nor $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 727 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 728 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 729 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 730 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 731 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 732 TESTINST1("nor $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 733 TESTINST1("nor $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 734 TESTINST1("nor $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 735 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 736 TESTINST1("nor $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 737 738 #if (__mips==32) && (__mips_isa_rev>=2) 739 printf("WSBH\n"); 740 TESTINST3("wsbh $t0, $t1", 0x2, t0, t1); 741 TESTINST3("wsbh $t0, $t1", 0x28, t0, t1); 742 TESTINST3("wsbh $t0, $t1", -258, t0, t1); 743 TESTINST3("wsbh $t0, $t1", 0x7fffffff, t0, t1); 744 TESTINST3("wsbh $t0, $t1", -11, t0, t1); 745 TESTINST3("wsbh $t0, $t1", 0xffffffff, t0, t1); 746 TESTINST3("wsbh $t0, $t1", 0x16, t0, t1); 747 TESTINST3("wsbh $t0, $t1", -1, t0, t1); 748 #endif 749 750 printf("NOT\n"); 751 TESTINST3("not $t0, $t1", 0x2, t0, t1); 752 TESTINST3("not $t0, $t1", 0x28, t0, t1); 753 TESTINST3("not $t0, $t1", -258, t0, t1); 754 TESTINST3("not $t0, $t1", 0x7fffffff, t0, t1); 755 TESTINST3("not $t0, $t1", -11, t0, t1); 756 TESTINST3("not $t0, $t1", 0xffffffff, t0, t1); 757 TESTINST3("not $t0, $t1", 0x16, t0, t1); 758 TESTINST3("not $t0, $t1", -1, t0, t1); 759 760 printf("NEGU\n"); 761 TESTINST3("negu $t0, $t1", 0x2, t0, t1); 762 TESTINST3("negu $t0, $t1", 0x28, t0, t1); 763 TESTINST3("negu $t0, $t1", -258, t0, t1); 764 TESTINST3("negu $t0, $t1", 0x7fffffff, t0, t1); 765 TESTINST3("negu $t0, $t1", -11, t0, t1); 766 TESTINST3("negu $t0, $t1", 0xffffffff, t0, t1); 767 TESTINST3("negu $t0, $t1", 0x16, t0, t1); 768 TESTINST3("negu $t0, $t1", -1, t0, t1); 769 770 printf("OR\n"); 771 TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 772 TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 773 TESTINST1("or $t0, $t1, $t2", 0, 255, t0, t1, t2); 774 TESTINST1("or $t0, $t1, $t2", -1, 0, t0, t1, t2); 775 TESTINST1("or $t0, $t1, $t2", 0, 1, t0, t1, t2); 776 TESTINST1("or $t0, $t1, $t2", 0, 0, t0, t1, t2); 777 TESTINST1("or $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 778 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 779 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 780 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 781 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 782 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 783 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 784 TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 785 TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 786 TESTINST1("or $t0, $t1, $t2", 0, 255, t0, t1, t2); 787 TESTINST1("or $t0, $t1, $t2", 1, 0, t0, t1, t2); 788 TESTINST1("or $t0, $t1, $t2", 0, 1, t0, t1, t2); 789 TESTINST1("or $t0, $t1, $t2", -1, 0, t0, t1, t2); 790 TESTINST1("or $t0, $t1, $t2", 0, -1, t0, t1, t2); 791 TESTINST1("or $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 792 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 793 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 794 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 795 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 796 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 797 TESTINST1("or $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 798 TESTINST1("or $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 799 TESTINST1("or $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 800 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 801 TESTINST1("or $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 802 803 printf("ORI\n"); 804 TESTINST2("ori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); 805 TESTINST2("ori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); 806 TESTINST2("ori $t0, $t1, 255", 0, 255, t0, t1); 807 TESTINST2("ori $t0, $t1, 0", -1, 0, t0, t1); 808 TESTINST2("ori $t0, $t1, 1", 0, 1, t0, t1); 809 TESTINST2("ori $t0, $t1, 0", 0, 0, t0, t1); 810 TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 811 TESTINST2("ori $t0, $t1, 0", 0x7fffffff, 0, t0, t1); 812 TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 813 TESTINST2("ori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); 814 TESTINST2("ori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); 815 TESTINST2("ori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); 816 TESTINST2("ori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); 817 TESTINST2("ori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); 818 TESTINST2("ori $t0, $t1, 255", 0, 255, t0, t1); 819 TESTINST2("ori $t0, $t1, 0", 1, 0, t0, t1); 820 TESTINST2("ori $t0, $t1, 1", 0, 1, t0, t1); 821 TESTINST2("ori $t0, $t1, 0", -1, 0, t0, t1); 822 TESTINST2("ori $t0, $t1, 0x8000", 0, 0x8000, t0, t1); 823 TESTINST2("ori $t0, $t1, 0", 0x8000, 0, t0, t1); 824 TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 825 TESTINST2("ori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); 826 TESTINST2("ori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); 827 TESTINST2("ori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); 828 TESTINST2("ori $t0, $t1, 0", 0xffff, 0, t0, t1); 829 TESTINST2("ori $t0, $t1, 0xffff", 0, 0xffff, t0, t1); 830 TESTINST2("ori $t0, $t1, 0xffff", 0xffffffff, 0xffff, t0, t1); 831 TESTINST2("ori $t0, $t1, 0x7fff", 0x7fffffff, 0x7fff, t0, t1); 832 TESTINST2("ori $t0, $t1, 0x0000", 0x0000ffff, 0x0000, t0, t1); 833 834 #if (__mips==32) && (__mips_isa_rev>=2) 835 printf("ROTR\n"); 836 TESTINST2("rotr $t0, $t1, 0x00000000", 0x31415927, 0x00000000, t0, t1); 837 TESTINST2("rotr $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 838 TESTINST2("rotr $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 839 TESTINST2("rotr $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 840 TESTINST2("rotr $t0, $t1, 0x00000010", 0x31415927, 0x00000010, t0, t1); 841 TESTINST2("rotr $t0, $t1, 0x0000001F", 0x31415927, 0x0000001F, t0, t1); 842 TESTINST2("rotr $t0, $t1, 0x00000020", 0x31415927, 0x00000020, t0, t1); 843 TESTINST2("rotr $t0, $t1, 0x00000021", 0x31415927, 0x00000021, t0, t1); 844 TESTINST2("rotr $t0, $t1, 0x00000000", 0x00088000, 0x00000000, t0, t1); 845 TESTINST2("rotr $t0, $t1, 0x00000001", 0x00088000, 0x00000001, t0, t1); 846 TESTINST2("rotr $t0, $t1, 31", 0x00088000, 31, t0, t1); 847 TESTINST2("rotr $t0, $t1, 16", 0x00010000, 16, t0, t1); 848 TESTINST2("rotr $t0, $t1, 17", 0x00010000, 17, t0, t1); 849 TESTINST2("rotr $t0, $t1, 18", 0x00010000, 18, t0, t1); 850 TESTINST2("rotr $t0, $t1, 0", 0, 0, t0, t1); 851 TESTINST2("rotr $t0, $t1, 0xffff", 0xffff, 0xffff, t0, t1); 852 #endif 853 854 #if (__mips==32) && (__mips_isa_rev>=2) 855 printf("ROTRV\n"); 856 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 857 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 858 TESTINST1("rotrv $t0, $t1, $t2", 0, 255, t0, t1, t2); 859 TESTINST1("rotrv $t0, $t1, $t2", -1, 0, t0, t1, t2); 860 TESTINST1("rotrv $t0, $t1, $t2", 0, 1, t0, t1, t2); 861 TESTINST1("rotrv $t0, $t1, $t2", 0, 0, t0, t1, t2); 862 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 863 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 864 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 865 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 866 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 867 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 868 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 869 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 870 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 871 TESTINST1("rotrv $t0, $t1, $t2", 0, 255, t0, t1, t2); 872 TESTINST1("rotrv $t0, $t1, $t2", 1, 0, t0, t1, t2); 873 TESTINST1("rotrv $t0, $t1, $t2", 0, 1, t0, t1, t2); 874 TESTINST1("rotrv $t0, $t1, $t2", -1, 0, t0, t1, t2); 875 TESTINST1("rotrv $t0, $t1, $t2", 0, -1, t0, t1, t2); 876 TESTINST1("rotrv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 877 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 878 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 879 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 880 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 881 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 882 TESTINST1("rotrv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 883 TESTINST1("rotrv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 884 TESTINST1("rotrv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 885 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 886 TESTINST1("rotrv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 887 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 888 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 889 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 890 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 891 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 892 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 893 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 894 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 895 TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 896 TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 897 TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 898 TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 899 TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 900 TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 901 TESTINST1("rotrv $t0, $t1, $t2", 0, 0, t0, t1, t2); 902 TESTINST1("rotrv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 903 904 printf("SEB\n"); 905 TESTINST3("seb $t0, $t1", 0x2, t0, t1); 906 TESTINST3("seb $t0, $t1", 0x28, t0, t1); 907 TESTINST3("seb $t0, $t1", -258, t0, t1); 908 TESTINST3("seb $t0, $t1", 0x7fffffff, t0, t1); 909 TESTINST3("seb $t0, $t1", -11, t0, t1); 910 TESTINST3("seb $t0, $t1", 0xffffffff, t0, t1); 911 TESTINST3("seb $t0, $t1", 0x16, t0, t1); 912 TESTINST3("seb $t0, $t1", -1, t0, t1); 913 914 printf("SEH\n"); 915 TESTINST3("seh $t0, $t1", 0x2, t0, t1); 916 TESTINST3("seh $t0, $t1", 0x28, t0, t1); 917 TESTINST3("seh $t0, $t1", -258, t0, t1); 918 TESTINST3("seh $t0, $t1", 0x7fffffff, t0, t1); 919 TESTINST3("seh $t0, $t1", -11, t0, t1); 920 TESTINST3("seh $t0, $t1", 0xffffffff, t0, t1); 921 TESTINST3("seh $t0, $t1", 0x16, t0, t1); 922 TESTINST3("seh $t0, $t1", -1, t0, t1); 923 #endif 924 925 printf("SLL\n"); 926 TESTINST2("sll $t0, $t1, 0x00000000", 0x31415927, 0x00000000, t0, t1); 927 TESTINST2("sll $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 928 TESTINST2("sll $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 929 TESTINST2("sll $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 930 TESTINST2("sll $t0, $t1, 0x00000010", 0x31415927, 0x00000010, t0, t1); 931 TESTINST2("sll $t0, $t1, 0x0000001F", 0x31415927, 0x0000001F, t0, t1); 932 TESTINST2("sll $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 933 TESTINST2("sll $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 934 TESTINST2("sll $t0, $t1, 0x00000000", 0x00088000, 0x00000000, t0, t1); 935 TESTINST2("sll $t0, $t1, 0x00000001", 0x00088000, 0x00000001, t0, t1); 936 TESTINST2("sll $t0, $t1, 31", 0x00088000, 31, t0, t1); 937 TESTINST2("sll $t0, $t1, 16", 0x00010000, 16, t0, t1); 938 TESTINST2("sll $t0, $t1, 17", 0x00010000, 17, t0, t1); 939 TESTINST2("sll $t0, $t1, 18", 0x00010000, 18, t0, t1); 940 TESTINST2("sll $t0, $t1, 0", 0, 0, t0, t1); 941 942 printf("SLLV\n"); 943 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 944 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 945 TESTINST1("sllv $t0, $t1, $t2", 0, 255, t0, t1, t2); 946 TESTINST1("sllv $t0, $t1, $t2", -1, 0, t0, t1, t2); 947 TESTINST1("sllv $t0, $t1, $t2", 0, 1, t0, t1, t2); 948 TESTINST1("sllv $t0, $t1, $t2", 0, 0, t0, t1, t2); 949 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 950 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 951 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 952 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 953 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 954 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 955 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 956 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 957 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 958 TESTINST1("sllv $t0, $t1, $t2", 0, 255, t0, t1, t2); 959 TESTINST1("sllv $t0, $t1, $t2", 1, 0, t0, t1, t2); 960 TESTINST1("sllv $t0, $t1, $t2", 0, 1, t0, t1, t2); 961 TESTINST1("sllv $t0, $t1, $t2", -1, 0, t0, t1, t2); 962 TESTINST1("sllv $t0, $t1, $t2", 0, -1, t0, t1, t2); 963 TESTINST1("sllv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 964 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 965 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 966 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 967 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 968 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 969 TESTINST1("sllv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 970 TESTINST1("sllv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 971 TESTINST1("sllv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 972 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 973 TESTINST1("sllv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 974 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 975 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 976 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 977 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 978 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 979 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 980 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 981 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 982 TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 983 TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 984 TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 985 TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 986 TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 987 TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 988 TESTINST1("sllv $t0, $t1, $t2", 0, 0, t0, t1, t2); 989 TESTINST1("sllv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 990 991 printf("SLT\n"); 992 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 993 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 994 TESTINST1("slt $t0, $t1, $t2", 0, 255, t0, t1, t2); 995 TESTINST1("slt $t0, $t1, $t2", -1, 0, t0, t1, t2); 996 TESTINST1("slt $t0, $t1, $t2", 0, 1, t0, t1, t2); 997 TESTINST1("slt $t0, $t1, $t2", 0, 0, t0, t1, t2); 998 TESTINST1("slt $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 999 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1000 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1001 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1002 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1003 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1004 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1005 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1006 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1007 TESTINST1("slt $t0, $t1, $t2", 0, 255, t0, t1, t2); 1008 TESTINST1("slt $t0, $t1, $t2", 1, 0, t0, t1, t2); 1009 TESTINST1("slt $t0, $t1, $t2", 0, 1, t0, t1, t2); 1010 TESTINST1("slt $t0, $t1, $t2", -1, 0, t0, t1, t2); 1011 TESTINST1("slt $t0, $t1, $t2", 0, -1, t0, t1, t2); 1012 TESTINST1("slt $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1013 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1014 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1015 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1016 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1017 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1018 TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1019 TESTINST1("slt $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1020 TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1021 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1022 TESTINST1("slt $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1023 TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1024 TESTINST1("slt $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1025 TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1026 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1027 TESTINST1("slt $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1028 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1029 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1030 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1031 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1032 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1033 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1034 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1035 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1036 TESTINST1("slt $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1037 TESTINST1("slt $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1038 TESTINST1("slt $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1039 TESTINST1("slt $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1040 TESTINST1("slt $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1041 TESTINST1("slt $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1042 TESTINST1("slt $t0, $t1, $t2", 0, 0, t0, t1, t2); 1043 TESTINST1("slt $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1044 1045 printf("SLTI\n"); 1046 TESTINST2("slti $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); 1047 TESTINST2("slti $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1048 TESTINST2("slti $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1049 TESTINST2("slti $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1050 TESTINST2("slti $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); 1051 TESTINST2("slti $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); 1052 TESTINST2("slti $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1053 TESTINST2("slti $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1054 TESTINST2("slti $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); 1055 TESTINST2("slti $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); 1056 TESTINST2("slti $t0, $t1, 31", 0x00088000, 31, t0, t1); 1057 TESTINST2("slti $t0, $t1, 16", 0x00010000, 16, t0, t1); 1058 TESTINST2("slti $t0, $t1, 17", 0x00010000, 17, t0, t1); 1059 TESTINST2("slti $t0, $t1, 18", 0x00010000, 18, t0, t1); 1060 TESTINST2("slti $t0, $t1, 0", 0, 0, t0, t1); 1061 1062 printf("SLTIU\n"); 1063 TESTINST2("sltiu $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); 1064 TESTINST2("sltiu $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1065 TESTINST2("sltiu $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1066 TESTINST2("sltiu $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1067 TESTINST2("sltiu $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); 1068 TESTINST2("sltiu $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); 1069 TESTINST2("sltiu $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1070 TESTINST2("sltiu $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1071 TESTINST2("sltiu $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); 1072 TESTINST2("sltiu $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); 1073 TESTINST2("sltiu $t0, $t1, 31", 0x00088000, 31, t0, t1); 1074 TESTINST2("sltiu $t0, $t1, 16", 0x00010000, 16, t0, t1); 1075 TESTINST2("sltiu $t0, $t1, 17", 0x00010000, 17, t0, t1); 1076 TESTINST2("sltiu $t0, $t1, 18", 0x00010000, 18, t0, t1); 1077 TESTINST2("sltiu $t0, $t1, 0", 0, 0, t0, t1); 1078 1079 printf("SLTU\n"); 1080 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1081 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1082 TESTINST1("sltu $t0, $t1, $t2", 0, 255, t0, t1, t2); 1083 TESTINST1("sltu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1084 TESTINST1("sltu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1085 TESTINST1("sltu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1086 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1087 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1088 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1089 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1090 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1091 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1092 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1093 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1094 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1095 TESTINST1("sltu $t0, $t1, $t2", 0, 255, t0, t1, t2); 1096 TESTINST1("sltu $t0, $t1, $t2", 1, 0, t0, t1, t2); 1097 TESTINST1("sltu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1098 TESTINST1("sltu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1099 TESTINST1("sltu $t0, $t1, $t2", 0, -1, t0, t1, t2); 1100 TESTINST1("sltu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1101 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1102 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1103 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1104 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1105 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1106 TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1107 TESTINST1("sltu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1108 TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1109 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1110 TESTINST1("sltu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1111 TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1112 TESTINST1("sltu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1113 TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1114 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1115 TESTINST1("sltu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1116 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1117 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1118 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1119 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1120 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1121 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1122 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1123 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1124 TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1125 TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1126 TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1127 TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1128 TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1129 TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1130 TESTINST1("sltu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1131 TESTINST1("sltu $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1132 1133 printf("SRA\n"); 1134 TESTINST2("sra $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); 1135 TESTINST2("sra $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1136 TESTINST2("sra $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1137 TESTINST2("sra $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1138 TESTINST2("sra $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); 1139 TESTINST2("sra $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); 1140 TESTINST2("sra $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1141 TESTINST2("sra $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1142 TESTINST2("sra $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); 1143 TESTINST2("sra $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); 1144 TESTINST2("sra $t0, $t1, 31", 0x00088000, 31, t0, t1); 1145 TESTINST2("sra $t0, $t1, 16", 0x00010000, 16, t0, t1); 1146 TESTINST2("sra $t0, $t1, 17", 0x00010000, 17, t0, t1); 1147 TESTINST2("sra $t0, $t1, 18", 0x00010000, 18, t0, t1); 1148 TESTINST2("sra $t0, $t1, 0", 0, 0, t0, t1); 1149 1150 printf("SRAV\n"); 1151 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1152 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1153 TESTINST1("srav $t0, $t1, $t2", 0, 255, t0, t1, t2); 1154 TESTINST1("srav $t0, $t1, $t2", -1, 0, t0, t1, t2); 1155 TESTINST1("srav $t0, $t1, $t2", 0, 1, t0, t1, t2); 1156 TESTINST1("srav $t0, $t1, $t2", 0, 0, t0, t1, t2); 1157 TESTINST1("srav $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1158 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1159 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1160 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1161 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1162 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1163 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1164 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1165 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1166 TESTINST1("srav $t0, $t1, $t2", 0, 255, t0, t1, t2); 1167 TESTINST1("srav $t0, $t1, $t2", 1, 0, t0, t1, t2); 1168 TESTINST1("srav $t0, $t1, $t2", 0, 1, t0, t1, t2); 1169 TESTINST1("srav $t0, $t1, $t2", -1, 0, t0, t1, t2); 1170 TESTINST1("srav $t0, $t1, $t2", 0, -1, t0, t1, t2); 1171 TESTINST1("srav $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1172 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1173 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1174 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1175 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1176 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1177 TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1178 TESTINST1("srav $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1179 TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1180 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1181 TESTINST1("srav $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1182 TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1183 TESTINST1("srav $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1184 TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1185 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1186 TESTINST1("srav $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1187 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1188 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1189 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1190 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1191 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1192 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1193 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1194 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1195 TESTINST1("srav $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1196 TESTINST1("srav $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1197 TESTINST1("srav $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1198 TESTINST1("srav $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1199 TESTINST1("srav $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1200 TESTINST1("srav $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1201 TESTINST1("srav $t0, $t1, $t2", 0, 0, t0, t1, t2); 1202 TESTINST1("srav $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1203 1204 printf("SRL\n"); 1205 TESTINST2("srl $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); 1206 TESTINST2("srl $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1207 TESTINST2("srl $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1208 TESTINST2("srl $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1209 TESTINST2("srl $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); 1210 TESTINST2("srl $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); 1211 TESTINST2("srl $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1212 TESTINST2("srl $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1213 TESTINST2("srl $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); 1214 TESTINST2("srl $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); 1215 TESTINST2("srl $t0, $t1, 31", 0x00088000, 31, t0, t1); 1216 TESTINST2("srl $t0, $t1, 16", 0x00010000, 16, t0, t1); 1217 TESTINST2("srl $t0, $t1, 17", 0x00010000, 17, t0, t1); 1218 TESTINST2("srl $t0, $t1, 18", 0x00010000, 18, t0, t1); 1219 TESTINST2("srl $t0, $t1, 0", 0, 0, t0, t1); 1220 1221 printf("SRLV\n"); 1222 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1223 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1224 TESTINST1("srlv $t0, $t1, $t2", 0, 255, t0, t1, t2); 1225 TESTINST1("srlv $t0, $t1, $t2", -1, 0, t0, t1, t2); 1226 TESTINST1("srlv $t0, $t1, $t2", 0, 1, t0, t1, t2); 1227 TESTINST1("srlv $t0, $t1, $t2", 0, 0, t0, t1, t2); 1228 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1229 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1230 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1231 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1232 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1233 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1234 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1235 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1236 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1237 TESTINST1("srlv $t0, $t1, $t2", 0, 255, t0, t1, t2); 1238 TESTINST1("srlv $t0, $t1, $t2", 1, 0, t0, t1, t2); 1239 TESTINST1("srlv $t0, $t1, $t2", 0, 1, t0, t1, t2); 1240 TESTINST1("srlv $t0, $t1, $t2", -1, 0, t0, t1, t2); 1241 TESTINST1("srlv $t0, $t1, $t2", 0, -1, t0, t1, t2); 1242 TESTINST1("srlv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1243 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1244 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1245 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1246 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1247 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1248 TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1249 TESTINST1("srlv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1250 TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1251 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1252 TESTINST1("srlv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1253 TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1254 TESTINST1("srlv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1255 TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1256 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1257 TESTINST1("srlv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1258 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1259 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1260 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1261 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1262 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1263 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1264 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1265 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1266 TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1267 TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1268 TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1269 TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1270 TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1271 TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1272 TESTINST1("srlv $t0, $t1, $t2", 0, 0, t0, t1, t2); 1273 TESTINST1("srlv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1274 1275 printf("SUBU\n"); 1276 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1277 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00001110, t0, t1, t2); 1278 TESTINST1("subu $t0, $t1, $t2", 0, 255, t0, t1, t2); 1279 TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1280 TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1281 TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1282 TESTINST1("subu $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1283 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1284 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1285 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1286 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1287 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1288 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1289 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1290 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1291 TESTINST1("subu $t0, $t1, $t2", 0, 255, t0, t1, t2); 1292 TESTINST1("subu $t0, $t1, $t2", 1, 0, t0, t1, t2); 1293 TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1294 TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1295 TESTINST1("subu $t0, $t1, $t2", 0, -1, t0, t1, t2); 1296 TESTINST1("subu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1297 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1298 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1299 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1300 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1301 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1302 TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1303 TESTINST1("subu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1304 TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1305 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1306 TESTINST1("subu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1307 TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1308 TESTINST1("subu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1309 TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1310 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1311 TESTINST1("subu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1312 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1313 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1314 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1315 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1316 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1317 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1318 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1319 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1320 TESTINST1("subu $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1321 TESTINST1("subu $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1322 TESTINST1("subu $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1323 TESTINST1("subu $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1324 TESTINST1("subu $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1325 TESTINST1("subu $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1326 TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1327 TESTINST1("subu $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1328 1329 printf("SUB\n"); 1330 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1331 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x27181728, t0, t1, t2); 1332 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x97181728, t0, t1, t2); 1333 TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1334 TESTINST1("subu $t0, $t1, $t2", 1, 0, t0, t1, t2); 1335 TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1336 TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1337 TESTINST1("subu $t0, $t1, $t2", 0, -1, t0, t1, t2); 1338 TESTINST1("subu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1339 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1340 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1341 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1342 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x7fffffff, t0, t1, t2); 1343 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1344 1345 printf("XOR\n"); 1346 TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1347 TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1348 TESTINST1("xor $t0, $t1, $t2", 0, 255, t0, t1, t2); 1349 TESTINST1("xor $t0, $t1, $t2", -1, 0, t0, t1, t2); 1350 TESTINST1("xor $t0, $t1, $t2", 0, 1, t0, t1, t2); 1351 TESTINST1("xor $t0, $t1, $t2", 0, 0, t0, t1, t2); 1352 TESTINST1("xor $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1353 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1354 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1355 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1356 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1357 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1358 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1359 TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1360 TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1361 TESTINST1("xor $t0, $t1, $t2", 0, 255, t0, t1, t2); 1362 TESTINST1("xor $t0, $t1, $t2", 1, 0, t0, t1, t2); 1363 TESTINST1("xor $t0, $t1, $t2", 0, 1, t0, t1, t2); 1364 TESTINST1("xor $t0, $t1, $t2", -1, 0, t0, t1, t2); 1365 TESTINST1("xor $t0, $t1, $t2", 0, -1, t0, t1, t2); 1366 TESTINST1("xor $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1367 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1368 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1369 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1370 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1371 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1372 TESTINST1("xor $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1373 TESTINST1("xor $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1374 TESTINST1("xor $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1375 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1376 TESTINST1("xor $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1377 1378 printf("XORI\n"); 1379 TESTINST2("xori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); 1380 TESTINST2("xori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); 1381 TESTINST2("xori $t0, $t1, 255", 0, 255, t0, t1); 1382 TESTINST2("xori $t0, $t1, 0", -1, 0, t0, t1); 1383 TESTINST2("xori $t0, $t1, 1", 0, 1, t0, t1); 1384 TESTINST2("xori $t0, $t1, 0", 0, 0, t0, t1); 1385 TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1386 TESTINST2("xori $t0, $t1, 0", 0x7fffffff, 0, t0, t1); 1387 TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1388 TESTINST2("xori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); 1389 TESTINST2("xori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); 1390 TESTINST2("xori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); 1391 TESTINST2("xori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); 1392 TESTINST2("xori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); 1393 TESTINST2("xori $t0, $t1, 255", 0, 255, t0, t1); 1394 TESTINST2("xori $t0, $t1, 0", 1, 0, t0, t1); 1395 TESTINST2("xori $t0, $t1, 1", 0, 1, t0, t1); 1396 TESTINST2("xori $t0, $t1, 0", -1, 0, t0, t1); 1397 TESTINST2("xori $t0, $t1, 0x8000", 0, 0x8000, t0, t1); 1398 TESTINST2("xori $t0, $t1, 0", 0x8000, 0, t0, t1); 1399 TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1400 TESTINST2("xori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); 1401 TESTINST2("xori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); 1402 TESTINST2("xori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); 1403 TESTINST2("xori $t0, $t1, 0", 0xffff, 0, t0, t1); 1404 TESTINST2("xori $t0, $t1, 0xffff", 0, 0xffff, t0, t1); 1405 TESTINST2("xori $t0, $t1, 0xffff", 0xffffffff, 0xffff, t0, t1); 1406 TESTINST2("xori $t0, $t1, 0x7fff", 0x7fffffff, 0x7fff, t0, t1); 1407 TESTINST2("xori $t0, $t1, 0x0000", 0x0000ffff, 0x0000, t0, t1); 1408 1409 printf("MFHI MFLO\n"); 1410 TESTINSN_HILO(0x31415927); 1411 TESTINSN_HILO(0); 1412 TESTINSN_HILO(-1); 1413 TESTINSN_HILO(0xffffffff); 1414 TESTINSN_HILO(0x8000); 1415 TESTINSN_HILO(0x80000000); 1416 TESTINSN_HILO(0x0000ffff); 1417 TESTINSN_HILO(0x7fff); 1418 TESTINSN_HILO(0x0dd0); 1419 TESTINSN_HILO(0xff00); 1420 1421 return 0; 1422 } 1423