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, 0, 1", 0x0, 0x0, t0, t1, 0, 1); 255 TESTINST4("ext $t0, $t1, 0, 1", 0x0, 0xffffffff, t0, t1, 0, 1); 256 TESTINST4("ext $t0, $t1, 0, 1", 0x0, 0x98765432, t0, t1, 0, 1); 257 TESTINST4("ext $t0, $t1, 0, 1", 0x0, 0xff865421, t0, t1, 0, 1); 258 TESTINST4("ext $t0, $t1, 0, 1", 0xffffffff, 0x0, t0, t1, 0, 1); 259 TESTINST4("ext $t0, $t1, 0, 1", 0xffffffff, 0xffffffff, t0, t1, 0, 1); 260 TESTINST4("ext $t0, $t1, 0, 1", 0xffffffff, 0x98765432, t0, t1, 0, 1); 261 TESTINST4("ext $t0, $t1, 0, 1", 0xffffffff, 0xff865421, t0, t1, 0, 1); 262 TESTINST4("ext $t0, $t1, 0, 1", 0x98765432, 0x0, t0, t1, 0, 1); 263 TESTINST4("ext $t0, $t1, 0, 1", 0x98765432, 0xffffffff, t0, t1, 0, 1); 264 TESTINST4("ext $t0, $t1, 0, 1", 0x98765432, 0x98765432, t0, t1, 0, 1); 265 TESTINST4("ext $t0, $t1, 0, 1", 0x98765432, 0xff865421, t0, t1, 0, 1); 266 TESTINST4("ext $t0, $t1, 0, 1", 0xff865421, 0x0, t0, t1, 0, 1); 267 TESTINST4("ext $t0, $t1, 0, 1", 0xff865421, 0xffffffff, t0, t1, 0, 1); 268 TESTINST4("ext $t0, $t1, 0, 1", 0xff865421, 0x98765432, t0, t1, 0, 1); 269 TESTINST4("ext $t0, $t1, 0, 1", 0xff865421, 0xff865421, t0, t1, 0, 1); 270 TESTINST4("ext $t0, $t1, 0, 4", 0x0, 0x0, t0, t1, 0, 4); 271 TESTINST4("ext $t0, $t1, 0, 4", 0x0, 0xffffffff, t0, t1, 0, 4); 272 TESTINST4("ext $t0, $t1, 0, 4", 0x0, 0x98765432, t0, t1, 0, 4); 273 TESTINST4("ext $t0, $t1, 0, 4", 0x0, 0xff865421, t0, t1, 0, 4); 274 TESTINST4("ext $t0, $t1, 0, 4", 0xffffffff, 0x0, t0, t1, 0, 4); 275 TESTINST4("ext $t0, $t1, 0, 4", 0xffffffff, 0xffffffff, t0, t1, 0, 4); 276 TESTINST4("ext $t0, $t1, 0, 4", 0xffffffff, 0x98765432, t0, t1, 0, 4); 277 TESTINST4("ext $t0, $t1, 0, 4", 0xffffffff, 0xff865421, t0, t1, 0, 4); 278 TESTINST4("ext $t0, $t1, 0, 4", 0x98765432, 0x0, t0, t1, 0, 4); 279 TESTINST4("ext $t0, $t1, 0, 4", 0x98765432, 0xffffffff, t0, t1, 0, 4); 280 TESTINST4("ext $t0, $t1, 0, 4", 0x98765432, 0x98765432, t0, t1, 0, 4); 281 TESTINST4("ext $t0, $t1, 0, 4", 0x98765432, 0xff865421, t0, t1, 0, 4); 282 TESTINST4("ext $t0, $t1, 0, 4", 0xff865421, 0x0, t0, t1, 0, 4); 283 TESTINST4("ext $t0, $t1, 0, 4", 0xff865421, 0xffffffff, t0, t1, 0, 4); 284 TESTINST4("ext $t0, $t1, 0, 4", 0xff865421, 0x98765432, t0, t1, 0, 4); 285 TESTINST4("ext $t0, $t1, 0, 4", 0xff865421, 0xff865421, t0, t1, 0, 4); 286 TESTINST4("ext $t0, $t1, 0, 16", 0x0, 0x0, t0, t1, 0, 16); 287 TESTINST4("ext $t0, $t1, 0, 16", 0x0, 0xffffffff, t0, t1, 0, 16); 288 TESTINST4("ext $t0, $t1, 0, 16", 0x0, 0x98765432, t0, t1, 0, 16); 289 TESTINST4("ext $t0, $t1, 0, 16", 0x0, 0xff865421, t0, t1, 0, 16); 290 TESTINST4("ext $t0, $t1, 0, 16", 0xffffffff, 0x0, t0, t1, 0, 16); 291 TESTINST4("ext $t0, $t1, 0, 16", 0xffffffff, 0xffffffff, t0, t1, 0, 16); 292 TESTINST4("ext $t0, $t1, 0, 16", 0xffffffff, 0x98765432, t0, t1, 0, 16); 293 TESTINST4("ext $t0, $t1, 0, 16", 0xffffffff, 0xff865421, t0, t1, 0, 16); 294 TESTINST4("ext $t0, $t1, 0, 16", 0x98765432, 0x0, t0, t1, 0, 16); 295 TESTINST4("ext $t0, $t1, 0, 16", 0x98765432, 0xffffffff, t0, t1, 0, 16); 296 TESTINST4("ext $t0, $t1, 0, 16", 0x98765432, 0x98765432, t0, t1, 0, 16); 297 TESTINST4("ext $t0, $t1, 0, 16", 0x98765432, 0xff865421, t0, t1, 0, 16); 298 TESTINST4("ext $t0, $t1, 0, 16", 0xff865421, 0x0, t0, t1, 0, 16); 299 TESTINST4("ext $t0, $t1, 0, 16", 0xff865421, 0xffffffff, t0, t1, 0, 16); 300 TESTINST4("ext $t0, $t1, 0, 16", 0xff865421, 0x98765432, t0, t1, 0, 16); 301 TESTINST4("ext $t0, $t1, 0, 16", 0xff865421, 0xff865421, t0, t1, 0, 16); 302 TESTINST4("ext $t0, $t1, 0, 32", 0x0, 0x0, t0, t1, 0, 32); 303 TESTINST4("ext $t0, $t1, 0, 32", 0x0, 0xffffffff, t0, t1, 0, 32); 304 TESTINST4("ext $t0, $t1, 0, 32", 0x0, 0x98765432, t0, t1, 0, 32); 305 TESTINST4("ext $t0, $t1, 0, 32", 0x0, 0xff865421, t0, t1, 0, 32); 306 TESTINST4("ext $t0, $t1, 0, 32", 0xffffffff, 0x0, t0, t1, 0, 32); 307 TESTINST4("ext $t0, $t1, 0, 32", 0xffffffff, 0xffffffff, t0, t1, 0, 32); 308 TESTINST4("ext $t0, $t1, 0, 32", 0xffffffff, 0x98765432, t0, t1, 0, 32); 309 TESTINST4("ext $t0, $t1, 0, 32", 0xffffffff, 0xff865421, t0, t1, 0, 32); 310 TESTINST4("ext $t0, $t1, 0, 32", 0x98765432, 0x0, t0, t1, 0, 32); 311 TESTINST4("ext $t0, $t1, 0, 32", 0x98765432, 0xffffffff, t0, t1, 0, 32); 312 TESTINST4("ext $t0, $t1, 0, 32", 0x98765432, 0x98765432, t0, t1, 0, 32); 313 TESTINST4("ext $t0, $t1, 0, 32", 0x98765432, 0xff865421, t0, t1, 0, 32); 314 TESTINST4("ext $t0, $t1, 0, 32", 0xff865421, 0x0, t0, t1, 0, 32); 315 TESTINST4("ext $t0, $t1, 0, 32", 0xff865421, 0xffffffff, t0, t1, 0, 32); 316 TESTINST4("ext $t0, $t1, 0, 32", 0xff865421, 0x98765432, t0, t1, 0, 32); 317 TESTINST4("ext $t0, $t1, 0, 32", 0xff865421, 0xff865421, t0, t1, 0, 32); 318 319 TESTINST4("ext $t0, $t1, 4, 1", 0x0, 0x0, t0, t1, 4, 1); 320 TESTINST4("ext $t0, $t1, 4, 1", 0x0, 0xffffffff, t0, t1, 4, 1); 321 TESTINST4("ext $t0, $t1, 4, 1", 0x0, 0x98765432, t0, t1, 4, 1); 322 TESTINST4("ext $t0, $t1, 4, 1", 0x0, 0xff865421, t0, t1, 4, 1); 323 TESTINST4("ext $t0, $t1, 4, 1", 0xffffffff, 0x0, t0, t1, 4, 1); 324 TESTINST4("ext $t0, $t1, 4, 1", 0xffffffff, 0xffffffff, t0, t1, 4, 1); 325 TESTINST4("ext $t0, $t1, 4, 1", 0xffffffff, 0x98765432, t0, t1, 4, 1); 326 TESTINST4("ext $t0, $t1, 4, 1", 0xffffffff, 0xff865421, t0, t1, 4, 1); 327 TESTINST4("ext $t0, $t1, 4, 1", 0x98765432, 0x0, t0, t1, 4, 1); 328 TESTINST4("ext $t0, $t1, 4, 1", 0x98765432, 0xffffffff, t0, t1, 4, 1); 329 TESTINST4("ext $t0, $t1, 4, 1", 0x98765432, 0x98765432, t0, t1, 4, 1); 330 TESTINST4("ext $t0, $t1, 4, 1", 0x98765432, 0xff865421, t0, t1, 4, 1); 331 TESTINST4("ext $t0, $t1, 4, 1", 0xff865421, 0x0, t0, t1, 4, 1); 332 TESTINST4("ext $t0, $t1, 4, 1", 0xff865421, 0xffffffff, t0, t1, 4, 1); 333 TESTINST4("ext $t0, $t1, 4, 1", 0xff865421, 0x98765432, t0, t1, 4, 1); 334 TESTINST4("ext $t0, $t1, 4, 1", 0xff865421, 0xff865421, t0, t1, 4, 1); 335 TESTINST4("ext $t0, $t1, 4, 4", 0x0, 0x0, t0, t1, 4, 4); 336 TESTINST4("ext $t0, $t1, 4, 4", 0x0, 0xffffffff, t0, t1, 4, 4); 337 TESTINST4("ext $t0, $t1, 4, 4", 0x0, 0x98765432, t0, t1, 4, 4); 338 TESTINST4("ext $t0, $t1, 4, 4", 0x0, 0xff865421, t0, t1, 4, 4); 339 TESTINST4("ext $t0, $t1, 4, 4", 0xffffffff, 0x0, t0, t1, 4, 4); 340 TESTINST4("ext $t0, $t1, 4, 4", 0xffffffff, 0xffffffff, t0, t1, 4, 4); 341 TESTINST4("ext $t0, $t1, 4, 4", 0xffffffff, 0x98765432, t0, t1, 4, 4); 342 TESTINST4("ext $t0, $t1, 4, 4", 0xffffffff, 0xff865421, t0, t1, 4, 4); 343 TESTINST4("ext $t0, $t1, 4, 4", 0x98765432, 0x0, t0, t1, 4, 4); 344 TESTINST4("ext $t0, $t1, 4, 4", 0x98765432, 0xffffffff, t0, t1, 4, 4); 345 TESTINST4("ext $t0, $t1, 4, 4", 0x98765432, 0x98765432, t0, t1, 4, 4); 346 TESTINST4("ext $t0, $t1, 4, 4", 0x98765432, 0xff865421, t0, t1, 4, 4); 347 TESTINST4("ext $t0, $t1, 4, 4", 0xff865421, 0x0, t0, t1, 4, 4); 348 TESTINST4("ext $t0, $t1, 4, 4", 0xff865421, 0xffffffff, t0, t1, 4, 4); 349 TESTINST4("ext $t0, $t1, 4, 4", 0xff865421, 0x98765432, t0, t1, 4, 4); 350 TESTINST4("ext $t0, $t1, 4, 4", 0xff865421, 0xff865421, t0, t1, 4, 4); 351 TESTINST4("ext $t0, $t1, 4, 16", 0x0, 0x0, t0, t1, 4, 16); 352 TESTINST4("ext $t0, $t1, 4, 16", 0x0, 0xffffffff, t0, t1, 4, 16); 353 TESTINST4("ext $t0, $t1, 4, 16", 0x0, 0x98765432, t0, t1, 4, 16); 354 TESTINST4("ext $t0, $t1, 4, 16", 0x0, 0xff865421, t0, t1, 4, 16); 355 TESTINST4("ext $t0, $t1, 4, 16", 0xffffffff, 0x0, t0, t1, 4, 16); 356 TESTINST4("ext $t0, $t1, 4, 16", 0xffffffff, 0xffffffff, t0, t1, 4, 16); 357 TESTINST4("ext $t0, $t1, 4, 16", 0xffffffff, 0x98765432, t0, t1, 4, 16); 358 TESTINST4("ext $t0, $t1, 4, 16", 0xffffffff, 0xff865421, t0, t1, 4, 16); 359 TESTINST4("ext $t0, $t1, 4, 16", 0x98765432, 0x0, t0, t1, 4, 16); 360 TESTINST4("ext $t0, $t1, 4, 16", 0x98765432, 0xffffffff, t0, t1, 4, 16); 361 TESTINST4("ext $t0, $t1, 4, 16", 0x98765432, 0x98765432, t0, t1, 4, 16); 362 TESTINST4("ext $t0, $t1, 4, 16", 0x98765432, 0xff865421, t0, t1, 4, 16); 363 TESTINST4("ext $t0, $t1, 4, 16", 0xff865421, 0x0, t0, t1, 4, 16); 364 TESTINST4("ext $t0, $t1, 4, 16", 0xff865421, 0xffffffff, t0, t1, 4, 16); 365 TESTINST4("ext $t0, $t1, 4, 16", 0xff865421, 0x98765432, t0, t1, 4, 16); 366 TESTINST4("ext $t0, $t1, 4, 16", 0xff865421, 0xff865421, t0, t1, 4, 16); 367 TESTINST4("ext $t0, $t1, 4, 28", 0x0, 0x0, t0, t1, 4, 28); 368 TESTINST4("ext $t0, $t1, 4, 28", 0x0, 0xffffffff, t0, t1, 4, 28); 369 TESTINST4("ext $t0, $t1, 4, 28", 0x0, 0x98765432, t0, t1, 4, 28); 370 TESTINST4("ext $t0, $t1, 4, 28", 0x0, 0xff865421, t0, t1, 4, 28); 371 TESTINST4("ext $t0, $t1, 4, 28", 0xffffffff, 0x0, t0, t1, 4, 28); 372 TESTINST4("ext $t0, $t1, 4, 28", 0xffffffff, 0xffffffff, t0, t1, 4, 28); 373 TESTINST4("ext $t0, $t1, 4, 28", 0xffffffff, 0x98765432, t0, t1, 4, 28); 374 TESTINST4("ext $t0, $t1, 4, 28", 0xffffffff, 0xff865421, t0, t1, 4, 28); 375 TESTINST4("ext $t0, $t1, 4, 28", 0x98765432, 0x0, t0, t1, 4, 28); 376 TESTINST4("ext $t0, $t1, 4, 28", 0x98765432, 0xffffffff, t0, t1, 4, 28); 377 TESTINST4("ext $t0, $t1, 4, 28", 0x98765432, 0x98765432, t0, t1, 4, 28); 378 TESTINST4("ext $t0, $t1, 4, 28", 0x98765432, 0xff865421, t0, t1, 4, 28); 379 TESTINST4("ext $t0, $t1, 4, 28", 0xff865421, 0x0, t0, t1, 4, 28); 380 TESTINST4("ext $t0, $t1, 4, 28", 0xff865421, 0xffffffff, t0, t1, 4, 28); 381 TESTINST4("ext $t0, $t1, 4, 28", 0xff865421, 0x98765432, t0, t1, 4, 28); 382 TESTINST4("ext $t0, $t1, 4, 28", 0xff865421, 0xff865421, t0, t1, 4, 28); 383 384 TESTINST4("ext $t0, $t1, 16, 1", 0x0, 0x0, t0, t1, 1, 16); 385 TESTINST4("ext $t0, $t1, 16, 1", 0x0, 0xffffffff, t0, t1, 1, 16); 386 TESTINST4("ext $t0, $t1, 16, 1", 0x0, 0x98765432, t0, t1, 1, 16); 387 TESTINST4("ext $t0, $t1, 16, 1", 0x0, 0xff865421, t0, t1, 1, 16); 388 TESTINST4("ext $t0, $t1, 16, 1", 0xffffffff, 0x0, t0, t1, 1, 16); 389 TESTINST4("ext $t0, $t1, 16, 1", 0xffffffff, 0xffffffff, t0, t1, 1, 16); 390 TESTINST4("ext $t0, $t1, 16, 1", 0xffffffff, 0x98765432, t0, t1, 1, 16); 391 TESTINST4("ext $t0, $t1, 16, 1", 0xffffffff, 0xff865421, t0, t1, 1, 16); 392 TESTINST4("ext $t0, $t1, 16, 1", 0x98765432, 0x0, t0, t1, 1, 16); 393 TESTINST4("ext $t0, $t1, 16, 1", 0x98765432, 0xffffffff, t0, t1, 1, 16); 394 TESTINST4("ext $t0, $t1, 16, 1", 0x98765432, 0x98765432, t0, t1, 1, 16); 395 TESTINST4("ext $t0, $t1, 16, 1", 0x98765432, 0xff865421, t0, t1, 1, 16); 396 TESTINST4("ext $t0, $t1, 16, 1", 0xff865421, 0x0, t0, t1, 1, 16); 397 TESTINST4("ext $t0, $t1, 16, 1", 0xff865421, 0xffffffff, t0, t1, 1, 16); 398 TESTINST4("ext $t0, $t1, 16, 1", 0xff865421, 0x98765432, t0, t1, 1, 16); 399 TESTINST4("ext $t0, $t1, 16, 1", 0xff865421, 0xff865421, t0, t1, 1, 16); 400 TESTINST4("ext $t0, $t1, 16, 4", 0x0, 0x0, t0, t1, 16, 4); 401 TESTINST4("ext $t0, $t1, 16, 4", 0x0, 0xffffffff, t0, t1, 16, 4); 402 TESTINST4("ext $t0, $t1, 16, 4", 0x0, 0x98765432, t0, t1, 16, 4); 403 TESTINST4("ext $t0, $t1, 16, 4", 0x0, 0xff865421, t0, t1, 16, 4); 404 TESTINST4("ext $t0, $t1, 16, 4", 0xffffffff, 0x0, t0, t1, 16, 4); 405 TESTINST4("ext $t0, $t1, 16, 4", 0xffffffff, 0xffffffff, t0, t1, 16, 4); 406 TESTINST4("ext $t0, $t1, 16, 4", 0xffffffff, 0x98765432, t0, t1, 16, 4); 407 TESTINST4("ext $t0, $t1, 16, 4", 0xffffffff, 0xff865421, t0, t1, 16, 4); 408 TESTINST4("ext $t0, $t1, 16, 4", 0x98765432, 0x0, t0, t1, 16, 4); 409 TESTINST4("ext $t0, $t1, 16, 4", 0x98765432, 0xffffffff, t0, t1, 16, 4); 410 TESTINST4("ext $t0, $t1, 16, 4", 0x98765432, 0x98765432, t0, t1, 16, 4); 411 TESTINST4("ext $t0, $t1, 16, 4", 0x98765432, 0xff865421, t0, t1, 16, 4); 412 TESTINST4("ext $t0, $t1, 16, 4", 0xff865421, 0x0, t0, t1, 16, 4); 413 TESTINST4("ext $t0, $t1, 16, 4", 0xff865421, 0xffffffff, t0, t1, 16, 4); 414 TESTINST4("ext $t0, $t1, 16, 4", 0xff865421, 0x98765432, t0, t1, 16, 4); 415 TESTINST4("ext $t0, $t1, 16, 4", 0xff865421, 0xff865421, t0, t1, 16, 4); 416 TESTINST4("ext $t0, $t1, 16, 16", 0x0, 0x0, t0, t1, 16, 16); 417 TESTINST4("ext $t0, $t1, 16, 16", 0x0, 0xffffffff, t0, t1, 16, 16); 418 TESTINST4("ext $t0, $t1, 16, 16", 0x0, 0x98765432, t0, t1, 16, 16); 419 TESTINST4("ext $t0, $t1, 16, 16", 0x0, 0xff865421, t0, t1, 16, 16); 420 TESTINST4("ext $t0, $t1, 16, 16", 0xffffffff, 0x0, t0, t1, 16, 16); 421 TESTINST4("ext $t0, $t1, 16, 16", 0xffffffff, 0xffffffff, t0, t1, 16, 16); 422 TESTINST4("ext $t0, $t1, 16, 16", 0xffffffff, 0x98765432, t0, t1, 16, 16); 423 TESTINST4("ext $t0, $t1, 16, 16", 0xffffffff, 0xff865421, t0, t1, 16, 16); 424 TESTINST4("ext $t0, $t1, 16, 16", 0x98765432, 0x0, t0, t1, 16, 16); 425 TESTINST4("ext $t0, $t1, 16, 16", 0x98765432, 0xffffffff, t0, t1, 16, 16); 426 TESTINST4("ext $t0, $t1, 16, 16", 0x98765432, 0x98765432, t0, t1, 16, 16); 427 TESTINST4("ext $t0, $t1, 16, 16", 0x98765432, 0xff865421, t0, t1, 16, 16); 428 TESTINST4("ext $t0, $t1, 16, 16", 0xff865421, 0x0, t0, t1, 16, 16); 429 TESTINST4("ext $t0, $t1, 16, 16", 0xff865421, 0xffffffff, t0, t1, 16, 16); 430 TESTINST4("ext $t0, $t1, 16, 16", 0xff865421, 0x98765432, t0, t1, 16, 16); 431 TESTINST4("ext $t0, $t1, 16, 16", 0xff865421, 0xff865421, t0, t1, 16, 16); 432 433 TESTINST4("ext $t0, $t1, 31, 1", 0x0, 0x0, t0, t1, 31, 1); 434 TESTINST4("ext $t0, $t1, 31, 1", 0x0, 0xffffffff, t0, t1, 31, 1); 435 TESTINST4("ext $t0, $t1, 31, 1", 0x0, 0x98765432, t0, t1, 31, 1); 436 TESTINST4("ext $t0, $t1, 31, 1", 0x0, 0xff865421, t0, t1, 31, 1); 437 TESTINST4("ext $t0, $t1, 31, 1", 0xffffffff, 0x0, t0, t1, 31, 1); 438 TESTINST4("ext $t0, $t1, 31, 1", 0xffffffff, 0xffffffff, t0, t1, 31, 1); 439 TESTINST4("ext $t0, $t1, 31, 1", 0xffffffff, 0x98765432, t0, t1, 31, 1); 440 TESTINST4("ext $t0, $t1, 31, 1", 0xffffffff, 0xff865421, t0, t1, 31, 1); 441 TESTINST4("ext $t0, $t1, 31, 1", 0x98765432, 0x0, t0, t1, 31, 1); 442 TESTINST4("ext $t0, $t1, 31, 1", 0x98765432, 0xffffffff, t0, t1, 31, 1); 443 TESTINST4("ext $t0, $t1, 31, 1", 0x98765432, 0x98765432, t0, t1, 31, 1); 444 TESTINST4("ext $t0, $t1, 31, 1", 0x98765432, 0xff865421, t0, t1, 31, 1); 445 TESTINST4("ext $t0, $t1, 31, 1", 0xff865421, 0x0, t0, t1, 31, 1); 446 TESTINST4("ext $t0, $t1, 31, 1", 0xff865421, 0xffffffff, t0, t1, 31, 1); 447 TESTINST4("ext $t0, $t1, 31, 1", 0xff865421, 0x98765432, t0, t1, 31, 1); 448 TESTINST4("ext $t0, $t1, 31, 1", 0xff865421, 0xff865421, t0, t1, 31, 1); 449 450 printf("INS\n"); 451 TESTINST4("ins $t0, $t1, 0, 1", 0x0, 0x0, t0, t1, 0, 1); 452 TESTINST4("ins $t0, $t1, 0, 1", 0x0, 0xffffffff, t0, t1, 0, 1); 453 TESTINST4("ins $t0, $t1, 0, 1", 0x0, 0x98765432, t0, t1, 0, 1); 454 TESTINST4("ins $t0, $t1, 0, 1", 0x0, 0xff865421, t0, t1, 0, 1); 455 TESTINST4("ins $t0, $t1, 0, 1", 0xffffffff, 0x0, t0, t1, 0, 1); 456 TESTINST4("ins $t0, $t1, 0, 1", 0xffffffff, 0xffffffff, t0, t1, 0, 1); 457 TESTINST4("ins $t0, $t1, 0, 1", 0xffffffff, 0x98765432, t0, t1, 0, 1); 458 TESTINST4("ins $t0, $t1, 0, 1", 0xffffffff, 0xff865421, t0, t1, 0, 1); 459 TESTINST4("ins $t0, $t1, 0, 1", 0x98765432, 0x0, t0, t1, 0, 1); 460 TESTINST4("ins $t0, $t1, 0, 1", 0x98765432, 0xffffffff, t0, t1, 0, 1); 461 TESTINST4("ins $t0, $t1, 0, 1", 0x98765432, 0x98765432, t0, t1, 0, 1); 462 TESTINST4("ins $t0, $t1, 0, 1", 0x98765432, 0xff865421, t0, t1, 0, 1); 463 TESTINST4("ins $t0, $t1, 0, 1", 0xff865421, 0x0, t0, t1, 0, 1); 464 TESTINST4("ins $t0, $t1, 0, 1", 0xff865421, 0xffffffff, t0, t1, 0, 1); 465 TESTINST4("ins $t0, $t1, 0, 1", 0xff865421, 0x98765432, t0, t1, 0, 1); 466 TESTINST4("ins $t0, $t1, 0, 1", 0xff865421, 0xff865421, t0, t1, 0, 1); 467 TESTINST4("ins $t0, $t1, 0, 4", 0x0, 0x0, t0, t1, 0, 4); 468 TESTINST4("ins $t0, $t1, 0, 4", 0x0, 0xffffffff, t0, t1, 0, 4); 469 TESTINST4("ins $t0, $t1, 0, 4", 0x0, 0x98765432, t0, t1, 0, 4); 470 TESTINST4("ins $t0, $t1, 0, 4", 0x0, 0xff865421, t0, t1, 0, 4); 471 TESTINST4("ins $t0, $t1, 0, 4", 0xffffffff, 0x0, t0, t1, 0, 4); 472 TESTINST4("ins $t0, $t1, 0, 4", 0xffffffff, 0xffffffff, t0, t1, 0, 4); 473 TESTINST4("ins $t0, $t1, 0, 4", 0xffffffff, 0x98765432, t0, t1, 0, 4); 474 TESTINST4("ins $t0, $t1, 0, 4", 0xffffffff, 0xff865421, t0, t1, 0, 4); 475 TESTINST4("ins $t0, $t1, 0, 4", 0x98765432, 0x0, t0, t1, 0, 4); 476 TESTINST4("ins $t0, $t1, 0, 4", 0x98765432, 0xffffffff, t0, t1, 0, 4); 477 TESTINST4("ins $t0, $t1, 0, 4", 0x98765432, 0x98765432, t0, t1, 0, 4); 478 TESTINST4("ins $t0, $t1, 0, 4", 0x98765432, 0xff865421, t0, t1, 0, 4); 479 TESTINST4("ins $t0, $t1, 0, 4", 0xff865421, 0x0, t0, t1, 0, 4); 480 TESTINST4("ins $t0, $t1, 0, 4", 0xff865421, 0xffffffff, t0, t1, 0, 4); 481 TESTINST4("ins $t0, $t1, 0, 4", 0xff865421, 0x98765432, t0, t1, 0, 4); 482 TESTINST4("ins $t0, $t1, 0, 4", 0xff865421, 0xff865421, t0, t1, 0, 4); 483 TESTINST4("ins $t0, $t1, 0, 16", 0x0, 0x0, t0, t1, 0, 16); 484 TESTINST4("ins $t0, $t1, 0, 16", 0x0, 0xffffffff, t0, t1, 0, 16); 485 TESTINST4("ins $t0, $t1, 0, 16", 0x0, 0x98765432, t0, t1, 0, 16); 486 TESTINST4("ins $t0, $t1, 0, 16", 0x0, 0xff865421, t0, t1, 0, 16); 487 TESTINST4("ins $t0, $t1, 0, 16", 0xffffffff, 0x0, t0, t1, 0, 16); 488 TESTINST4("ins $t0, $t1, 0, 16", 0xffffffff, 0xffffffff, t0, t1, 0, 16); 489 TESTINST4("ins $t0, $t1, 0, 16", 0xffffffff, 0x98765432, t0, t1, 0, 16); 490 TESTINST4("ins $t0, $t1, 0, 16", 0xffffffff, 0xff865421, t0, t1, 0, 16); 491 TESTINST4("ins $t0, $t1, 0, 16", 0x98765432, 0x0, t0, t1, 0, 16); 492 TESTINST4("ins $t0, $t1, 0, 16", 0x98765432, 0xffffffff, t0, t1, 0, 16); 493 TESTINST4("ins $t0, $t1, 0, 16", 0x98765432, 0x98765432, t0, t1, 0, 16); 494 TESTINST4("ins $t0, $t1, 0, 16", 0x98765432, 0xff865421, t0, t1, 0, 16); 495 TESTINST4("ins $t0, $t1, 0, 16", 0xff865421, 0x0, t0, t1, 0, 16); 496 TESTINST4("ins $t0, $t1, 0, 16", 0xff865421, 0xffffffff, t0, t1, 0, 16); 497 TESTINST4("ins $t0, $t1, 0, 16", 0xff865421, 0x98765432, t0, t1, 0, 16); 498 TESTINST4("ins $t0, $t1, 0, 16", 0xff865421, 0xff865421, t0, t1, 0, 16); 499 TESTINST4("ins $t0, $t1, 0, 32", 0x0, 0x0, t0, t1, 0, 32); 500 TESTINST4("ins $t0, $t1, 0, 32", 0x0, 0xffffffff, t0, t1, 0, 32); 501 TESTINST4("ins $t0, $t1, 0, 32", 0x0, 0x98765432, t0, t1, 0, 32); 502 TESTINST4("ins $t0, $t1, 0, 32", 0x0, 0xff865421, t0, t1, 0, 32); 503 TESTINST4("ins $t0, $t1, 0, 32", 0xffffffff, 0x0, t0, t1, 0, 32); 504 TESTINST4("ins $t0, $t1, 0, 32", 0xffffffff, 0xffffffff, t0, t1, 0, 32); 505 TESTINST4("ins $t0, $t1, 0, 32", 0xffffffff, 0x98765432, t0, t1, 0, 32); 506 TESTINST4("ins $t0, $t1, 0, 32", 0xffffffff, 0xff865421, t0, t1, 0, 32); 507 TESTINST4("ins $t0, $t1, 0, 32", 0x98765432, 0x0, t0, t1, 0, 32); 508 TESTINST4("ins $t0, $t1, 0, 32", 0x98765432, 0xffffffff, t0, t1, 0, 32); 509 TESTINST4("ins $t0, $t1, 0, 32", 0x98765432, 0x98765432, t0, t1, 0, 32); 510 TESTINST4("ins $t0, $t1, 0, 32", 0x98765432, 0xff865421, t0, t1, 0, 32); 511 TESTINST4("ins $t0, $t1, 0, 32", 0xff865421, 0x0, t0, t1, 0, 32); 512 TESTINST4("ins $t0, $t1, 0, 32", 0xff865421, 0xffffffff, t0, t1, 0, 32); 513 TESTINST4("ins $t0, $t1, 0, 32", 0xff865421, 0x98765432, t0, t1, 0, 32); 514 TESTINST4("ins $t0, $t1, 0, 32", 0xff865421, 0xff865421, t0, t1, 0, 32); 515 516 TESTINST4("ins $t0, $t1, 4, 1", 0x0, 0x0, t0, t1, 4, 1); 517 TESTINST4("ins $t0, $t1, 4, 1", 0x0, 0xffffffff, t0, t1, 4, 1); 518 TESTINST4("ins $t0, $t1, 4, 1", 0x0, 0x98765432, t0, t1, 4, 1); 519 TESTINST4("ins $t0, $t1, 4, 1", 0x0, 0xff865421, t0, t1, 4, 1); 520 TESTINST4("ins $t0, $t1, 4, 1", 0xffffffff, 0x0, t0, t1, 4, 1); 521 TESTINST4("ins $t0, $t1, 4, 1", 0xffffffff, 0xffffffff, t0, t1, 4, 1); 522 TESTINST4("ins $t0, $t1, 4, 1", 0xffffffff, 0x98765432, t0, t1, 4, 1); 523 TESTINST4("ins $t0, $t1, 4, 1", 0xffffffff, 0xff865421, t0, t1, 4, 1); 524 TESTINST4("ins $t0, $t1, 4, 1", 0x98765432, 0x0, t0, t1, 4, 1); 525 TESTINST4("ins $t0, $t1, 4, 1", 0x98765432, 0xffffffff, t0, t1, 4, 1); 526 TESTINST4("ins $t0, $t1, 4, 1", 0x98765432, 0x98765432, t0, t1, 4, 1); 527 TESTINST4("ins $t0, $t1, 4, 1", 0x98765432, 0xff865421, t0, t1, 4, 1); 528 TESTINST4("ins $t0, $t1, 4, 1", 0xff865421, 0x0, t0, t1, 4, 1); 529 TESTINST4("ins $t0, $t1, 4, 1", 0xff865421, 0xffffffff, t0, t1, 4, 1); 530 TESTINST4("ins $t0, $t1, 4, 1", 0xff865421, 0x98765432, t0, t1, 4, 1); 531 TESTINST4("ins $t0, $t1, 4, 1", 0xff865421, 0xff865421, t0, t1, 4, 1); 532 TESTINST4("ins $t0, $t1, 4, 4", 0x0, 0x0, t0, t1, 4, 4); 533 TESTINST4("ins $t0, $t1, 4, 4", 0x0, 0xffffffff, t0, t1, 4, 4); 534 TESTINST4("ins $t0, $t1, 4, 4", 0x0, 0x98765432, t0, t1, 4, 4); 535 TESTINST4("ins $t0, $t1, 4, 4", 0x0, 0xff865421, t0, t1, 4, 4); 536 TESTINST4("ins $t0, $t1, 4, 4", 0xffffffff, 0x0, t0, t1, 4, 4); 537 TESTINST4("ins $t0, $t1, 4, 4", 0xffffffff, 0xffffffff, t0, t1, 4, 4); 538 TESTINST4("ins $t0, $t1, 4, 4", 0xffffffff, 0x98765432, t0, t1, 4, 4); 539 TESTINST4("ins $t0, $t1, 4, 4", 0xffffffff, 0xff865421, t0, t1, 4, 4); 540 TESTINST4("ins $t0, $t1, 4, 4", 0x98765432, 0x0, t0, t1, 4, 4); 541 TESTINST4("ins $t0, $t1, 4, 4", 0x98765432, 0xffffffff, t0, t1, 4, 4); 542 TESTINST4("ins $t0, $t1, 4, 4", 0x98765432, 0x98765432, t0, t1, 4, 4); 543 TESTINST4("ins $t0, $t1, 4, 4", 0x98765432, 0xff865421, t0, t1, 4, 4); 544 TESTINST4("ins $t0, $t1, 4, 4", 0xff865421, 0x0, t0, t1, 4, 4); 545 TESTINST4("ins $t0, $t1, 4, 4", 0xff865421, 0xffffffff, t0, t1, 4, 4); 546 TESTINST4("ins $t0, $t1, 4, 4", 0xff865421, 0x98765432, t0, t1, 4, 4); 547 TESTINST4("ins $t0, $t1, 4, 4", 0xff865421, 0xff865421, t0, t1, 4, 4); 548 TESTINST4("ins $t0, $t1, 4, 16", 0x0, 0x0, t0, t1, 4, 16); 549 TESTINST4("ins $t0, $t1, 4, 16", 0x0, 0xffffffff, t0, t1, 4, 16); 550 TESTINST4("ins $t0, $t1, 4, 16", 0x0, 0x98765432, t0, t1, 4, 16); 551 TESTINST4("ins $t0, $t1, 4, 16", 0x0, 0xff865421, t0, t1, 4, 16); 552 TESTINST4("ins $t0, $t1, 4, 16", 0xffffffff, 0x0, t0, t1, 4, 16); 553 TESTINST4("ins $t0, $t1, 4, 16", 0xffffffff, 0xffffffff, t0, t1, 4, 16); 554 TESTINST4("ins $t0, $t1, 4, 16", 0xffffffff, 0x98765432, t0, t1, 4, 16); 555 TESTINST4("ins $t0, $t1, 4, 16", 0xffffffff, 0xff865421, t0, t1, 4, 16); 556 TESTINST4("ins $t0, $t1, 4, 16", 0x98765432, 0x0, t0, t1, 4, 16); 557 TESTINST4("ins $t0, $t1, 4, 16", 0x98765432, 0xffffffff, t0, t1, 4, 16); 558 TESTINST4("ins $t0, $t1, 4, 16", 0x98765432, 0x98765432, t0, t1, 4, 16); 559 TESTINST4("ins $t0, $t1, 4, 16", 0x98765432, 0xff865421, t0, t1, 4, 16); 560 TESTINST4("ins $t0, $t1, 4, 16", 0xff865421, 0x0, t0, t1, 4, 16); 561 TESTINST4("ins $t0, $t1, 4, 16", 0xff865421, 0xffffffff, t0, t1, 4, 16); 562 TESTINST4("ins $t0, $t1, 4, 16", 0xff865421, 0x98765432, t0, t1, 4, 16); 563 TESTINST4("ins $t0, $t1, 4, 16", 0xff865421, 0xff865421, t0, t1, 4, 16); 564 TESTINST4("ins $t0, $t1, 4, 28", 0x0, 0x0, t0, t1, 4, 28); 565 TESTINST4("ins $t0, $t1, 4, 28", 0x0, 0xffffffff, t0, t1, 4, 28); 566 TESTINST4("ins $t0, $t1, 4, 28", 0x0, 0x98765432, t0, t1, 4, 28); 567 TESTINST4("ins $t0, $t1, 4, 28", 0x0, 0xff865421, t0, t1, 4, 28); 568 TESTINST4("ins $t0, $t1, 4, 28", 0xffffffff, 0x0, t0, t1, 4, 28); 569 TESTINST4("ins $t0, $t1, 4, 28", 0xffffffff, 0xffffffff, t0, t1, 4, 28); 570 TESTINST4("ins $t0, $t1, 4, 28", 0xffffffff, 0x98765432, t0, t1, 4, 28); 571 TESTINST4("ins $t0, $t1, 4, 28", 0xffffffff, 0xff865421, t0, t1, 4, 28); 572 TESTINST4("ins $t0, $t1, 4, 28", 0x98765432, 0x0, t0, t1, 4, 28); 573 TESTINST4("ins $t0, $t1, 4, 28", 0x98765432, 0xffffffff, t0, t1, 4, 28); 574 TESTINST4("ins $t0, $t1, 4, 28", 0x98765432, 0x98765432, t0, t1, 4, 28); 575 TESTINST4("ins $t0, $t1, 4, 28", 0x98765432, 0xff865421, t0, t1, 4, 28); 576 TESTINST4("ins $t0, $t1, 4, 28", 0xff865421, 0x0, t0, t1, 4, 28); 577 TESTINST4("ins $t0, $t1, 4, 28", 0xff865421, 0xffffffff, t0, t1, 4, 28); 578 TESTINST4("ins $t0, $t1, 4, 28", 0xff865421, 0x98765432, t0, t1, 4, 28); 579 TESTINST4("ins $t0, $t1, 4, 28", 0xff865421, 0xff865421, t0, t1, 4, 28); 580 581 TESTINST4("ins $t0, $t1, 16, 1", 0x0, 0x0, t0, t1, 1, 16); 582 TESTINST4("ins $t0, $t1, 16, 1", 0x0, 0xffffffff, t0, t1, 1, 16); 583 TESTINST4("ins $t0, $t1, 16, 1", 0x0, 0x98765432, t0, t1, 1, 16); 584 TESTINST4("ins $t0, $t1, 16, 1", 0x0, 0xff865421, t0, t1, 1, 16); 585 TESTINST4("ins $t0, $t1, 16, 1", 0xffffffff, 0x0, t0, t1, 1, 16); 586 TESTINST4("ins $t0, $t1, 16, 1", 0xffffffff, 0xffffffff, t0, t1, 1, 16); 587 TESTINST4("ins $t0, $t1, 16, 1", 0xffffffff, 0x98765432, t0, t1, 1, 16); 588 TESTINST4("ins $t0, $t1, 16, 1", 0xffffffff, 0xff865421, t0, t1, 1, 16); 589 TESTINST4("ins $t0, $t1, 16, 1", 0x98765432, 0x0, t0, t1, 1, 16); 590 TESTINST4("ins $t0, $t1, 16, 1", 0x98765432, 0xffffffff, t0, t1, 1, 16); 591 TESTINST4("ins $t0, $t1, 16, 1", 0x98765432, 0x98765432, t0, t1, 1, 16); 592 TESTINST4("ins $t0, $t1, 16, 1", 0x98765432, 0xff865421, t0, t1, 1, 16); 593 TESTINST4("ins $t0, $t1, 16, 1", 0xff865421, 0x0, t0, t1, 1, 16); 594 TESTINST4("ins $t0, $t1, 16, 1", 0xff865421, 0xffffffff, t0, t1, 1, 16); 595 TESTINST4("ins $t0, $t1, 16, 1", 0xff865421, 0x98765432, t0, t1, 1, 16); 596 TESTINST4("ins $t0, $t1, 16, 1", 0xff865421, 0xff865421, t0, t1, 1, 16); 597 TESTINST4("ins $t0, $t1, 16, 4", 0x0, 0x0, t0, t1, 16, 4); 598 TESTINST4("ins $t0, $t1, 16, 4", 0x0, 0xffffffff, t0, t1, 16, 4); 599 TESTINST4("ins $t0, $t1, 16, 4", 0x0, 0x98765432, t0, t1, 16, 4); 600 TESTINST4("ins $t0, $t1, 16, 4", 0x0, 0xff865421, t0, t1, 16, 4); 601 TESTINST4("ins $t0, $t1, 16, 4", 0xffffffff, 0x0, t0, t1, 16, 4); 602 TESTINST4("ins $t0, $t1, 16, 4", 0xffffffff, 0xffffffff, t0, t1, 16, 4); 603 TESTINST4("ins $t0, $t1, 16, 4", 0xffffffff, 0x98765432, t0, t1, 16, 4); 604 TESTINST4("ins $t0, $t1, 16, 4", 0xffffffff, 0xff865421, t0, t1, 16, 4); 605 TESTINST4("ins $t0, $t1, 16, 4", 0x98765432, 0x0, t0, t1, 16, 4); 606 TESTINST4("ins $t0, $t1, 16, 4", 0x98765432, 0xffffffff, t0, t1, 16, 4); 607 TESTINST4("ins $t0, $t1, 16, 4", 0x98765432, 0x98765432, t0, t1, 16, 4); 608 TESTINST4("ins $t0, $t1, 16, 4", 0x98765432, 0xff865421, t0, t1, 16, 4); 609 TESTINST4("ins $t0, $t1, 16, 4", 0xff865421, 0x0, t0, t1, 16, 4); 610 TESTINST4("ins $t0, $t1, 16, 4", 0xff865421, 0xffffffff, t0, t1, 16, 4); 611 TESTINST4("ins $t0, $t1, 16, 4", 0xff865421, 0x98765432, t0, t1, 16, 4); 612 TESTINST4("ins $t0, $t1, 16, 4", 0xff865421, 0xff865421, t0, t1, 16, 4); 613 TESTINST4("ins $t0, $t1, 16, 16", 0x0, 0x0, t0, t1, 16, 16); 614 TESTINST4("ins $t0, $t1, 16, 16", 0x0, 0xffffffff, t0, t1, 16, 16); 615 TESTINST4("ins $t0, $t1, 16, 16", 0x0, 0x98765432, t0, t1, 16, 16); 616 TESTINST4("ins $t0, $t1, 16, 16", 0x0, 0xff865421, t0, t1, 16, 16); 617 TESTINST4("ins $t0, $t1, 16, 16", 0xffffffff, 0x0, t0, t1, 16, 16); 618 TESTINST4("ins $t0, $t1, 16, 16", 0xffffffff, 0xffffffff, t0, t1, 16, 16); 619 TESTINST4("ins $t0, $t1, 16, 16", 0xffffffff, 0x98765432, t0, t1, 16, 16); 620 TESTINST4("ins $t0, $t1, 16, 16", 0xffffffff, 0xff865421, t0, t1, 16, 16); 621 TESTINST4("ins $t0, $t1, 16, 16", 0x98765432, 0x0, t0, t1, 16, 16); 622 TESTINST4("ins $t0, $t1, 16, 16", 0x98765432, 0xffffffff, t0, t1, 16, 16); 623 TESTINST4("ins $t0, $t1, 16, 16", 0x98765432, 0x98765432, t0, t1, 16, 16); 624 TESTINST4("ins $t0, $t1, 16, 16", 0x98765432, 0xff865421, t0, t1, 16, 16); 625 TESTINST4("ins $t0, $t1, 16, 16", 0xff865421, 0x0, t0, t1, 16, 16); 626 TESTINST4("ins $t0, $t1, 16, 16", 0xff865421, 0xffffffff, t0, t1, 16, 16); 627 TESTINST4("ins $t0, $t1, 16, 16", 0xff865421, 0x98765432, t0, t1, 16, 16); 628 TESTINST4("ins $t0, $t1, 16, 16", 0xff865421, 0xff865421, t0, t1, 16, 16); 629 630 TESTINST4("ins $t0, $t1, 31, 1", 0x0, 0x0, t0, t1, 31, 1); 631 TESTINST4("ins $t0, $t1, 31, 1", 0x0, 0xffffffff, t0, t1, 31, 1); 632 TESTINST4("ins $t0, $t1, 31, 1", 0x0, 0x98765432, t0, t1, 31, 1); 633 TESTINST4("ins $t0, $t1, 31, 1", 0x0, 0xff865421, t0, t1, 31, 1); 634 TESTINST4("ins $t0, $t1, 31, 1", 0xffffffff, 0x0, t0, t1, 31, 1); 635 TESTINST4("ins $t0, $t1, 31, 1", 0xffffffff, 0xffffffff, t0, t1, 31, 1); 636 TESTINST4("ins $t0, $t1, 31, 1", 0xffffffff, 0x98765432, t0, t1, 31, 1); 637 TESTINST4("ins $t0, $t1, 31, 1", 0xffffffff, 0xff865421, t0, t1, 31, 1); 638 TESTINST4("ins $t0, $t1, 31, 1", 0x98765432, 0x0, t0, t1, 31, 1); 639 TESTINST4("ins $t0, $t1, 31, 1", 0x98765432, 0xffffffff, t0, t1, 31, 1); 640 TESTINST4("ins $t0, $t1, 31, 1", 0x98765432, 0x98765432, t0, t1, 31, 1); 641 TESTINST4("ins $t0, $t1, 31, 1", 0x98765432, 0xff865421, t0, t1, 31, 1); 642 TESTINST4("ins $t0, $t1, 31, 1", 0xff865421, 0x0, t0, t1, 31, 1); 643 TESTINST4("ins $t0, $t1, 31, 1", 0xff865421, 0xffffffff, t0, t1, 31, 1); 644 TESTINST4("ins $t0, $t1, 31, 1", 0xff865421, 0x98765432, t0, t1, 31, 1); 645 TESTINST4("ins $t0, $t1, 31, 1", 0xff865421, 0xff865421, t0, t1, 31, 1); 646 #endif 647 648 printf("LB\n"); 649 TESTINSN5LOAD("lb $t0, 0($t1)", 0, 0, t0); 650 TESTINSN5LOAD("lb $t0, 4($t1)", 0, 4, t0); 651 TESTINSN5LOAD("lb $t0, 8($t1)", 0, 8, t0); 652 TESTINSN5LOAD("lb $t0, 12($t1)", 0, 12, t0); 653 TESTINSN5LOAD("lb $t0, 16($t1)", 0, 16, t0); 654 TESTINSN5LOAD("lb $t0, 20($t1)", 0, 20, t0); 655 TESTINSN5LOAD("lb $t0, 24($t1)", 0, 24, t0); 656 TESTINSN5LOAD("lb $t0, 28($t1)", 0, 28, t0); 657 TESTINSN5LOAD("lb $t0, 32($t1)", 0, 32, t0); 658 TESTINSN5LOAD("lb $t0, 36($t1)", 0, 36, t0); 659 TESTINSN5LOAD("lb $t0, 40($t1)", 0, 40, t0); 660 TESTINSN5LOAD("lb $t0, 44($t1)", 0, 44, t0); 661 TESTINSN5LOAD("lb $t0, 48($t1)", 0, 48, t0); 662 TESTINSN5LOAD("lb $t0, 52($t1)", 0, 52, t0); 663 TESTINSN5LOAD("lb $t0, 56($t1)", 0, 56, t0); 664 TESTINSN5LOAD("lb $t0, 60($t1)", 0, 60, t0); 665 TESTINSN5LOAD("lb $t0, 1($t1)", 0, 1, t0); 666 TESTINSN5LOAD("lb $t0, 2($t1)", 0, 2, t0); 667 TESTINSN5LOAD("lb $t0, 6($t1)", 0, 6, t0); 668 TESTINSN5LOAD("lb $t0, 10($t1)", 0, 10, t0); 669 TESTINSN5LOAD("lb $t0, 14($t1)", 0, 14, t0); 670 TESTINSN5LOAD("lb $t0, 18($t1)", 0, 18, t0); 671 TESTINSN5LOAD("lb $t0, 22($t1)", 0, 22, t0); 672 TESTINSN5LOAD("lb $t0, 26($t1)", 0, 26, t0); 673 TESTINSN5LOAD("lb $t0, 30($t1)", 0, 30, t0); 674 TESTINSN5LOAD("lb $t0, 34($t1)", 0, 34, t0); 675 TESTINSN5LOAD("lb $t0, 38($t1)", 0, 38, t0); 676 677 printf("LBU\n"); 678 TESTINSN5LOAD("lbu $t0, 0($t1)", 0, 0, t0); 679 TESTINSN5LOAD("lbu $t0, 4($t1)", 0, 4, t0); 680 TESTINSN5LOAD("lbu $t0, 8($t1)", 0, 8, t0); 681 TESTINSN5LOAD("lbu $t0, 12($t1)", 0, 12, t0); 682 TESTINSN5LOAD("lbu $t0, 16($t1)", 0, 16, t0); 683 TESTINSN5LOAD("lbu $t0, 20($t1)", 0, 20, t0); 684 TESTINSN5LOAD("lbu $t0, 24($t1)", 0, 24, t0); 685 TESTINSN5LOAD("lbu $t0, 28($t1)", 0, 28, t0); 686 TESTINSN5LOAD("lbu $t0, 32($t1)", 0, 32, t0); 687 TESTINSN5LOAD("lbu $t0, 36($t1)", 0, 36, t0); 688 TESTINSN5LOAD("lbu $t0, 40($t1)", 0, 40, t0); 689 TESTINSN5LOAD("lbu $t0, 44($t1)", 0, 44, t0); 690 TESTINSN5LOAD("lbu $t0, 48($t1)", 0, 48, t0); 691 TESTINSN5LOAD("lbu $t0, 52($t1)", 0, 52, t0); 692 TESTINSN5LOAD("lbu $t0, 56($t1)", 0, 56, t0); 693 TESTINSN5LOAD("lbu $t0, 60($t1)", 0, 60, t0); 694 TESTINSN5LOAD("lbu $t0, 1($t1)", 0, 1, t0); 695 TESTINSN5LOAD("lbu $t0, 2($t1)", 0, 2, t0); 696 TESTINSN5LOAD("lbu $t0, 6($t1)", 0, 6, t0); 697 TESTINSN5LOAD("lbu $t0, 10($t1)", 0, 10, t0); 698 TESTINSN5LOAD("lbu $t0, 14($t1)", 0, 14, t0); 699 TESTINSN5LOAD("lbu $t0, 18($t1)", 0, 18, t0); 700 TESTINSN5LOAD("lbu $t0, 22($t1)", 0, 22, t0); 701 TESTINSN5LOAD("lbu $t0, 26($t1)", 0, 26, t0); 702 TESTINSN5LOAD("lbu $t0, 30($t1)", 0, 30, t0); 703 TESTINSN5LOAD("lbu $t0, 34($t1)", 0, 34, t0); 704 TESTINSN5LOAD("lbu $t0, 38($t1)", 0, 38, t0); 705 706 printf("LH\n"); 707 TESTINSN5LOAD("lh $t0, 0($t1)", 0, 0, t0); 708 TESTINSN5LOAD("lh $t0, 4($t1)", 0, 4, t0); 709 TESTINSN5LOAD("lh $t0, 8($t1)", 0, 8, t0); 710 TESTINSN5LOAD("lh $t0, 12($t1)", 0, 12, t0); 711 TESTINSN5LOAD("lh $t0, 16($t1)", 0, 16, t0); 712 TESTINSN5LOAD("lh $t0, 20($t1)", 0, 20, t0); 713 TESTINSN5LOAD("lh $t0, 24($t1)", 0, 24, t0); 714 TESTINSN5LOAD("lh $t0, 28($t1)", 0, 28, t0); 715 TESTINSN5LOAD("lh $t0, 32($t1)", 0, 32, t0); 716 TESTINSN5LOAD("lh $t0, 36($t1)", 0, 36, t0); 717 TESTINSN5LOAD("lh $t0, 40($t1)", 0, 40, t0); 718 TESTINSN5LOAD("lh $t0, 44($t1)", 0, 44, t0); 719 TESTINSN5LOAD("lh $t0, 48($t1)", 0, 48, t0); 720 TESTINSN5LOAD("lh $t0, 52($t1)", 0, 52, t0); 721 TESTINSN5LOAD("lh $t0, 56($t1)", 0, 56, t0); 722 TESTINSN5LOAD("lh $t0, 60($t1)", 0, 60, t0); 723 TESTINSN5LOAD("lh $t0, 62($t1)", 0, 62, t0); 724 TESTINSN5LOAD("lh $t0, 2($t1)", 0, 2, t0); 725 TESTINSN5LOAD("lh $t0, 6($t1)", 0, 6, t0); 726 TESTINSN5LOAD("lh $t0, 10($t1)", 0, 10, t0); 727 TESTINSN5LOAD("lh $t0, 14($t1)", 0, 14, t0); 728 TESTINSN5LOAD("lh $t0, 18($t1)", 0, 18, t0); 729 TESTINSN5LOAD("lh $t0, 22($t1)", 0, 22, t0); 730 TESTINSN5LOAD("lh $t0, 26($t1)", 0, 26, t0); 731 TESTINSN5LOAD("lh $t0, 30($t1)", 0, 30, t0); 732 TESTINSN5LOAD("lh $t0, 34($t1)", 0, 34, t0); 733 TESTINSN5LOAD("lh $t0, 38($t1)", 0, 38, t0); 734 735 printf("LHU\n"); 736 TESTINSN5LOAD("lhu $t0, 0($t1)", 0, 0, t0); 737 TESTINSN5LOAD("lhu $t0, 4($t1)", 0, 4, t0); 738 TESTINSN5LOAD("lhu $t0, 8($t1)", 0, 8, t0); 739 TESTINSN5LOAD("lhu $t0, 12($t1)", 0, 12, t0); 740 TESTINSN5LOAD("lhu $t0, 16($t1)", 0, 16, t0); 741 TESTINSN5LOAD("lhu $t0, 20($t1)", 0, 20, t0); 742 TESTINSN5LOAD("lhu $t0, 24($t1)", 0, 24, t0); 743 TESTINSN5LOAD("lhu $t0, 28($t1)", 0, 28, t0); 744 TESTINSN5LOAD("lhu $t0, 32($t1)", 0, 32, t0); 745 TESTINSN5LOAD("lhu $t0, 36($t1)", 0, 36, t0); 746 TESTINSN5LOAD("lhu $t0, 40($t1)", 0, 40, t0); 747 TESTINSN5LOAD("lhu $t0, 44($t1)", 0, 44, t0); 748 TESTINSN5LOAD("lhu $t0, 48($t1)", 0, 48, t0); 749 TESTINSN5LOAD("lhu $t0, 52($t1)", 0, 52, t0); 750 TESTINSN5LOAD("lhu $t0, 56($t1)", 0, 56, t0); 751 TESTINSN5LOAD("lhu $t0, 60($t1)", 0, 60, t0); 752 TESTINSN5LOAD("lhu $t0, 62($t1)", 0, 62, t0); 753 TESTINSN5LOAD("lhu $t0, 2($t1)", 0, 2, t0); 754 TESTINSN5LOAD("lhu $t0, 6($t1)", 0, 6, t0); 755 TESTINSN5LOAD("lhu $t0, 10($t1)", 0, 10, t0); 756 TESTINSN5LOAD("lhu $t0, 14($t1)", 0, 14, t0); 757 TESTINSN5LOAD("lhu $t0, 18($t1)", 0, 18, t0); 758 TESTINSN5LOAD("lhu $t0, 22($t1)", 0, 22, t0); 759 TESTINSN5LOAD("lhu $t0, 26($t1)", 0, 26, t0); 760 TESTINSN5LOAD("lhu $t0, 30($t1)", 0, 30, t0); 761 TESTINSN5LOAD("lhu $t0, 34($t1)", 0, 34, t0); 762 TESTINSN5LOAD("lhu $t0, 38($t1)", 0, 38, t0); 763 764 printf("LUI\n"); 765 TESTINST3("lui $t0, 0xffff", 0xffff, t0, t1); 766 TESTINST3("lui $t0, 0xff00", 0xff00, t0, t1); 767 TESTINST3("lui $t0, 0xff", 0xff, t0, t1); 768 TESTINST3("lui $t0, 0x0", 0x0, t0, t1); 769 TESTINST3("lui $t0, 0x5", 0x5, t0, t1); 770 TESTINST3("lui $t0, 0x387", 0x387, t0, t1); 771 772 printf("LW\n"); 773 TESTINSN5LOAD("lw $t0, 0($t1)", 0, 0, t0); 774 TESTINSN5LOAD("lw $t0, 4($t1)", 0, 4, t0); 775 TESTINSN5LOAD("lw $t0, 8($t1)", 0, 8, t0); 776 TESTINSN5LOAD("lw $t0, 12($t1)", 0, 12, t0); 777 TESTINSN5LOAD("lw $t0, 16($t1)", 0, 16, t0); 778 TESTINSN5LOAD("lw $t0, 20($t1)", 0, 20, t0); 779 TESTINSN5LOAD("lw $t0, 24($t1)", 0, 24, t0); 780 TESTINSN5LOAD("lw $t0, 28($t1)", 0, 28, t0); 781 TESTINSN5LOAD("lw $t0, 32($t1)", 0, 32, t0); 782 TESTINSN5LOAD("lw $t0, 36($t1)", 0, 36, t0); 783 TESTINSN5LOAD("lw $t0, 40($t1)", 0, 40, t0); 784 TESTINSN5LOAD("lw $t0, 44($t1)", 0, 44, t0); 785 TESTINSN5LOAD("lw $t0, 48($t1)", 0, 48, t0); 786 TESTINSN5LOAD("lw $t0, 52($t1)", 0, 52, t0); 787 TESTINSN5LOAD("lw $t0, 56($t1)", 0, 56, t0); 788 TESTINSN5LOAD("lw $t0, 60($t1)", 0, 60, t0); 789 TESTINSN5LOAD("lw $t0, 2($t1)", 0, 2, t0); 790 TESTINSN5LOAD("lw $t0, 6($t1)", 0, 6, t0); 791 TESTINSN5LOAD("lw $t0, 10($t1)", 0, 10, t0); 792 TESTINSN5LOAD("lw $t0, 14($t1)", 0, 14, t0); 793 TESTINSN5LOAD("lw $t0, 18($t1)", 0, 18, t0); 794 TESTINSN5LOAD("lw $t0, 22($t1)", 0, 22, t0); 795 TESTINSN5LOAD("lw $t0, 26($t1)", 0, 26, t0); 796 TESTINSN5LOAD("lw $t0, 30($t1)", 0, 30, t0); 797 TESTINSN5LOAD("lw $t0, 34($t1)", 0, 34, t0); 798 TESTINSN5LOAD("lw $t0, 38($t1)", 0, 38, t0); 799 800 printf("LWL\n"); 801 TESTINSN5LOAD("lwl $t0, 3($t1)", 0, 3, t0); 802 TESTINSN5LOAD("lwl $t0, 6($t1)", 0, 6, t0); 803 TESTINSN5LOAD("lwl $t0, 9($t1)", 0, 9, t0); 804 TESTINSN5LOAD("lwl $t0, 12($t1)", 0, 12, t0); 805 TESTINSN5LOAD("lwl $t0, 15($t1)", 0, 15, t0); 806 TESTINSN5LOAD("lwl $t0, 18($t1)", 0, 18, t0); 807 TESTINSN5LOAD("lwl $t0, 21($t1)", 0, 21, t0); 808 TESTINSN5LOAD("lwl $t0, 24($t1)", 0, 24, t0); 809 TESTINSN5LOAD("lwl $t0, 27($t1)", 0, 27, t0); 810 TESTINSN5LOAD("lwl $t0, 30($t1)", 0, 30, t0); 811 TESTINSN5LOAD("lwl $t0, 33($t1)", 0, 33, t0); 812 TESTINSN5LOAD("lwl $t0, 36($t1)", 0, 36, t0); 813 TESTINSN5LOAD("lwl $t0, 39($t1)", 0, 39, t0); 814 TESTINSN5LOAD("lwl $t0, 42($t1)", 0, 42, t0); 815 TESTINSN5LOAD("lwl $t0, 45($t1)", 0, 45, t0); 816 TESTINSN5LOAD("lwl $t0, 48($t1)", 0, 48, t0); 817 TESTINSN5LOAD("lwl $t0, 51($t1)", 0, 51, t0); 818 TESTINSN5LOAD("lwl $t0, 54($t1)", 0, 54, t0); 819 TESTINSN5LOAD("lwl $t0, 57($t1)", 0, 57, t0); 820 TESTINSN5LOAD("lwl $t0, 60($t1)", 0, 60, t0); 821 822 printf("LWR\n"); 823 TESTINSN5LOAD("lwr $t0, 3($t1)", 0, 0, t0); 824 TESTINSN5LOAD("lwr $t0, 6($t1)", 0, 4, t0); 825 TESTINSN5LOAD("lwr $t0, 9($t1)", 0, 8, t0); 826 TESTINSN5LOAD("lwr $t0, 12($t1)", 0, 12, t0); 827 TESTINSN5LOAD("lwr $t0, 15($t1)", 0, 16, t0); 828 TESTINSN5LOAD("lwr $t0, 18($t1)", 0, 20, t0); 829 TESTINSN5LOAD("lwr $t0, 21($t1)", 0, 24, t0); 830 TESTINSN5LOAD("lwr $t0, 24($t1)", 0, 28, t0); 831 TESTINSN5LOAD("lwr $t0, 27($t1)", 0, 32, t0); 832 TESTINSN5LOAD("lwr $t0, 30($t1)", 0, 36, t0); 833 TESTINSN5LOAD("lwr $t0, 33($t1)", 0, 40, t0); 834 TESTINSN5LOAD("lwr $t0, 36($t1)", 0, 44, t0); 835 TESTINSN5LOAD("lwr $t0, 39($t1)", 0, 48, t0); 836 TESTINSN5LOAD("lwr $t0, 42($t1)", 0, 52, t0); 837 TESTINSN5LOAD("lwr $t0, 45($t1)", 0, 56, t0); 838 TESTINSN5LOAD("lwr $t0, 48($t1)", 0, 60, t0); 839 TESTINSN5LOAD("lwr $t0, 51($t1)", 0, 64, t0); 840 TESTINSN5LOAD("lwr $t0, 54($t1)", 0, 2, t0); 841 TESTINSN5LOAD("lwr $t0, 57($t1)", 0, 6, t0); 842 TESTINSN5LOAD("lwr $t0, 60($t1)", 0, 10, t0); 843 844 printf("MADD\n"); 845 TESTINST3a("madd $t0, $t1", 0x6, 0x2, t0, t1); 846 TESTINST3a("madd $t0, $t1", 0x55, 0x28, t0, t1); 847 TESTINST3a("madd $t0, $t1", 0x18, 0xfff, t0, t1); 848 TESTINST3a("madd $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 849 TESTINST3a("madd $t0, $t1", 0xffffffff, 0x1, t0, t1); 850 TESTINST3a("madd $t0, $t1", 0x1, 0xffffffff, t0, t1); 851 TESTINST3a("madd $t0, $t1", 0x2, 0x6, t0, t1); 852 TESTINST3a("madd $t0, $t1", 0x356, 0x555, t0, t1); 853 854 printf("MADDU\n"); 855 TESTINST3a("maddu $t0, $t1", 0x6, 0x2, t0, t1); 856 TESTINST3a("maddu $t0, $t1", 0x55, 0x28, t0, t1); 857 TESTINST3a("maddu $t0, $t1", 0x18, 0xfff, t0, t1); 858 TESTINST3a("maddu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 859 TESTINST3a("maddu $t0, $t1", 0xffffffff, 0x1, t0, t1); 860 TESTINST3a("maddu $t0, $t1", 0x1, 0xffffffff, t0, t1); 861 TESTINST3a("maddu $t0, $t1", 0x2, 0x6, t0, t1); 862 TESTINST3a("maddu $t0, $t1", 0x356, 0x555, t0, t1); 863 864 printf("MOVN\n"); 865 TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); 866 TESTINST1("movn $t0, $t1, $t2", 0x31415927, 1, t0, t1, t2); 867 TESTINST1("movn $t0, $t1, $t2", 0, 255, t0, t1, t2); 868 TESTINST1("movn $t0, $t1, $t2", -1, 0, t0, t1, t2); 869 TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); 870 TESTINST1("movn $t0, $t1, $t2", 0, 0, t0, t1, t2); 871 TESTINST1("movn $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 872 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 873 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 1, t0, t1, t2); 874 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 875 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 876 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 877 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 878 TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); 879 TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 880 TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); 881 TESTINST1("movn $t0, $t1, $t2", 1, 0, t0, t1, t2); 882 TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); 883 TESTINST1("movn $t0, $t1, $t2", -1, 0, t0, t1, t2); 884 TESTINST1("movn $t0, $t1, $t2", 0, -1, t0, t1, t2); 885 TESTINST1("movn $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 886 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 887 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 888 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 889 TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 890 TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 891 892 printf("MOVZ\n"); 893 TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); 894 TESTINST1("movz $t0, $t1, $t2", 0x31415927, 1, t0, t1, t2); 895 TESTINST1("movz $t0, $t1, $t2", 0, 255, t0, t1, t2); 896 TESTINST1("movz $t0, $t1, $t2", -1, 0, t0, t1, t2); 897 TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); 898 TESTINST1("movz $t0, $t1, $t2", 0, 0, t0, t1, t2); 899 TESTINST1("movz $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 900 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 901 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 1, t0, t1, t2); 902 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 903 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 904 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 905 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 906 TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); 907 TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 908 TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); 909 TESTINST1("movz $t0, $t1, $t2", 1, 0, t0, t1, t2); 910 TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); 911 TESTINST1("movz $t0, $t1, $t2", -1, 0, t0, t1, t2); 912 TESTINST1("movz $t0, $t1, $t2", 0, -1, t0, t1, t2); 913 TESTINST1("movz $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 914 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 915 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 916 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 917 TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); 918 TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 919 920 printf("MSUB\n"); 921 TESTINST3a("msub $t0, $t1", 0x6, 0x2, t0, t1); 922 TESTINST3a("msub $t0, $t1", 0x55, 0x28, t0, t1); 923 TESTINST3a("msub $t0, $t1", 0x18, 0xfff, t0, t1); 924 TESTINST3a("msub $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 925 TESTINST3a("msub $t0, $t1", 0xffffffff, 0x1, t0, t1); 926 TESTINST3a("msub $t0, $t1", 0x1, 0xffffffff, t0, t1); 927 TESTINST3a("msub $t0, $t1", 0x2, 0x6, t0, t1); 928 TESTINST3a("msub $t0, $t1", 0x356, 0x555, t0, t1); 929 930 printf("MSUBU\n"); 931 TESTINST3a("msubu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 932 TESTINST3a("msubu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 933 TESTINST3a("msubu $t0, $t1", 0, 255, t0, t1); 934 TESTINST3a("msubu $t0, $t1", -1, 0, t0, t1); 935 TESTINST3a("msubu $t0, $t1", 0, 1, t0, t1); 936 TESTINST3a("msubu $t0, $t1", 0, 0, t0, t1); 937 TESTINST3a("msubu $t0, $t1", 0x80000000, -1, t0, t1); 938 TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 939 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0, t0, t1); 940 TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 941 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 942 TESTINST3a("msubu $t0, $t1", 0x80000000, 0xff000000, t0, t1); 943 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 944 TESTINST3a("msubu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 945 TESTINST3a("msubu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 946 TESTINST3a("msubu $t0, $t1", 0, 255, t0, t1); 947 TESTINST3a("msubu $t0, $t1", 1, 0, t0, t1); 948 TESTINST3a("msubu $t0, $t1", 0, 1, t0, t1); 949 TESTINST3a("msubu $t0, $t1", -1, 0, t0, t1); 950 TESTINST3a("msubu $t0, $t1", 0, -1, t0, t1); 951 TESTINST3a("msubu $t0, $t1", 0, 0x80000000, t0, t1); 952 TESTINST3a("msubu $t0, $t1", 0x80000000, 0, t0, t1); 953 TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 954 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 955 TESTINST3a("msubu $t0, $t1", 0x80000000, 0xff000000, t0, t1); 956 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 957 TESTINST3a("msubu $t0, $t1", 0xffffffff, 0, t0, t1); 958 TESTINST3a("msubu $t0, $t1", 0, 0xffffffff, t0, t1); 959 TESTINST3a("msubu $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); 960 TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 961 TESTINST3a("msubu $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); 962 963 printf("MUL\n"); 964 TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 965 TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 966 TESTINST1("mul $t0, $t1, $t2", 0, 255, t0, t1, t2); 967 TESTINST1("mul $t0, $t1, $t2", -1, 0, t0, t1, t2); 968 TESTINST1("mul $t0, $t1, $t2", 0, 1, t0, t1, t2); 969 TESTINST1("mul $t0, $t1, $t2", 0, 0, t0, t1, t2); 970 TESTINST1("mul $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 971 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 972 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 973 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 974 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 975 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 976 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 977 TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 978 TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 979 TESTINST1("mul $t0, $t1, $t2", 0, 255, t0, t1, t2); 980 TESTINST1("mul $t0, $t1, $t2", 1, 0, t0, t1, t2); 981 TESTINST1("mul $t0, $t1, $t2", 0, 1, t0, t1, t2); 982 TESTINST1("mul $t0, $t1, $t2", -1, 0, t0, t1, t2); 983 TESTINST1("mul $t0, $t1, $t2", 0, -1, t0, t1, t2); 984 TESTINST1("mul $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 985 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 986 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 987 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 988 TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 989 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 990 TESTINST1("mul $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 991 TESTINST1("mul $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 992 TESTINST1("mul $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 993 TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 994 TESTINST1("mul $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 995 996 printf("MULT\n"); 997 TESTINST3a("mult $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 998 TESTINST3a("mult $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 999 TESTINST3a("mult $t0, $t1", 0, 255, t0, t1); 1000 TESTINST3a("mult $t0, $t1", -1, 0, t0, t1); 1001 TESTINST3a("mult $t0, $t1", 0, 1, t0, t1); 1002 TESTINST3a("mult $t0, $t1", 0, 0, t0, t1); 1003 TESTINST3a("mult $t0, $t1", 0x80000000, -1, t0, t1); 1004 TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); 1005 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0, t0, t1); 1006 TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); 1007 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 1008 TESTINST3a("mult $t0, $t1", 0x80000000, 0xff000000, t0, t1); 1009 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 1010 TESTINST3a("mult $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 1011 TESTINST3a("mult $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 1012 TESTINST3a("mult $t0, $t1", 0, 255, t0, t1); 1013 TESTINST3a("mult $t0, $t1", 1, 0, t0, t1); 1014 TESTINST3a("mult $t0, $t1", 0, 1, t0, t1); 1015 TESTINST3a("mult $t0, $t1", -1, 0, t0, t1); 1016 TESTINST3a("mult $t0, $t1", 0, -1, t0, t1); 1017 TESTINST3a("mult $t0, $t1", 0, 0x80000000, t0, t1); 1018 TESTINST3a("mult $t0, $t1", 0x80000000, 0, t0, t1); 1019 TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); 1020 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 1021 TESTINST3a("mult $t0, $t1", 0x80000000, 0xff000000, t0, t1); 1022 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 1023 TESTINST3a("mult $t0, $t1", 0xffffffff, 0, t0, t1); 1024 TESTINST3a("mult $t0, $t1", 0, 0xffffffff, t0, t1); 1025 TESTINST3a("mult $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); 1026 TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 1027 TESTINST3a("mult $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); 1028 1029 printf("MULTU\n"); 1030 TESTINST3a("multu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 1031 TESTINST3a("multu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 1032 TESTINST3a("multu $t0, $t1", 0, 255, t0, t1); 1033 TESTINST3a("multu $t0, $t1", -1, 0, t0, t1); 1034 TESTINST3a("multu $t0, $t1", 0, 1, t0, t1); 1035 TESTINST3a("multu $t0, $t1", 0, 0, t0, t1); 1036 TESTINST3a("multu $t0, $t1", 0x80000000, -1, t0, t1); 1037 TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 1038 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0, t0, t1); 1039 TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 1040 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 1041 TESTINST3a("multu $t0, $t1", 0x80000000, 0xff000000, t0, t1); 1042 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 1043 TESTINST3a("multu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); 1044 TESTINST3a("multu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); 1045 TESTINST3a("multu $t0, $t1", 0, 255, t0, t1); 1046 TESTINST3a("multu $t0, $t1", 1, 0, t0, t1); 1047 TESTINST3a("multu $t0, $t1", 0, 1, t0, t1); 1048 TESTINST3a("multu $t0, $t1", -1, 0, t0, t1); 1049 TESTINST3a("multu $t0, $t1", 0, -1, t0, t1); 1050 TESTINST3a("multu $t0, $t1", 0, 0x80000000, t0, t1); 1051 TESTINST3a("multu $t0, $t1", 0x80000000, 0, t0, t1); 1052 TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); 1053 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); 1054 TESTINST3a("multu $t0, $t1", 0x80000000, 0xff000000, t0, t1); 1055 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); 1056 TESTINST3a("multu $t0, $t1", 0xffffffff, 0, t0, t1); 1057 TESTINST3a("multu $t0, $t1", 0, 0xffffffff, t0, t1); 1058 TESTINST3a("multu $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); 1059 TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); 1060 TESTINST3a("multu $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); 1061 1062 printf("NOR\n"); 1063 TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1064 TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1065 TESTINST1("nor $t0, $t1, $t2", 0, 255, t0, t1, t2); 1066 TESTINST1("nor $t0, $t1, $t2", -1, 0, t0, t1, t2); 1067 TESTINST1("nor $t0, $t1, $t2", 0, 1, t0, t1, t2); 1068 TESTINST1("nor $t0, $t1, $t2", 0, 0, t0, t1, t2); 1069 TESTINST1("nor $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1070 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1071 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1072 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1073 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1074 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1075 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1076 TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1077 TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1078 TESTINST1("nor $t0, $t1, $t2", 0, 255, t0, t1, t2); 1079 TESTINST1("nor $t0, $t1, $t2", 1, 0, t0, t1, t2); 1080 TESTINST1("nor $t0, $t1, $t2", 0, 1, t0, t1, t2); 1081 TESTINST1("nor $t0, $t1, $t2", -1, 0, t0, t1, t2); 1082 TESTINST1("nor $t0, $t1, $t2", 0, -1, t0, t1, t2); 1083 TESTINST1("nor $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1084 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1085 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1086 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1087 TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1088 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1089 TESTINST1("nor $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1090 TESTINST1("nor $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1091 TESTINST1("nor $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1092 TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1093 TESTINST1("nor $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1094 1095 #if (__mips==32) && (__mips_isa_rev>=2) 1096 printf("WSBH\n"); 1097 TESTINST3("wsbh $t0, $t1", 0x2, t0, t1); 1098 TESTINST3("wsbh $t0, $t1", 0x28, t0, t1); 1099 TESTINST3("wsbh $t0, $t1", -258, t0, t1); 1100 TESTINST3("wsbh $t0, $t1", 0x7fffffff, t0, t1); 1101 TESTINST3("wsbh $t0, $t1", -11, t0, t1); 1102 TESTINST3("wsbh $t0, $t1", 0xffffffff, t0, t1); 1103 TESTINST3("wsbh $t0, $t1", 0x16, t0, t1); 1104 TESTINST3("wsbh $t0, $t1", -1, t0, t1); 1105 #endif 1106 1107 printf("NOT\n"); 1108 TESTINST3("not $t0, $t1", 0x2, t0, t1); 1109 TESTINST3("not $t0, $t1", 0x28, t0, t1); 1110 TESTINST3("not $t0, $t1", -258, t0, t1); 1111 TESTINST3("not $t0, $t1", 0x7fffffff, t0, t1); 1112 TESTINST3("not $t0, $t1", -11, t0, t1); 1113 TESTINST3("not $t0, $t1", 0xffffffff, t0, t1); 1114 TESTINST3("not $t0, $t1", 0x16, t0, t1); 1115 TESTINST3("not $t0, $t1", -1, t0, t1); 1116 1117 printf("NEGU\n"); 1118 TESTINST3("negu $t0, $t1", 0x2, t0, t1); 1119 TESTINST3("negu $t0, $t1", 0x28, t0, t1); 1120 TESTINST3("negu $t0, $t1", -258, t0, t1); 1121 TESTINST3("negu $t0, $t1", 0x7fffffff, t0, t1); 1122 TESTINST3("negu $t0, $t1", -11, t0, t1); 1123 TESTINST3("negu $t0, $t1", 0xffffffff, t0, t1); 1124 TESTINST3("negu $t0, $t1", 0x16, t0, t1); 1125 TESTINST3("negu $t0, $t1", -1, t0, t1); 1126 1127 printf("OR\n"); 1128 TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1129 TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1130 TESTINST1("or $t0, $t1, $t2", 0, 255, t0, t1, t2); 1131 TESTINST1("or $t0, $t1, $t2", -1, 0, t0, t1, t2); 1132 TESTINST1("or $t0, $t1, $t2", 0, 1, t0, t1, t2); 1133 TESTINST1("or $t0, $t1, $t2", 0, 0, t0, t1, t2); 1134 TESTINST1("or $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1135 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1136 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1137 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1138 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1139 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1140 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1141 TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1142 TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1143 TESTINST1("or $t0, $t1, $t2", 0, 255, t0, t1, t2); 1144 TESTINST1("or $t0, $t1, $t2", 1, 0, t0, t1, t2); 1145 TESTINST1("or $t0, $t1, $t2", 0, 1, t0, t1, t2); 1146 TESTINST1("or $t0, $t1, $t2", -1, 0, t0, t1, t2); 1147 TESTINST1("or $t0, $t1, $t2", 0, -1, t0, t1, t2); 1148 TESTINST1("or $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1149 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1150 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1151 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1152 TESTINST1("or $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1153 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1154 TESTINST1("or $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1155 TESTINST1("or $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1156 TESTINST1("or $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1157 TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1158 TESTINST1("or $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1159 1160 printf("ORI\n"); 1161 TESTINST2("ori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); 1162 TESTINST2("ori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); 1163 TESTINST2("ori $t0, $t1, 255", 0, 255, t0, t1); 1164 TESTINST2("ori $t0, $t1, 0", -1, 0, t0, t1); 1165 TESTINST2("ori $t0, $t1, 1", 0, 1, t0, t1); 1166 TESTINST2("ori $t0, $t1, 0", 0, 0, t0, t1); 1167 TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1168 TESTINST2("ori $t0, $t1, 0", 0x7fffffff, 0, t0, t1); 1169 TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1170 TESTINST2("ori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); 1171 TESTINST2("ori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); 1172 TESTINST2("ori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); 1173 TESTINST2("ori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); 1174 TESTINST2("ori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); 1175 TESTINST2("ori $t0, $t1, 255", 0, 255, t0, t1); 1176 TESTINST2("ori $t0, $t1, 0", 1, 0, t0, t1); 1177 TESTINST2("ori $t0, $t1, 1", 0, 1, t0, t1); 1178 TESTINST2("ori $t0, $t1, 0", -1, 0, t0, t1); 1179 TESTINST2("ori $t0, $t1, 0x8000", 0, 0x8000, t0, t1); 1180 TESTINST2("ori $t0, $t1, 0", 0x8000, 0, t0, t1); 1181 TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1182 TESTINST2("ori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); 1183 TESTINST2("ori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); 1184 TESTINST2("ori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); 1185 TESTINST2("ori $t0, $t1, 0", 0xffff, 0, t0, t1); 1186 TESTINST2("ori $t0, $t1, 0xffff", 0, 0xffff, t0, t1); 1187 TESTINST2("ori $t0, $t1, 0xffff", 0xffffffff, 0xffff, t0, t1); 1188 TESTINST2("ori $t0, $t1, 0x7fff", 0x7fffffff, 0x7fff, t0, t1); 1189 TESTINST2("ori $t0, $t1, 0x0000", 0x0000ffff, 0x0000, t0, t1); 1190 1191 #if (__mips==32) && (__mips_isa_rev>=2) 1192 printf("ROTR\n"); 1193 TESTINST2("rotr $t0, $t1, 0x00000000", 0x31415927, 0x00000000, t0, t1); 1194 TESTINST2("rotr $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1195 TESTINST2("rotr $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1196 TESTINST2("rotr $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1197 TESTINST2("rotr $t0, $t1, 0x00000010", 0x31415927, 0x00000010, t0, t1); 1198 TESTINST2("rotr $t0, $t1, 0x0000001F", 0x31415927, 0x0000001F, t0, t1); 1199 TESTINST2("rotr $t0, $t1, 0x0000001A", 0x31415927, 0x0000001A, t0, t1); 1200 TESTINST2("rotr $t0, $t1, 0x00000007", 0x31415927, 0x00000007, t0, t1); 1201 TESTINST2("rotr $t0, $t1, 0x00000000", 0x00088000, 0x00000000, t0, t1); 1202 TESTINST2("rotr $t0, $t1, 0x00000001", 0x00088000, 0x00000001, t0, t1); 1203 TESTINST2("rotr $t0, $t1, 31", 0x00088000, 31, t0, t1); 1204 TESTINST2("rotr $t0, $t1, 16", 0x00010000, 16, t0, t1); 1205 TESTINST2("rotr $t0, $t1, 17", 0x00010000, 17, t0, t1); 1206 TESTINST2("rotr $t0, $t1, 18", 0x00010000, 18, t0, t1); 1207 TESTINST2("rotr $t0, $t1, 0", 0, 0, t0, t1); 1208 TESTINST2("rotr $t0, $t1, 0x1F", 0xFFFF, 0x1F, t0, t1); 1209 #endif 1210 1211 #if (__mips==32) && (__mips_isa_rev>=2) 1212 printf("ROTRV\n"); 1213 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1214 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1215 TESTINST1("rotrv $t0, $t1, $t2", 0, 255, t0, t1, t2); 1216 TESTINST1("rotrv $t0, $t1, $t2", -1, 0, t0, t1, t2); 1217 TESTINST1("rotrv $t0, $t1, $t2", 0, 1, t0, t1, t2); 1218 TESTINST1("rotrv $t0, $t1, $t2", 0, 0, t0, t1, t2); 1219 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1220 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1221 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1222 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1223 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1224 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1225 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1226 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1227 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1228 TESTINST1("rotrv $t0, $t1, $t2", 0, 255, t0, t1, t2); 1229 TESTINST1("rotrv $t0, $t1, $t2", 1, 0, t0, t1, t2); 1230 TESTINST1("rotrv $t0, $t1, $t2", 0, 1, t0, t1, t2); 1231 TESTINST1("rotrv $t0, $t1, $t2", -1, 0, t0, t1, t2); 1232 TESTINST1("rotrv $t0, $t1, $t2", 0, -1, t0, t1, t2); 1233 TESTINST1("rotrv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1234 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1235 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1236 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1237 TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1238 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1239 TESTINST1("rotrv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1240 TESTINST1("rotrv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1241 TESTINST1("rotrv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1242 TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1243 TESTINST1("rotrv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1244 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1245 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1246 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1247 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1248 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1249 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1250 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1251 TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1252 TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1253 TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1254 TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1255 TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1256 TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1257 TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1258 TESTINST1("rotrv $t0, $t1, $t2", 0, 0, t0, t1, t2); 1259 TESTINST1("rotrv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1260 1261 printf("SEB\n"); 1262 TESTINST3("seb $t0, $t1", 0x2, t0, t1); 1263 TESTINST3("seb $t0, $t1", 0x28, t0, t1); 1264 TESTINST3("seb $t0, $t1", -258, t0, t1); 1265 TESTINST3("seb $t0, $t1", 0x7fffffff, t0, t1); 1266 TESTINST3("seb $t0, $t1", -11, t0, t1); 1267 TESTINST3("seb $t0, $t1", 0xffffffff, t0, t1); 1268 TESTINST3("seb $t0, $t1", 0x16, t0, t1); 1269 TESTINST3("seb $t0, $t1", -1, t0, t1); 1270 1271 printf("SEH\n"); 1272 TESTINST3("seh $t0, $t1", 0x2, t0, t1); 1273 TESTINST3("seh $t0, $t1", 0x28, t0, t1); 1274 TESTINST3("seh $t0, $t1", -258, t0, t1); 1275 TESTINST3("seh $t0, $t1", 0x7fffffff, t0, t1); 1276 TESTINST3("seh $t0, $t1", -11, t0, t1); 1277 TESTINST3("seh $t0, $t1", 0xffffffff, t0, t1); 1278 TESTINST3("seh $t0, $t1", 0x16, t0, t1); 1279 TESTINST3("seh $t0, $t1", -1, t0, t1); 1280 #endif 1281 1282 printf("SLL\n"); 1283 TESTINST2("sll $t0, $t1, 0x00000000", 0x31415927, 0x00000000, t0, t1); 1284 TESTINST2("sll $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1285 TESTINST2("sll $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1286 TESTINST2("sll $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1287 TESTINST2("sll $t0, $t1, 0x00000010", 0x31415927, 0x00000010, t0, t1); 1288 TESTINST2("sll $t0, $t1, 0x0000001F", 0x31415927, 0x0000001F, t0, t1); 1289 TESTINST2("sll $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1290 TESTINST2("sll $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1291 TESTINST2("sll $t0, $t1, 0x00000000", 0x00088000, 0x00000000, t0, t1); 1292 TESTINST2("sll $t0, $t1, 0x00000001", 0x00088000, 0x00000001, t0, t1); 1293 TESTINST2("sll $t0, $t1, 31", 0x00088000, 31, t0, t1); 1294 TESTINST2("sll $t0, $t1, 16", 0x00010000, 16, t0, t1); 1295 TESTINST2("sll $t0, $t1, 17", 0x00010000, 17, t0, t1); 1296 TESTINST2("sll $t0, $t1, 18", 0x00010000, 18, t0, t1); 1297 TESTINST2("sll $t0, $t1, 0", 0, 0, t0, t1); 1298 1299 printf("SLLV\n"); 1300 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1301 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1302 TESTINST1("sllv $t0, $t1, $t2", 0, 255, t0, t1, t2); 1303 TESTINST1("sllv $t0, $t1, $t2", -1, 0, t0, t1, t2); 1304 TESTINST1("sllv $t0, $t1, $t2", 0, 1, t0, t1, t2); 1305 TESTINST1("sllv $t0, $t1, $t2", 0, 0, t0, t1, t2); 1306 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1307 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1308 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1309 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1310 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1311 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1312 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1313 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1314 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1315 TESTINST1("sllv $t0, $t1, $t2", 0, 255, t0, t1, t2); 1316 TESTINST1("sllv $t0, $t1, $t2", 1, 0, t0, t1, t2); 1317 TESTINST1("sllv $t0, $t1, $t2", 0, 1, t0, t1, t2); 1318 TESTINST1("sllv $t0, $t1, $t2", -1, 0, t0, t1, t2); 1319 TESTINST1("sllv $t0, $t1, $t2", 0, -1, t0, t1, t2); 1320 TESTINST1("sllv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1321 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1322 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1323 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1324 TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1325 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1326 TESTINST1("sllv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1327 TESTINST1("sllv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1328 TESTINST1("sllv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1329 TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1330 TESTINST1("sllv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1331 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1332 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1333 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1334 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1335 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1336 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1337 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1338 TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1339 TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1340 TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1341 TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1342 TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1343 TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1344 TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1345 TESTINST1("sllv $t0, $t1, $t2", 0, 0, t0, t1, t2); 1346 TESTINST1("sllv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1347 1348 printf("SLT\n"); 1349 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1350 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1351 TESTINST1("slt $t0, $t1, $t2", 0, 255, t0, t1, t2); 1352 TESTINST1("slt $t0, $t1, $t2", -1, 0, t0, t1, t2); 1353 TESTINST1("slt $t0, $t1, $t2", 0, 1, t0, t1, t2); 1354 TESTINST1("slt $t0, $t1, $t2", 0, 0, t0, t1, t2); 1355 TESTINST1("slt $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1356 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1357 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1358 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1359 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1360 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1361 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1362 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1363 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1364 TESTINST1("slt $t0, $t1, $t2", 0, 255, t0, t1, t2); 1365 TESTINST1("slt $t0, $t1, $t2", 1, 0, t0, t1, t2); 1366 TESTINST1("slt $t0, $t1, $t2", 0, 1, t0, t1, t2); 1367 TESTINST1("slt $t0, $t1, $t2", -1, 0, t0, t1, t2); 1368 TESTINST1("slt $t0, $t1, $t2", 0, -1, t0, t1, t2); 1369 TESTINST1("slt $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1370 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1371 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1372 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1373 TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1374 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1375 TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1376 TESTINST1("slt $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1377 TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1378 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1379 TESTINST1("slt $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1380 TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1381 TESTINST1("slt $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1382 TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1383 TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1384 TESTINST1("slt $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1385 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1386 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1387 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1388 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1389 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1390 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1391 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1392 TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1393 TESTINST1("slt $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1394 TESTINST1("slt $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1395 TESTINST1("slt $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1396 TESTINST1("slt $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1397 TESTINST1("slt $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1398 TESTINST1("slt $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1399 TESTINST1("slt $t0, $t1, $t2", 0, 0, t0, t1, t2); 1400 TESTINST1("slt $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1401 1402 printf("SLTI\n"); 1403 TESTINST2("slti $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); 1404 TESTINST2("slti $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1405 TESTINST2("slti $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1406 TESTINST2("slti $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1407 TESTINST2("slti $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); 1408 TESTINST2("slti $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); 1409 TESTINST2("slti $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1410 TESTINST2("slti $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1411 TESTINST2("slti $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); 1412 TESTINST2("slti $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); 1413 TESTINST2("slti $t0, $t1, 31", 0x00088000, 31, t0, t1); 1414 TESTINST2("slti $t0, $t1, 16", 0x00010000, 16, t0, t1); 1415 TESTINST2("slti $t0, $t1, 17", 0x00010000, 17, t0, t1); 1416 TESTINST2("slti $t0, $t1, 18", 0x00010000, 18, t0, t1); 1417 TESTINST2("slti $t0, $t1, 0", 0, 0, t0, t1); 1418 1419 printf("SLTIU\n"); 1420 TESTINST2("sltiu $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); 1421 TESTINST2("sltiu $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1422 TESTINST2("sltiu $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1423 TESTINST2("sltiu $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1424 TESTINST2("sltiu $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); 1425 TESTINST2("sltiu $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); 1426 TESTINST2("sltiu $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1427 TESTINST2("sltiu $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1428 TESTINST2("sltiu $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); 1429 TESTINST2("sltiu $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); 1430 TESTINST2("sltiu $t0, $t1, 31", 0x00088000, 31, t0, t1); 1431 TESTINST2("sltiu $t0, $t1, 16", 0x00010000, 16, t0, t1); 1432 TESTINST2("sltiu $t0, $t1, 17", 0x00010000, 17, t0, t1); 1433 TESTINST2("sltiu $t0, $t1, 18", 0x00010000, 18, t0, t1); 1434 TESTINST2("sltiu $t0, $t1, 0", 0, 0, t0, t1); 1435 1436 printf("SLTU\n"); 1437 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1438 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1439 TESTINST1("sltu $t0, $t1, $t2", 0, 255, t0, t1, t2); 1440 TESTINST1("sltu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1441 TESTINST1("sltu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1442 TESTINST1("sltu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1443 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1444 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1445 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1446 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1447 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1448 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1449 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1450 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1451 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1452 TESTINST1("sltu $t0, $t1, $t2", 0, 255, t0, t1, t2); 1453 TESTINST1("sltu $t0, $t1, $t2", 1, 0, t0, t1, t2); 1454 TESTINST1("sltu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1455 TESTINST1("sltu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1456 TESTINST1("sltu $t0, $t1, $t2", 0, -1, t0, t1, t2); 1457 TESTINST1("sltu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1458 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1459 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1460 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1461 TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1462 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1463 TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1464 TESTINST1("sltu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1465 TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1466 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1467 TESTINST1("sltu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1468 TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1469 TESTINST1("sltu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1470 TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1471 TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1472 TESTINST1("sltu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1473 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1474 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1475 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1476 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1477 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1478 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1479 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1480 TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1481 TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1482 TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1483 TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1484 TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1485 TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1486 TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1487 TESTINST1("sltu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1488 TESTINST1("sltu $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1489 1490 printf("SRA\n"); 1491 TESTINST2("sra $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); 1492 TESTINST2("sra $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1493 TESTINST2("sra $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1494 TESTINST2("sra $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1495 TESTINST2("sra $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); 1496 TESTINST2("sra $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); 1497 TESTINST2("sra $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1498 TESTINST2("sra $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1499 TESTINST2("sra $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); 1500 TESTINST2("sra $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); 1501 TESTINST2("sra $t0, $t1, 31", 0x00088000, 31, t0, t1); 1502 TESTINST2("sra $t0, $t1, 16", 0x00010000, 16, t0, t1); 1503 TESTINST2("sra $t0, $t1, 17", 0x00010000, 17, t0, t1); 1504 TESTINST2("sra $t0, $t1, 18", 0x00010000, 18, t0, t1); 1505 TESTINST2("sra $t0, $t1, 0", 0, 0, t0, t1); 1506 1507 printf("SRAV\n"); 1508 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1509 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1510 TESTINST1("srav $t0, $t1, $t2", 0, 255, t0, t1, t2); 1511 TESTINST1("srav $t0, $t1, $t2", -1, 0, t0, t1, t2); 1512 TESTINST1("srav $t0, $t1, $t2", 0, 1, t0, t1, t2); 1513 TESTINST1("srav $t0, $t1, $t2", 0, 0, t0, t1, t2); 1514 TESTINST1("srav $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1515 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1516 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1517 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1518 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1519 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1520 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1521 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1522 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1523 TESTINST1("srav $t0, $t1, $t2", 0, 255, t0, t1, t2); 1524 TESTINST1("srav $t0, $t1, $t2", 1, 0, t0, t1, t2); 1525 TESTINST1("srav $t0, $t1, $t2", 0, 1, t0, t1, t2); 1526 TESTINST1("srav $t0, $t1, $t2", -1, 0, t0, t1, t2); 1527 TESTINST1("srav $t0, $t1, $t2", 0, -1, t0, t1, t2); 1528 TESTINST1("srav $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1529 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1530 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1531 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1532 TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1533 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1534 TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1535 TESTINST1("srav $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1536 TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1537 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1538 TESTINST1("srav $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1539 TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1540 TESTINST1("srav $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1541 TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1542 TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1543 TESTINST1("srav $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1544 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1545 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1546 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1547 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1548 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1549 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1550 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1551 TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1552 TESTINST1("srav $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1553 TESTINST1("srav $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1554 TESTINST1("srav $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1555 TESTINST1("srav $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1556 TESTINST1("srav $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1557 TESTINST1("srav $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1558 TESTINST1("srav $t0, $t1, $t2", 0, 0, t0, t1, t2); 1559 TESTINST1("srav $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1560 1561 printf("SRL\n"); 1562 TESTINST2("srl $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); 1563 TESTINST2("srl $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); 1564 TESTINST2("srl $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); 1565 TESTINST2("srl $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); 1566 TESTINST2("srl $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); 1567 TESTINST2("srl $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); 1568 TESTINST2("srl $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); 1569 TESTINST2("srl $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); 1570 TESTINST2("srl $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); 1571 TESTINST2("srl $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); 1572 TESTINST2("srl $t0, $t1, 31", 0x00088000, 31, t0, t1); 1573 TESTINST2("srl $t0, $t1, 16", 0x00010000, 16, t0, t1); 1574 TESTINST2("srl $t0, $t1, 17", 0x00010000, 17, t0, t1); 1575 TESTINST2("srl $t0, $t1, 18", 0x00010000, 18, t0, t1); 1576 TESTINST2("srl $t0, $t1, 0", 0, 0, t0, t1); 1577 1578 printf("SRLV\n"); 1579 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1580 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1581 TESTINST1("srlv $t0, $t1, $t2", 0, 255, t0, t1, t2); 1582 TESTINST1("srlv $t0, $t1, $t2", -1, 0, t0, t1, t2); 1583 TESTINST1("srlv $t0, $t1, $t2", 0, 1, t0, t1, t2); 1584 TESTINST1("srlv $t0, $t1, $t2", 0, 0, t0, t1, t2); 1585 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1586 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1587 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1588 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1589 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1590 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1591 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1592 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1593 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1594 TESTINST1("srlv $t0, $t1, $t2", 0, 255, t0, t1, t2); 1595 TESTINST1("srlv $t0, $t1, $t2", 1, 0, t0, t1, t2); 1596 TESTINST1("srlv $t0, $t1, $t2", 0, 1, t0, t1, t2); 1597 TESTINST1("srlv $t0, $t1, $t2", -1, 0, t0, t1, t2); 1598 TESTINST1("srlv $t0, $t1, $t2", 0, -1, t0, t1, t2); 1599 TESTINST1("srlv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1600 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1601 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1602 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1603 TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1604 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1605 TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1606 TESTINST1("srlv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1607 TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1608 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1609 TESTINST1("srlv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1610 TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1611 TESTINST1("srlv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1612 TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1613 TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1614 TESTINST1("srlv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1615 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1616 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1617 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1618 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1619 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1620 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1621 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1622 TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1623 TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1624 TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1625 TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1626 TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1627 TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1628 TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1629 TESTINST1("srlv $t0, $t1, $t2", 0, 0, t0, t1, t2); 1630 TESTINST1("srlv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1631 1632 printf("SUBU\n"); 1633 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1634 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00001110, t0, t1, t2); 1635 TESTINST1("subu $t0, $t1, $t2", 0, 255, t0, t1, t2); 1636 TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1637 TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1638 TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1639 TESTINST1("subu $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1640 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1641 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1642 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1643 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1644 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1645 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1646 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1647 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1648 TESTINST1("subu $t0, $t1, $t2", 0, 255, t0, t1, t2); 1649 TESTINST1("subu $t0, $t1, $t2", 1, 0, t0, t1, t2); 1650 TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1651 TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1652 TESTINST1("subu $t0, $t1, $t2", 0, -1, t0, t1, t2); 1653 TESTINST1("subu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1654 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1655 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1656 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1657 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1658 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1659 TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1660 TESTINST1("subu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1661 TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1662 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1663 TESTINST1("subu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1664 TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1665 TESTINST1("subu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1666 TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1667 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1668 TESTINST1("subu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1669 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); 1670 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); 1671 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); 1672 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); 1673 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); 1674 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); 1675 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); 1676 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); 1677 TESTINST1("subu $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); 1678 TESTINST1("subu $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); 1679 TESTINST1("subu $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); 1680 TESTINST1("subu $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); 1681 TESTINST1("subu $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); 1682 TESTINST1("subu $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); 1683 TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1684 TESTINST1("subu $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); 1685 1686 printf("SUB\n"); 1687 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1688 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x27181728, t0, t1, t2); 1689 TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x97181728, t0, t1, t2); 1690 TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); 1691 TESTINST1("subu $t0, $t1, $t2", 1, 0, t0, t1, t2); 1692 TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); 1693 TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); 1694 TESTINST1("subu $t0, $t1, $t2", 0, -1, t0, t1, t2); 1695 TESTINST1("subu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1696 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1697 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1698 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1699 TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x7fffffff, t0, t1, t2); 1700 TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1701 1702 printf("XOR\n"); 1703 TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1704 TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1705 TESTINST1("xor $t0, $t1, $t2", 0, 255, t0, t1, t2); 1706 TESTINST1("xor $t0, $t1, $t2", -1, 0, t0, t1, t2); 1707 TESTINST1("xor $t0, $t1, $t2", 0, 1, t0, t1, t2); 1708 TESTINST1("xor $t0, $t1, $t2", 0, 0, t0, t1, t2); 1709 TESTINST1("xor $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); 1710 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1711 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); 1712 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1713 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1714 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1715 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1716 TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); 1717 TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); 1718 TESTINST1("xor $t0, $t1, $t2", 0, 255, t0, t1, t2); 1719 TESTINST1("xor $t0, $t1, $t2", 1, 0, t0, t1, t2); 1720 TESTINST1("xor $t0, $t1, $t2", 0, 1, t0, t1, t2); 1721 TESTINST1("xor $t0, $t1, $t2", -1, 0, t0, t1, t2); 1722 TESTINST1("xor $t0, $t1, $t2", 0, -1, t0, t1, t2); 1723 TESTINST1("xor $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); 1724 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); 1725 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); 1726 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); 1727 TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); 1728 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); 1729 TESTINST1("xor $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); 1730 TESTINST1("xor $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); 1731 TESTINST1("xor $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); 1732 TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); 1733 TESTINST1("xor $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); 1734 1735 printf("XORI\n"); 1736 TESTINST2("xori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); 1737 TESTINST2("xori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); 1738 TESTINST2("xori $t0, $t1, 255", 0, 255, t0, t1); 1739 TESTINST2("xori $t0, $t1, 0", -1, 0, t0, t1); 1740 TESTINST2("xori $t0, $t1, 1", 0, 1, t0, t1); 1741 TESTINST2("xori $t0, $t1, 0", 0, 0, t0, t1); 1742 TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1743 TESTINST2("xori $t0, $t1, 0", 0x7fffffff, 0, t0, t1); 1744 TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1745 TESTINST2("xori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); 1746 TESTINST2("xori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); 1747 TESTINST2("xori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); 1748 TESTINST2("xori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); 1749 TESTINST2("xori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); 1750 TESTINST2("xori $t0, $t1, 255", 0, 255, t0, t1); 1751 TESTINST2("xori $t0, $t1, 0", 1, 0, t0, t1); 1752 TESTINST2("xori $t0, $t1, 1", 0, 1, t0, t1); 1753 TESTINST2("xori $t0, $t1, 0", -1, 0, t0, t1); 1754 TESTINST2("xori $t0, $t1, 0x8000", 0, 0x8000, t0, t1); 1755 TESTINST2("xori $t0, $t1, 0", 0x8000, 0, t0, t1); 1756 TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); 1757 TESTINST2("xori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); 1758 TESTINST2("xori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); 1759 TESTINST2("xori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); 1760 TESTINST2("xori $t0, $t1, 0", 0xffff, 0, t0, t1); 1761 TESTINST2("xori $t0, $t1, 0xffff", 0, 0xffff, t0, t1); 1762 TESTINST2("xori $t0, $t1, 0xffff", 0xffffffff, 0xffff, t0, t1); 1763 TESTINST2("xori $t0, $t1, 0x7fff", 0x7fffffff, 0x7fff, t0, t1); 1764 TESTINST2("xori $t0, $t1, 0x0000", 0x0000ffff, 0x0000, t0, t1); 1765 1766 printf("MFHI MFLO\n"); 1767 TESTINSN_HILO(0x31415927); 1768 TESTINSN_HILO(0); 1769 TESTINSN_HILO(-1); 1770 TESTINSN_HILO(0xffffffff); 1771 TESTINSN_HILO(0x8000); 1772 TESTINSN_HILO(0x80000000); 1773 TESTINSN_HILO(0x0000ffff); 1774 TESTINSN_HILO(0x7fff); 1775 TESTINSN_HILO(0x0dd0); 1776 TESTINSN_HILO(0xff00); 1777 1778 return 0; 1779 } 1780