#include <stdio.h> #define TESTINST1(instruction, RSval, RTval, RD, RS, RT) \ { \ unsigned int out; \ __asm__ volatile( \ "li $" #RD ", 0\n\t" \ "move $" #RS ", %1\n\t" \ "move $" #RT ", %2\n\t" \ instruction "\n\t" \ "move %0, $" #RD "\n\t" \ : "=&r" (out) \ : "r" (RSval), "r" (RTval) \ : #RD, #RS, #RT, "cc", "memory" \ ); \ printf("%s :: rd 0x%08x rs 0x%08x, rt 0x%08x\n", \ instruction, out, RSval, RTval); \ } #define TESTINST2(instruction, RSval, imm, RT, RS) \ { \ unsigned int out; \ __asm__ volatile( \ "move $" #RS ", %1\n\t" \ instruction "\n\t" \ "move %0, $" #RT "\n\t" \ : "=&r" (out) \ : "r" (RSval) \ : #RT, #RS, "cc", "memory" \ ); \ printf("%s :: rt 0x%08x rs 0x%08x, imm 0x%08x\n", \ instruction, out, RSval, imm); \ } #define TESTINST3(instruction, RSval, RD, RS) \ { \ unsigned int out; \ __asm__ volatile( \ "move $" #RS ", %1\n\t" \ instruction "\n\t" \ "move %0, $" #RD "\n\t" \ : "=&r" (out) \ : "r" (RSval) \ : #RD, #RS, "cc", "memory" \ ); \ printf("%s :: rd 0x%08x rs 0x%08x\n", \ instruction, out, RSval); \ } #define TESTINST3a(instruction, RSval, RTval, RS, RT) \ { \ unsigned int HI; \ unsigned int LO; \ __asm__ volatile( \ "li $" #RS ", 0x0\n\t" \ "mthi $" #RS"\n\t" \ "mtlo $" #RS"\n\t" \ "move $" #RS ", %2\n\t" \ "move $" #RT ", %3\n\t" \ instruction "\n\t" \ "mfhi %0 \n\t" \ "mflo %1 \n\t" \ : "=&r" (HI), "=&r" (LO) \ : "r" (RSval), "r"(RTval) \ : #RS, #RT, "cc", "memory" \ ); \ printf("%s :: rs 0x%08x rt 0x%08x HI 0x%08x LO 0x%08x \n", \ instruction, RSval, RTval, HI, LO); \ } #define TESTINST4(instruction, RTval, RSval, RT, RS, pos, size) \ { \ unsigned int out; \ __asm__ volatile( \ "move $" #RT ", %1\n\t" \ "move $" #RS ", %2\n\t" \ instruction "\n\t" \ "move %0, $" #RT "\n\t" \ : "=&r" (out) \ : "r" (RTval), "r" (RSval) \ : #RT, #RS, "cc", "memory" \ ); \ printf("%s :: rt 0x%08x rs 0x%08x, pos 0x%08x, size 0x%08x\n", \ instruction, out, RSval, pos, size); \ } const unsigned int mem[] = { 0x121f1e1f, 0, 3, -1, 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c }; // load $t0, 0($t1) #define TESTINSN5LOAD(instruction, RTval, offset, RT) \ { \ unsigned int out; \ __asm__ volatile( \ "move $t1, %1\n\t" \ "li $t0, " #RTval"\n\t" \ instruction "\n\t" \ "move %0, $" #RT "\n\t" \ : "=&r" (out) \ : "r" (mem), "r" (RTval) \ : #RT, "cc", "memory" \ ); \ printf("%s :: rt 0x%08x\n", \ instruction, out); \ } #define TESTINSN_HILO(RSval) \ { \ unsigned int HI; \ unsigned int LO; \ __asm__ volatile( \ "move $t0, %2\n\t" \ "mthi $t0\n\t" \ "addiu $t0, $t0, 0xffff\n\t" \ "mtlo $t0\n\t" \ "mfhi %0\n\t" \ "mflo %1\n\t" \ : "=&r" (HI), "=&r" (LO) \ : "r" (RSval)\ : "cc", "memory" \ ); \ printf("mfhi mflo :: HI: 0x%x, LO: 0x%x\n", \ HI, LO); \ } int main(int argc, char **argv) { printf("ADD\n"); TESTINST1("add $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 1, 1, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 1, -1, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 0x31415927, 0x27181728, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 0x31415927, 0x97181728, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("add $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); printf("ADDI\n"); TESTINST2("addi $t0, $t1, 0", 0, 0, t0, t1); TESTINST2("addi $t0, $t1, 1", 0, 1, t0, t1); TESTINST2("addi $t0, $t1, 1", 1, 0, t0, t1); TESTINST2("addi $t0, $t1, 1", 1, 1, t0, t1); TESTINST2("addi $t0, $t1, -1", 0, -1, t0, t1); TESTINST2("addi $t0, $t1, -1", 1, -1, t0, t1); TESTINST2("addi $t0, $t1, 0", 0x80000000, 0, t0, t1); TESTINST2("addi $t0, $t1, 0", -1, 0, t0, t1); TESTINST2("addi $t0, $t1, 0", 0x80000000, 0, t0, t1); printf("ADDIU\n"); TESTINST2("addiu $t0, $t1, 0", 0, 0, t0, t1); TESTINST2("addiu $t0, $t1, 1", 0, 1, t0, t1); TESTINST2("addiu $t0, $t1, 1", 1, 0, t0, t1); TESTINST2("addiu $t0, $t1, 1", 1, 1, t0, t1); TESTINST2("addiu $t0, $t1, -1", 0, -1, t0, t1); TESTINST2("addiu $t0, $t1, -1", 1, -1, t0, t1); TESTINST2("addiu $t0, $t1, 0", 0x80000000, 0, t0, t1); TESTINST2("addiu $t0, $t1, 0", -1, 0, t0, t1); TESTINST2("addiu $t0, $t1, 0", 0x80000000, 0, t0, t1); printf("ADDU\n"); TESTINST1("addu $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 1, 1, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 1, -1, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0x31415927, 0x27181728, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0x31415927, 0x97181728, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0x80000000, 0x7fffffff, t0, t1, t2); TESTINST1("addu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); printf("AND\n"); TESTINST1("and $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("and $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); printf("ANDI\n"); TESTINST2("andi $t0, $t1, 1", 0, 1, t0, t1); TESTINST2("andi $t0, $t1, 0", 1, 0, t0, t1); TESTINST2("andi $t0, $t1, 1", 1, 1, t0, t1); TESTINST2("andi $t0, $t1, 1", 0x7fffffff, 0, t0, t1); TESTINST2("andi $t0, $t1, 0", 0x80000000, 0, t0, t1); TESTINST2("andi $t0, $t1, 0x3145", 0xffffffff, 0x3145, t0, t1); printf("CLO\n"); TESTINST3("clo $t0, $t1", 0, t0, t1); TESTINST3("clo $t0, $t1", 1, t0, t1); TESTINST3("clo $t0, $t1", 0x10, t0, t1); TESTINST3("clo $t0, $t1", 0xffffffff, t0, t1); printf("CLZ\n"); TESTINST3("clz $t0, $t1", 0, t0, t1); TESTINST3("clz $t0, $t1", 1, t0, t1); TESTINST3("clz $t0, $t1", 0x10, t0, t1); TESTINST3("clz $t0, $t1", 0xffffffff, t0, t1); printf("DIV\n"); TESTINST3a("div $t0, $t1", 0x6, 0x2, t0, t1); TESTINST3a("div $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); TESTINST3a("div $t0, $t1", 0xffffffff, 0x1, t0, t1); TESTINST3a("div $t0, $t1", 0x1, 0xffffffff, t0, t1); TESTINST3a("div $t0, $t1", 0x2, 0x6, t0, t1); printf("DIVU\n"); TESTINST3a("divu $t0, $t1", 0x6, 0x2, t0, t1); TESTINST3a("divu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); TESTINST3a("divu $t0, $t1", 0xffffffff, 0x1, t0, t1); TESTINST3a("divu $t0, $t1", 0x1, 0xffffffff, t0, t1); TESTINST3a("divu $t0, $t1", 0x2, 0x6, t0, t1); TESTINST3a("divu $t0, $t1", 0x0, 0x2, t0, t1); #if (__mips==32) && (__mips_isa_rev>=2) printf("EXT\n"); TESTINST4("ext $t0, $t1, 0, 1", 0x0, 0x0, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0x0, 0xffffffff, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0x0, 0x98765432, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0x0, 0xff865421, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0xffffffff, 0x0, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0xffffffff, 0xffffffff, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0xffffffff, 0x98765432, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0xffffffff, 0xff865421, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0x98765432, 0x0, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0x98765432, 0xffffffff, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0x98765432, 0x98765432, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0x98765432, 0xff865421, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0xff865421, 0x0, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0xff865421, 0xffffffff, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0xff865421, 0x98765432, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 1", 0xff865421, 0xff865421, t0, t1, 0, 1); TESTINST4("ext $t0, $t1, 0, 4", 0x0, 0x0, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0x0, 0xffffffff, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0x0, 0x98765432, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0x0, 0xff865421, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0xffffffff, 0x0, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0xffffffff, 0xffffffff, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0xffffffff, 0x98765432, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0xffffffff, 0xff865421, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0x98765432, 0x0, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0x98765432, 0xffffffff, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0x98765432, 0x98765432, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0x98765432, 0xff865421, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0xff865421, 0x0, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0xff865421, 0xffffffff, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0xff865421, 0x98765432, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 4", 0xff865421, 0xff865421, t0, t1, 0, 4); TESTINST4("ext $t0, $t1, 0, 16", 0x0, 0x0, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0x0, 0xffffffff, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0x0, 0x98765432, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0x0, 0xff865421, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0xffffffff, 0x0, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0xffffffff, 0xffffffff, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0xffffffff, 0x98765432, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0xffffffff, 0xff865421, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0x98765432, 0x0, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0x98765432, 0xffffffff, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0x98765432, 0x98765432, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0x98765432, 0xff865421, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0xff865421, 0x0, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0xff865421, 0xffffffff, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0xff865421, 0x98765432, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 16", 0xff865421, 0xff865421, t0, t1, 0, 16); TESTINST4("ext $t0, $t1, 0, 32", 0x0, 0x0, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0x0, 0xffffffff, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0x0, 0x98765432, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0x0, 0xff865421, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0xffffffff, 0x0, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0xffffffff, 0xffffffff, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0xffffffff, 0x98765432, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0xffffffff, 0xff865421, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0x98765432, 0x0, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0x98765432, 0xffffffff, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0x98765432, 0x98765432, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0x98765432, 0xff865421, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0xff865421, 0x0, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0xff865421, 0xffffffff, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0xff865421, 0x98765432, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 0, 32", 0xff865421, 0xff865421, t0, t1, 0, 32); TESTINST4("ext $t0, $t1, 4, 1", 0x0, 0x0, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0x0, 0xffffffff, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0x0, 0x98765432, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0x0, 0xff865421, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0xffffffff, 0x0, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0xffffffff, 0xffffffff, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0xffffffff, 0x98765432, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0xffffffff, 0xff865421, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0x98765432, 0x0, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0x98765432, 0xffffffff, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0x98765432, 0x98765432, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0x98765432, 0xff865421, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0xff865421, 0x0, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0xff865421, 0xffffffff, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0xff865421, 0x98765432, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 1", 0xff865421, 0xff865421, t0, t1, 4, 1); TESTINST4("ext $t0, $t1, 4, 4", 0x0, 0x0, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0x0, 0xffffffff, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0x0, 0x98765432, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0x0, 0xff865421, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0xffffffff, 0x0, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0xffffffff, 0xffffffff, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0xffffffff, 0x98765432, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0xffffffff, 0xff865421, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0x98765432, 0x0, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0x98765432, 0xffffffff, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0x98765432, 0x98765432, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0x98765432, 0xff865421, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0xff865421, 0x0, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0xff865421, 0xffffffff, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0xff865421, 0x98765432, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 4", 0xff865421, 0xff865421, t0, t1, 4, 4); TESTINST4("ext $t0, $t1, 4, 16", 0x0, 0x0, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0x0, 0xffffffff, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0x0, 0x98765432, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0x0, 0xff865421, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0xffffffff, 0x0, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0xffffffff, 0xffffffff, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0xffffffff, 0x98765432, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0xffffffff, 0xff865421, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0x98765432, 0x0, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0x98765432, 0xffffffff, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0x98765432, 0x98765432, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0x98765432, 0xff865421, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0xff865421, 0x0, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0xff865421, 0xffffffff, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0xff865421, 0x98765432, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 16", 0xff865421, 0xff865421, t0, t1, 4, 16); TESTINST4("ext $t0, $t1, 4, 28", 0x0, 0x0, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0x0, 0xffffffff, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0x0, 0x98765432, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0x0, 0xff865421, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0xffffffff, 0x0, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0xffffffff, 0xffffffff, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0xffffffff, 0x98765432, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0xffffffff, 0xff865421, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0x98765432, 0x0, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0x98765432, 0xffffffff, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0x98765432, 0x98765432, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0x98765432, 0xff865421, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0xff865421, 0x0, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0xff865421, 0xffffffff, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0xff865421, 0x98765432, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 4, 28", 0xff865421, 0xff865421, t0, t1, 4, 28); TESTINST4("ext $t0, $t1, 16, 1", 0x0, 0x0, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0x0, 0xffffffff, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0x0, 0x98765432, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0x0, 0xff865421, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0xffffffff, 0x0, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0xffffffff, 0xffffffff, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0xffffffff, 0x98765432, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0xffffffff, 0xff865421, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0x98765432, 0x0, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0x98765432, 0xffffffff, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0x98765432, 0x98765432, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0x98765432, 0xff865421, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0xff865421, 0x0, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0xff865421, 0xffffffff, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0xff865421, 0x98765432, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 1", 0xff865421, 0xff865421, t0, t1, 1, 16); TESTINST4("ext $t0, $t1, 16, 4", 0x0, 0x0, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0x0, 0xffffffff, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0x0, 0x98765432, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0x0, 0xff865421, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0xffffffff, 0x0, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0xffffffff, 0xffffffff, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0xffffffff, 0x98765432, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0xffffffff, 0xff865421, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0x98765432, 0x0, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0x98765432, 0xffffffff, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0x98765432, 0x98765432, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0x98765432, 0xff865421, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0xff865421, 0x0, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0xff865421, 0xffffffff, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0xff865421, 0x98765432, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 4", 0xff865421, 0xff865421, t0, t1, 16, 4); TESTINST4("ext $t0, $t1, 16, 16", 0x0, 0x0, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0x0, 0xffffffff, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0x0, 0x98765432, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0x0, 0xff865421, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0xffffffff, 0x0, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0xffffffff, 0xffffffff, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0xffffffff, 0x98765432, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0xffffffff, 0xff865421, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0x98765432, 0x0, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0x98765432, 0xffffffff, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0x98765432, 0x98765432, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0x98765432, 0xff865421, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0xff865421, 0x0, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0xff865421, 0xffffffff, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0xff865421, 0x98765432, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 16, 16", 0xff865421, 0xff865421, t0, t1, 16, 16); TESTINST4("ext $t0, $t1, 31, 1", 0x0, 0x0, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0x0, 0xffffffff, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0x0, 0x98765432, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0x0, 0xff865421, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0xffffffff, 0x0, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0xffffffff, 0xffffffff, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0xffffffff, 0x98765432, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0xffffffff, 0xff865421, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0x98765432, 0x0, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0x98765432, 0xffffffff, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0x98765432, 0x98765432, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0x98765432, 0xff865421, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0xff865421, 0x0, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0xff865421, 0xffffffff, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0xff865421, 0x98765432, t0, t1, 31, 1); TESTINST4("ext $t0, $t1, 31, 1", 0xff865421, 0xff865421, t0, t1, 31, 1); printf("INS\n"); TESTINST4("ins $t0, $t1, 0, 1", 0x0, 0x0, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0x0, 0xffffffff, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0x0, 0x98765432, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0x0, 0xff865421, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0xffffffff, 0x0, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0xffffffff, 0xffffffff, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0xffffffff, 0x98765432, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0xffffffff, 0xff865421, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0x98765432, 0x0, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0x98765432, 0xffffffff, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0x98765432, 0x98765432, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0x98765432, 0xff865421, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0xff865421, 0x0, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0xff865421, 0xffffffff, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0xff865421, 0x98765432, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 1", 0xff865421, 0xff865421, t0, t1, 0, 1); TESTINST4("ins $t0, $t1, 0, 4", 0x0, 0x0, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0x0, 0xffffffff, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0x0, 0x98765432, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0x0, 0xff865421, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0xffffffff, 0x0, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0xffffffff, 0xffffffff, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0xffffffff, 0x98765432, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0xffffffff, 0xff865421, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0x98765432, 0x0, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0x98765432, 0xffffffff, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0x98765432, 0x98765432, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0x98765432, 0xff865421, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0xff865421, 0x0, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0xff865421, 0xffffffff, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0xff865421, 0x98765432, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 4", 0xff865421, 0xff865421, t0, t1, 0, 4); TESTINST4("ins $t0, $t1, 0, 16", 0x0, 0x0, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0x0, 0xffffffff, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0x0, 0x98765432, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0x0, 0xff865421, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0xffffffff, 0x0, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0xffffffff, 0xffffffff, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0xffffffff, 0x98765432, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0xffffffff, 0xff865421, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0x98765432, 0x0, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0x98765432, 0xffffffff, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0x98765432, 0x98765432, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0x98765432, 0xff865421, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0xff865421, 0x0, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0xff865421, 0xffffffff, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0xff865421, 0x98765432, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 16", 0xff865421, 0xff865421, t0, t1, 0, 16); TESTINST4("ins $t0, $t1, 0, 32", 0x0, 0x0, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0x0, 0xffffffff, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0x0, 0x98765432, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0x0, 0xff865421, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0xffffffff, 0x0, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0xffffffff, 0xffffffff, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0xffffffff, 0x98765432, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0xffffffff, 0xff865421, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0x98765432, 0x0, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0x98765432, 0xffffffff, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0x98765432, 0x98765432, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0x98765432, 0xff865421, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0xff865421, 0x0, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0xff865421, 0xffffffff, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0xff865421, 0x98765432, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 0, 32", 0xff865421, 0xff865421, t0, t1, 0, 32); TESTINST4("ins $t0, $t1, 4, 1", 0x0, 0x0, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0x0, 0xffffffff, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0x0, 0x98765432, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0x0, 0xff865421, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0xffffffff, 0x0, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0xffffffff, 0xffffffff, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0xffffffff, 0x98765432, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0xffffffff, 0xff865421, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0x98765432, 0x0, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0x98765432, 0xffffffff, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0x98765432, 0x98765432, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0x98765432, 0xff865421, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0xff865421, 0x0, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0xff865421, 0xffffffff, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0xff865421, 0x98765432, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 1", 0xff865421, 0xff865421, t0, t1, 4, 1); TESTINST4("ins $t0, $t1, 4, 4", 0x0, 0x0, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0x0, 0xffffffff, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0x0, 0x98765432, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0x0, 0xff865421, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0xffffffff, 0x0, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0xffffffff, 0xffffffff, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0xffffffff, 0x98765432, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0xffffffff, 0xff865421, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0x98765432, 0x0, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0x98765432, 0xffffffff, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0x98765432, 0x98765432, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0x98765432, 0xff865421, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0xff865421, 0x0, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0xff865421, 0xffffffff, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0xff865421, 0x98765432, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 4", 0xff865421, 0xff865421, t0, t1, 4, 4); TESTINST4("ins $t0, $t1, 4, 16", 0x0, 0x0, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0x0, 0xffffffff, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0x0, 0x98765432, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0x0, 0xff865421, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0xffffffff, 0x0, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0xffffffff, 0xffffffff, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0xffffffff, 0x98765432, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0xffffffff, 0xff865421, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0x98765432, 0x0, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0x98765432, 0xffffffff, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0x98765432, 0x98765432, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0x98765432, 0xff865421, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0xff865421, 0x0, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0xff865421, 0xffffffff, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0xff865421, 0x98765432, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 16", 0xff865421, 0xff865421, t0, t1, 4, 16); TESTINST4("ins $t0, $t1, 4, 28", 0x0, 0x0, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0x0, 0xffffffff, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0x0, 0x98765432, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0x0, 0xff865421, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0xffffffff, 0x0, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0xffffffff, 0xffffffff, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0xffffffff, 0x98765432, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0xffffffff, 0xff865421, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0x98765432, 0x0, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0x98765432, 0xffffffff, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0x98765432, 0x98765432, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0x98765432, 0xff865421, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0xff865421, 0x0, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0xff865421, 0xffffffff, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0xff865421, 0x98765432, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 4, 28", 0xff865421, 0xff865421, t0, t1, 4, 28); TESTINST4("ins $t0, $t1, 16, 1", 0x0, 0x0, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0x0, 0xffffffff, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0x0, 0x98765432, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0x0, 0xff865421, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0xffffffff, 0x0, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0xffffffff, 0xffffffff, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0xffffffff, 0x98765432, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0xffffffff, 0xff865421, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0x98765432, 0x0, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0x98765432, 0xffffffff, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0x98765432, 0x98765432, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0x98765432, 0xff865421, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0xff865421, 0x0, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0xff865421, 0xffffffff, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0xff865421, 0x98765432, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 1", 0xff865421, 0xff865421, t0, t1, 1, 16); TESTINST4("ins $t0, $t1, 16, 4", 0x0, 0x0, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0x0, 0xffffffff, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0x0, 0x98765432, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0x0, 0xff865421, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0xffffffff, 0x0, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0xffffffff, 0xffffffff, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0xffffffff, 0x98765432, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0xffffffff, 0xff865421, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0x98765432, 0x0, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0x98765432, 0xffffffff, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0x98765432, 0x98765432, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0x98765432, 0xff865421, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0xff865421, 0x0, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0xff865421, 0xffffffff, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0xff865421, 0x98765432, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 4", 0xff865421, 0xff865421, t0, t1, 16, 4); TESTINST4("ins $t0, $t1, 16, 16", 0x0, 0x0, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0x0, 0xffffffff, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0x0, 0x98765432, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0x0, 0xff865421, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0xffffffff, 0x0, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0xffffffff, 0xffffffff, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0xffffffff, 0x98765432, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0xffffffff, 0xff865421, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0x98765432, 0x0, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0x98765432, 0xffffffff, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0x98765432, 0x98765432, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0x98765432, 0xff865421, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0xff865421, 0x0, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0xff865421, 0xffffffff, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0xff865421, 0x98765432, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 16, 16", 0xff865421, 0xff865421, t0, t1, 16, 16); TESTINST4("ins $t0, $t1, 31, 1", 0x0, 0x0, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0x0, 0xffffffff, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0x0, 0x98765432, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0x0, 0xff865421, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0xffffffff, 0x0, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0xffffffff, 0xffffffff, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0xffffffff, 0x98765432, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0xffffffff, 0xff865421, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0x98765432, 0x0, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0x98765432, 0xffffffff, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0x98765432, 0x98765432, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0x98765432, 0xff865421, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0xff865421, 0x0, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0xff865421, 0xffffffff, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0xff865421, 0x98765432, t0, t1, 31, 1); TESTINST4("ins $t0, $t1, 31, 1", 0xff865421, 0xff865421, t0, t1, 31, 1); #endif printf("LB\n"); TESTINSN5LOAD("lb $t0, 0($t1)", 0, 0, t0); TESTINSN5LOAD("lb $t0, 4($t1)", 0, 4, t0); TESTINSN5LOAD("lb $t0, 8($t1)", 0, 8, t0); TESTINSN5LOAD("lb $t0, 12($t1)", 0, 12, t0); TESTINSN5LOAD("lb $t0, 16($t1)", 0, 16, t0); TESTINSN5LOAD("lb $t0, 20($t1)", 0, 20, t0); TESTINSN5LOAD("lb $t0, 24($t1)", 0, 24, t0); TESTINSN5LOAD("lb $t0, 28($t1)", 0, 28, t0); TESTINSN5LOAD("lb $t0, 32($t1)", 0, 32, t0); TESTINSN5LOAD("lb $t0, 36($t1)", 0, 36, t0); TESTINSN5LOAD("lb $t0, 40($t1)", 0, 40, t0); TESTINSN5LOAD("lb $t0, 44($t1)", 0, 44, t0); TESTINSN5LOAD("lb $t0, 48($t1)", 0, 48, t0); TESTINSN5LOAD("lb $t0, 52($t1)", 0, 52, t0); TESTINSN5LOAD("lb $t0, 56($t1)", 0, 56, t0); TESTINSN5LOAD("lb $t0, 60($t1)", 0, 60, t0); TESTINSN5LOAD("lb $t0, 64($t1)", 0, 64, t0); TESTINSN5LOAD("lb $t0, 2($t1)", 0, 2, t0); TESTINSN5LOAD("lb $t0, 6($t1)", 0, 6, t0); TESTINSN5LOAD("lb $t0, 10($t1)", 0, 10, t0); TESTINSN5LOAD("lb $t0, 14($t1)", 0, 14, t0); TESTINSN5LOAD("lb $t0, 18($t1)", 0, 18, t0); TESTINSN5LOAD("lb $t0, 22($t1)", 0, 22, t0); TESTINSN5LOAD("lb $t0, 26($t1)", 0, 26, t0); TESTINSN5LOAD("lb $t0, 30($t1)", 0, 30, t0); TESTINSN5LOAD("lb $t0, 34($t1)", 0, 34, t0); TESTINSN5LOAD("lb $t0, 38($t1)", 0, 38, t0); printf("LBU\n"); TESTINSN5LOAD("lbu $t0, 0($t1)", 0, 0, t0); TESTINSN5LOAD("lbu $t0, 4($t1)", 0, 4, t0); TESTINSN5LOAD("lbu $t0, 8($t1)", 0, 8, t0); TESTINSN5LOAD("lbu $t0, 12($t1)", 0, 12, t0); TESTINSN5LOAD("lbu $t0, 16($t1)", 0, 16, t0); TESTINSN5LOAD("lbu $t0, 20($t1)", 0, 20, t0); TESTINSN5LOAD("lbu $t0, 24($t1)", 0, 24, t0); TESTINSN5LOAD("lbu $t0, 28($t1)", 0, 28, t0); TESTINSN5LOAD("lbu $t0, 32($t1)", 0, 32, t0); TESTINSN5LOAD("lbu $t0, 36($t1)", 0, 36, t0); TESTINSN5LOAD("lbu $t0, 40($t1)", 0, 40, t0); TESTINSN5LOAD("lbu $t0, 44($t1)", 0, 44, t0); TESTINSN5LOAD("lbu $t0, 48($t1)", 0, 48, t0); TESTINSN5LOAD("lbu $t0, 52($t1)", 0, 52, t0); TESTINSN5LOAD("lbu $t0, 56($t1)", 0, 56, t0); TESTINSN5LOAD("lbu $t0, 60($t1)", 0, 60, t0); TESTINSN5LOAD("lbu $t0, 64($t1)", 0, 64, t0); TESTINSN5LOAD("lbu $t0, 2($t1)", 0, 2, t0); TESTINSN5LOAD("lbu $t0, 6($t1)", 0, 6, t0); TESTINSN5LOAD("lbu $t0, 10($t1)", 0, 10, t0); TESTINSN5LOAD("lbu $t0, 14($t1)", 0, 14, t0); TESTINSN5LOAD("lbu $t0, 18($t1)", 0, 18, t0); TESTINSN5LOAD("lbu $t0, 22($t1)", 0, 22, t0); TESTINSN5LOAD("lbu $t0, 26($t1)", 0, 26, t0); TESTINSN5LOAD("lbu $t0, 30($t1)", 0, 30, t0); TESTINSN5LOAD("lbu $t0, 34($t1)", 0, 34, t0); TESTINSN5LOAD("lbu $t0, 38($t1)", 0, 38, t0); printf("LH\n"); TESTINSN5LOAD("lh $t0, 0($t1)", 0, 0, t0); TESTINSN5LOAD("lh $t0, 4($t1)", 0, 4, t0); TESTINSN5LOAD("lh $t0, 8($t1)", 0, 8, t0); TESTINSN5LOAD("lh $t0, 12($t1)", 0, 12, t0); TESTINSN5LOAD("lh $t0, 16($t1)", 0, 16, t0); TESTINSN5LOAD("lh $t0, 20($t1)", 0, 20, t0); TESTINSN5LOAD("lh $t0, 24($t1)", 0, 24, t0); TESTINSN5LOAD("lh $t0, 28($t1)", 0, 28, t0); TESTINSN5LOAD("lh $t0, 32($t1)", 0, 32, t0); TESTINSN5LOAD("lh $t0, 36($t1)", 0, 36, t0); TESTINSN5LOAD("lh $t0, 40($t1)", 0, 40, t0); TESTINSN5LOAD("lh $t0, 44($t1)", 0, 44, t0); TESTINSN5LOAD("lh $t0, 48($t1)", 0, 48, t0); TESTINSN5LOAD("lh $t0, 52($t1)", 0, 52, t0); TESTINSN5LOAD("lh $t0, 56($t1)", 0, 56, t0); TESTINSN5LOAD("lh $t0, 60($t1)", 0, 60, t0); TESTINSN5LOAD("lh $t0, 64($t1)", 0, 64, t0); TESTINSN5LOAD("lh $t0, 2($t1)", 0, 2, t0); TESTINSN5LOAD("lh $t0, 6($t1)", 0, 6, t0); TESTINSN5LOAD("lh $t0, 10($t1)", 0, 10, t0); TESTINSN5LOAD("lh $t0, 14($t1)", 0, 14, t0); TESTINSN5LOAD("lh $t0, 18($t1)", 0, 18, t0); TESTINSN5LOAD("lh $t0, 22($t1)", 0, 22, t0); TESTINSN5LOAD("lh $t0, 26($t1)", 0, 26, t0); TESTINSN5LOAD("lh $t0, 30($t1)", 0, 30, t0); TESTINSN5LOAD("lh $t0, 34($t1)", 0, 34, t0); TESTINSN5LOAD("lh $t0, 38($t1)", 0, 38, t0); printf("LHU\n"); TESTINSN5LOAD("lhu $t0, 0($t1)", 0, 0, t0); TESTINSN5LOAD("lhu $t0, 4($t1)", 0, 4, t0); TESTINSN5LOAD("lhu $t0, 8($t1)", 0, 8, t0); TESTINSN5LOAD("lhu $t0, 12($t1)", 0, 12, t0); TESTINSN5LOAD("lhu $t0, 16($t1)", 0, 16, t0); TESTINSN5LOAD("lhu $t0, 20($t1)", 0, 20, t0); TESTINSN5LOAD("lhu $t0, 24($t1)", 0, 24, t0); TESTINSN5LOAD("lhu $t0, 28($t1)", 0, 28, t0); TESTINSN5LOAD("lhu $t0, 32($t1)", 0, 32, t0); TESTINSN5LOAD("lhu $t0, 36($t1)", 0, 36, t0); TESTINSN5LOAD("lhu $t0, 40($t1)", 0, 40, t0); TESTINSN5LOAD("lhu $t0, 44($t1)", 0, 44, t0); TESTINSN5LOAD("lhu $t0, 48($t1)", 0, 48, t0); TESTINSN5LOAD("lhu $t0, 52($t1)", 0, 52, t0); TESTINSN5LOAD("lhu $t0, 56($t1)", 0, 56, t0); TESTINSN5LOAD("lhu $t0, 60($t1)", 0, 60, t0); TESTINSN5LOAD("lhu $t0, 64($t1)", 0, 64, t0); TESTINSN5LOAD("lhu $t0, 2($t1)", 0, 2, t0); TESTINSN5LOAD("lhu $t0, 6($t1)", 0, 6, t0); TESTINSN5LOAD("lhu $t0, 10($t1)", 0, 10, t0); TESTINSN5LOAD("lhu $t0, 14($t1)", 0, 14, t0); TESTINSN5LOAD("lhu $t0, 18($t1)", 0, 18, t0); TESTINSN5LOAD("lhu $t0, 22($t1)", 0, 22, t0); TESTINSN5LOAD("lhu $t0, 26($t1)", 0, 26, t0); TESTINSN5LOAD("lhu $t0, 30($t1)", 0, 30, t0); TESTINSN5LOAD("lhu $t0, 34($t1)", 0, 34, t0); TESTINSN5LOAD("lhu $t0, 38($t1)", 0, 38, t0); printf("LUI\n"); TESTINST3("lui $t0, 0xffff", 0xffff, t0, t1); TESTINST3("lui $t0, 0xff00", 0xff00, t0, t1); TESTINST3("lui $t0, 0xff", 0xff, t0, t1); TESTINST3("lui $t0, 0x0", 0x0, t0, t1); TESTINST3("lui $t0, 0x5", 0x5, t0, t1); TESTINST3("lui $t0, 0x387", 0x387, t0, t1); printf("LW\n"); TESTINSN5LOAD("lw $t0, 0($t1)", 0, 0, t0); TESTINSN5LOAD("lw $t0, 4($t1)", 0, 4, t0); TESTINSN5LOAD("lw $t0, 8($t1)", 0, 8, t0); TESTINSN5LOAD("lw $t0, 12($t1)", 0, 12, t0); TESTINSN5LOAD("lw $t0, 16($t1)", 0, 16, t0); TESTINSN5LOAD("lw $t0, 20($t1)", 0, 20, t0); TESTINSN5LOAD("lw $t0, 24($t1)", 0, 24, t0); TESTINSN5LOAD("lw $t0, 28($t1)", 0, 28, t0); TESTINSN5LOAD("lw $t0, 32($t1)", 0, 32, t0); TESTINSN5LOAD("lw $t0, 36($t1)", 0, 36, t0); TESTINSN5LOAD("lw $t0, 40($t1)", 0, 40, t0); TESTINSN5LOAD("lw $t0, 44($t1)", 0, 44, t0); TESTINSN5LOAD("lw $t0, 48($t1)", 0, 48, t0); TESTINSN5LOAD("lw $t0, 52($t1)", 0, 52, t0); TESTINSN5LOAD("lw $t0, 56($t1)", 0, 56, t0); TESTINSN5LOAD("lw $t0, 60($t1)", 0, 60, t0); TESTINSN5LOAD("lw $t0, 64($t1)", 0, 64, t0); TESTINSN5LOAD("lw $t0, 2($t1)", 0, 2, t0); TESTINSN5LOAD("lw $t0, 6($t1)", 0, 6, t0); TESTINSN5LOAD("lw $t0, 10($t1)", 0, 10, t0); TESTINSN5LOAD("lw $t0, 14($t1)", 0, 14, t0); TESTINSN5LOAD("lw $t0, 18($t1)", 0, 18, t0); TESTINSN5LOAD("lw $t0, 22($t1)", 0, 22, t0); TESTINSN5LOAD("lw $t0, 26($t1)", 0, 26, t0); TESTINSN5LOAD("lw $t0, 30($t1)", 0, 30, t0); TESTINSN5LOAD("lw $t0, 34($t1)", 0, 34, t0); TESTINSN5LOAD("lw $t0, 38($t1)", 0, 38, t0); printf("LWL\n"); TESTINSN5LOAD("lwl $t0, 0($t1)", 0, 0, t0); TESTINSN5LOAD("lwl $t0, 4($t1)", 0, 4, t0); TESTINSN5LOAD("lwl $t0, 8($t1)", 0, 8, t0); TESTINSN5LOAD("lwl $t0, 12($t1)", 0, 12, t0); TESTINSN5LOAD("lwl $t0, 16($t1)", 0, 16, t0); TESTINSN5LOAD("lwl $t0, 20($t1)", 0, 20, t0); TESTINSN5LOAD("lwl $t0, 24($t1)", 0, 24, t0); TESTINSN5LOAD("lwl $t0, 28($t1)", 0, 28, t0); TESTINSN5LOAD("lwl $t0, 32($t1)", 0, 32, t0); TESTINSN5LOAD("lwl $t0, 36($t1)", 0, 36, t0); TESTINSN5LOAD("lwl $t0, 40($t1)", 0, 40, t0); TESTINSN5LOAD("lwl $t0, 44($t1)", 0, 44, t0); TESTINSN5LOAD("lwl $t0, 48($t1)", 0, 48, t0); TESTINSN5LOAD("lwl $t0, 52($t1)", 0, 52, t0); TESTINSN5LOAD("lwl $t0, 56($t1)", 0, 56, t0); TESTINSN5LOAD("lwl $t0, 60($t1)", 0, 60, t0); TESTINSN5LOAD("lwl $t0, 64($t1)", 0, 64, t0); TESTINSN5LOAD("lwl $t0, 2($t1)", 0, 2, t0); TESTINSN5LOAD("lwl $t0, 6($t1)", 0, 6, t0); TESTINSN5LOAD("lwl $t0, 10($t1)", 0, 10, t0); TESTINSN5LOAD("lwl $t0, 14($t1)", 0, 14, t0); TESTINSN5LOAD("lwl $t0, 18($t1)", 0, 18, t0); TESTINSN5LOAD("lwl $t0, 22($t1)", 0, 22, t0); TESTINSN5LOAD("lwl $t0, 26($t1)", 0, 26, t0); TESTINSN5LOAD("lwl $t0, 30($t1)", 0, 30, t0); TESTINSN5LOAD("lwl $t0, 34($t1)", 0, 34, t0); TESTINSN5LOAD("lwl $t0, 38($t1)", 0, 38, t0); printf("LWR\n"); TESTINSN5LOAD("lwr $t0, 0($t1)", 0, 0, t0); TESTINSN5LOAD("lwr $t0, 4($t1)", 0, 4, t0); TESTINSN5LOAD("lwr $t0, 8($t1)", 0, 8, t0); TESTINSN5LOAD("lwr $t0, 12($t1)", 0, 12, t0); TESTINSN5LOAD("lwr $t0, 16($t1)", 0, 16, t0); TESTINSN5LOAD("lwr $t0, 20($t1)", 0, 20, t0); TESTINSN5LOAD("lwr $t0, 24($t1)", 0, 24, t0); TESTINSN5LOAD("lwr $t0, 28($t1)", 0, 28, t0); TESTINSN5LOAD("lwr $t0, 32($t1)", 0, 32, t0); TESTINSN5LOAD("lwr $t0, 36($t1)", 0, 36, t0); TESTINSN5LOAD("lwr $t0, 40($t1)", 0, 40, t0); TESTINSN5LOAD("lwr $t0, 44($t1)", 0, 44, t0); TESTINSN5LOAD("lwr $t0, 48($t1)", 0, 48, t0); TESTINSN5LOAD("lwr $t0, 52($t1)", 0, 52, t0); TESTINSN5LOAD("lwr $t0, 56($t1)", 0, 56, t0); TESTINSN5LOAD("lwr $t0, 60($t1)", 0, 60, t0); TESTINSN5LOAD("lwr $t0, 64($t1)", 0, 64, t0); TESTINSN5LOAD("lwr $t0, 2($t1)", 0, 2, t0); TESTINSN5LOAD("lwr $t0, 6($t1)", 0, 6, t0); TESTINSN5LOAD("lwr $t0, 10($t1)", 0, 10, t0); TESTINSN5LOAD("lwr $t0, 14($t1)", 0, 14, t0); TESTINSN5LOAD("lwr $t0, 18($t1)", 0, 18, t0); TESTINSN5LOAD("lwr $t0, 22($t1)", 0, 22, t0); TESTINSN5LOAD("lwr $t0, 26($t1)", 0, 26, t0); TESTINSN5LOAD("lwr $t0, 30($t1)", 0, 30, t0); TESTINSN5LOAD("lwr $t0, 34($t1)", 0, 34, t0); TESTINSN5LOAD("lwr $t0, 38($t1)", 0, 38, t0); printf("MADD\n"); TESTINST3a("madd $t0, $t1", 0x6, 0x2, t0, t1); TESTINST3a("madd $t0, $t1", 0x55, 0x28, t0, t1); TESTINST3a("madd $t0, $t1", 0x18, 0xfff, t0, t1); TESTINST3a("madd $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); TESTINST3a("madd $t0, $t1", 0xffffffff, 0x1, t0, t1); TESTINST3a("madd $t0, $t1", 0x1, 0xffffffff, t0, t1); TESTINST3a("madd $t0, $t1", 0x2, 0x6, t0, t1); TESTINST3a("madd $t0, $t1", 0x356, 0x555, t0, t1); printf("MADDU\n"); TESTINST3a("maddu $t0, $t1", 0x6, 0x2, t0, t1); TESTINST3a("maddu $t0, $t1", 0x55, 0x28, t0, t1); TESTINST3a("maddu $t0, $t1", 0x18, 0xfff, t0, t1); TESTINST3a("maddu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); TESTINST3a("maddu $t0, $t1", 0xffffffff, 0x1, t0, t1); TESTINST3a("maddu $t0, $t1", 0x1, 0xffffffff, t0, t1); TESTINST3a("maddu $t0, $t1", 0x2, 0x6, t0, t1); TESTINST3a("maddu $t0, $t1", 0x356, 0x555, t0, t1); printf("MOVN\n"); TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x31415927, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); printf("MOVZ\n"); TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x31415927, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1, t0, t1, t2); TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); printf("MSUB\n"); TESTINST3a("msub $t0, $t1", 0x6, 0x2, t0, t1); TESTINST3a("msub $t0, $t1", 0x55, 0x28, t0, t1); TESTINST3a("msub $t0, $t1", 0x18, 0xfff, t0, t1); TESTINST3a("msub $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); TESTINST3a("msub $t0, $t1", 0xffffffff, 0x1, t0, t1); TESTINST3a("msub $t0, $t1", 0x1, 0xffffffff, t0, t1); TESTINST3a("msub $t0, $t1", 0x2, 0x6, t0, t1); TESTINST3a("msub $t0, $t1", 0x356, 0x555, t0, t1); printf("MSUBU\n"); TESTINST3a("msubu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); TESTINST3a("msubu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); TESTINST3a("msubu $t0, $t1", 0, 255, t0, t1); TESTINST3a("msubu $t0, $t1", -1, 0, t0, t1); TESTINST3a("msubu $t0, $t1", 0, 1, t0, t1); TESTINST3a("msubu $t0, $t1", 0, 0, t0, t1); TESTINST3a("msubu $t0, $t1", 0x80000000, -1, t0, t1); TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0, t0, t1); TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x80000000, 0xff000000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); TESTINST3a("msubu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); TESTINST3a("msubu $t0, $t1", 0, 255, t0, t1); TESTINST3a("msubu $t0, $t1", 1, 0, t0, t1); TESTINST3a("msubu $t0, $t1", 0, 1, t0, t1); TESTINST3a("msubu $t0, $t1", -1, 0, t0, t1); TESTINST3a("msubu $t0, $t1", 0, -1, t0, t1); TESTINST3a("msubu $t0, $t1", 0, 0x80000000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x80000000, 0, t0, t1); TESTINST3a("msubu $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x80000000, 0xff000000, t0, t1); TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); TESTINST3a("msubu $t0, $t1", 0xffffffff, 0, t0, t1); TESTINST3a("msubu $t0, $t1", 0, 0xffffffff, t0, t1); TESTINST3a("msubu $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); TESTINST3a("msubu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); TESTINST3a("msubu $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); printf("MUL\n"); TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("mul $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); printf("MULT\n"); TESTINST3a("mult $t0, $t1", 0x31415927, 0xffffffff, t0, t1); TESTINST3a("mult $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); TESTINST3a("mult $t0, $t1", 0, 255, t0, t1); TESTINST3a("mult $t0, $t1", -1, 0, t0, t1); TESTINST3a("mult $t0, $t1", 0, 1, t0, t1); TESTINST3a("mult $t0, $t1", 0, 0, t0, t1); TESTINST3a("mult $t0, $t1", 0x80000000, -1, t0, t1); TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("mult $t0, $t1", 0x7fffffff, 0, t0, t1); TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); TESTINST3a("mult $t0, $t1", 0x80000000, 0xff000000, t0, t1); TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); TESTINST3a("mult $t0, $t1", 0x31415927, 0xffffffff, t0, t1); TESTINST3a("mult $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); TESTINST3a("mult $t0, $t1", 0, 255, t0, t1); TESTINST3a("mult $t0, $t1", 1, 0, t0, t1); TESTINST3a("mult $t0, $t1", 0, 1, t0, t1); TESTINST3a("mult $t0, $t1", -1, 0, t0, t1); TESTINST3a("mult $t0, $t1", 0, -1, t0, t1); TESTINST3a("mult $t0, $t1", 0, 0x80000000, t0, t1); TESTINST3a("mult $t0, $t1", 0x80000000, 0, t0, t1); TESTINST3a("mult $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); TESTINST3a("mult $t0, $t1", 0x80000000, 0xff000000, t0, t1); TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); TESTINST3a("mult $t0, $t1", 0xffffffff, 0, t0, t1); TESTINST3a("mult $t0, $t1", 0, 0xffffffff, t0, t1); TESTINST3a("mult $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); TESTINST3a("mult $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); TESTINST3a("mult $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); printf("MULTU\n"); TESTINST3a("multu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); TESTINST3a("multu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); TESTINST3a("multu $t0, $t1", 0, 255, t0, t1); TESTINST3a("multu $t0, $t1", -1, 0, t0, t1); TESTINST3a("multu $t0, $t1", 0, 1, t0, t1); TESTINST3a("multu $t0, $t1", 0, 0, t0, t1); TESTINST3a("multu $t0, $t1", 0x80000000, -1, t0, t1); TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("multu $t0, $t1", 0x7fffffff, 0, t0, t1); TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); TESTINST3a("multu $t0, $t1", 0x80000000, 0xff000000, t0, t1); TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); TESTINST3a("multu $t0, $t1", 0x31415927, 0xffffffff, t0, t1); TESTINST3a("multu $t0, $t1", 0x31415927, 0xee00ee00, t0, t1); TESTINST3a("multu $t0, $t1", 0, 255, t0, t1); TESTINST3a("multu $t0, $t1", 1, 0, t0, t1); TESTINST3a("multu $t0, $t1", 0, 1, t0, t1); TESTINST3a("multu $t0, $t1", -1, 0, t0, t1); TESTINST3a("multu $t0, $t1", 0, -1, t0, t1); TESTINST3a("multu $t0, $t1", 0, 0x80000000, t0, t1); TESTINST3a("multu $t0, $t1", 0x80000000, 0, t0, t1); TESTINST3a("multu $t0, $t1", 0x80000000, 0x80000000, t0, t1); TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x80000000, t0, t1); TESTINST3a("multu $t0, $t1", 0x80000000, 0xff000000, t0, t1); TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1); TESTINST3a("multu $t0, $t1", 0xffffffff, 0, t0, t1); TESTINST3a("multu $t0, $t1", 0, 0xffffffff, t0, t1); TESTINST3a("multu $t0, $t1", 0xffffffff, 0xffffffff, t0, t1); TESTINST3a("multu $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1); TESTINST3a("multu $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1); printf("NOR\n"); TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("nor $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); #if (__mips==32) && (__mips_isa_rev>=2) printf("WSBH\n"); TESTINST3("wsbh $t0, $t1", 0x2, t0, t1); TESTINST3("wsbh $t0, $t1", 0x28, t0, t1); TESTINST3("wsbh $t0, $t1", -258, t0, t1); TESTINST3("wsbh $t0, $t1", 0x7fffffff, t0, t1); TESTINST3("wsbh $t0, $t1", -11, t0, t1); TESTINST3("wsbh $t0, $t1", 0xffffffff, t0, t1); TESTINST3("wsbh $t0, $t1", 0x16, t0, t1); TESTINST3("wsbh $t0, $t1", -1, t0, t1); #endif printf("NOT\n"); TESTINST3("not $t0, $t1", 0x2, t0, t1); TESTINST3("not $t0, $t1", 0x28, t0, t1); TESTINST3("not $t0, $t1", -258, t0, t1); TESTINST3("not $t0, $t1", 0x7fffffff, t0, t1); TESTINST3("not $t0, $t1", -11, t0, t1); TESTINST3("not $t0, $t1", 0xffffffff, t0, t1); TESTINST3("not $t0, $t1", 0x16, t0, t1); TESTINST3("not $t0, $t1", -1, t0, t1); printf("NEGU\n"); TESTINST3("negu $t0, $t1", 0x2, t0, t1); TESTINST3("negu $t0, $t1", 0x28, t0, t1); TESTINST3("negu $t0, $t1", -258, t0, t1); TESTINST3("negu $t0, $t1", 0x7fffffff, t0, t1); TESTINST3("negu $t0, $t1", -11, t0, t1); TESTINST3("negu $t0, $t1", 0xffffffff, t0, t1); TESTINST3("negu $t0, $t1", 0x16, t0, t1); TESTINST3("negu $t0, $t1", -1, t0, t1); printf("OR\n"); TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("or $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); printf("ORI\n"); TESTINST2("ori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); TESTINST2("ori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); TESTINST2("ori $t0, $t1, 255", 0, 255, t0, t1); TESTINST2("ori $t0, $t1, 0", -1, 0, t0, t1); TESTINST2("ori $t0, $t1, 1", 0, 1, t0, t1); TESTINST2("ori $t0, $t1, 0", 0, 0, t0, t1); TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); TESTINST2("ori $t0, $t1, 0", 0x7fffffff, 0, t0, t1); TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); TESTINST2("ori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); TESTINST2("ori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); TESTINST2("ori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); TESTINST2("ori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); TESTINST2("ori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); TESTINST2("ori $t0, $t1, 255", 0, 255, t0, t1); TESTINST2("ori $t0, $t1, 0", 1, 0, t0, t1); TESTINST2("ori $t0, $t1, 1", 0, 1, t0, t1); TESTINST2("ori $t0, $t1, 0", -1, 0, t0, t1); TESTINST2("ori $t0, $t1, 0x8000", 0, 0x8000, t0, t1); TESTINST2("ori $t0, $t1, 0", 0x8000, 0, t0, t1); TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); TESTINST2("ori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); TESTINST2("ori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); TESTINST2("ori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); TESTINST2("ori $t0, $t1, 0", 0xffff, 0, t0, t1); TESTINST2("ori $t0, $t1, 0xffff", 0, 0xffff, t0, t1); TESTINST2("ori $t0, $t1, 0xffff", 0xffffffff, 0xffff, t0, t1); TESTINST2("ori $t0, $t1, 0x7fff", 0x7fffffff, 0x7fff, t0, t1); TESTINST2("ori $t0, $t1, 0x0000", 0x0000ffff, 0x0000, t0, t1); #if (__mips==32) && (__mips_isa_rev>=2) printf("ROTR\n"); TESTINST2("rotr $t0, $t1, 0x00000000", 0x31415927, 0x00000000, t0, t1); TESTINST2("rotr $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); TESTINST2("rotr $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); TESTINST2("rotr $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); TESTINST2("rotr $t0, $t1, 0x00000010", 0x31415927, 0x00000010, t0, t1); TESTINST2("rotr $t0, $t1, 0x0000001F", 0x31415927, 0x0000001F, t0, t1); TESTINST2("rotr $t0, $t1, 0x00000020", 0x31415927, 0x00000020, t0, t1); TESTINST2("rotr $t0, $t1, 0x00000021", 0x31415927, 0x00000021, t0, t1); TESTINST2("rotr $t0, $t1, 0x00000000", 0x00088000, 0x00000000, t0, t1); TESTINST2("rotr $t0, $t1, 0x00000001", 0x00088000, 0x00000001, t0, t1); TESTINST2("rotr $t0, $t1, 31", 0x00088000, 31, t0, t1); TESTINST2("rotr $t0, $t1, 16", 0x00010000, 16, t0, t1); TESTINST2("rotr $t0, $t1, 17", 0x00010000, 17, t0, t1); TESTINST2("rotr $t0, $t1, 18", 0x00010000, 18, t0, t1); TESTINST2("rotr $t0, $t1, 0", 0, 0, t0, t1); TESTINST2("rotr $t0, $t1, 0xffff", 0xffff, 0xffff, t0, t1); #endif #if (__mips==32) && (__mips_isa_rev>=2) printf("ROTRV\n"); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("rotrv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); printf("SEB\n"); TESTINST3("seb $t0, $t1", 0x2, t0, t1); TESTINST3("seb $t0, $t1", 0x28, t0, t1); TESTINST3("seb $t0, $t1", -258, t0, t1); TESTINST3("seb $t0, $t1", 0x7fffffff, t0, t1); TESTINST3("seb $t0, $t1", -11, t0, t1); TESTINST3("seb $t0, $t1", 0xffffffff, t0, t1); TESTINST3("seb $t0, $t1", 0x16, t0, t1); TESTINST3("seb $t0, $t1", -1, t0, t1); printf("SEH\n"); TESTINST3("seh $t0, $t1", 0x2, t0, t1); TESTINST3("seh $t0, $t1", 0x28, t0, t1); TESTINST3("seh $t0, $t1", -258, t0, t1); TESTINST3("seh $t0, $t1", 0x7fffffff, t0, t1); TESTINST3("seh $t0, $t1", -11, t0, t1); TESTINST3("seh $t0, $t1", 0xffffffff, t0, t1); TESTINST3("seh $t0, $t1", 0x16, t0, t1); TESTINST3("seh $t0, $t1", -1, t0, t1); #endif printf("SLL\n"); TESTINST2("sll $t0, $t1, 0x00000000", 0x31415927, 0x00000000, t0, t1); TESTINST2("sll $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); TESTINST2("sll $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); TESTINST2("sll $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); TESTINST2("sll $t0, $t1, 0x00000010", 0x31415927, 0x00000010, t0, t1); TESTINST2("sll $t0, $t1, 0x0000001F", 0x31415927, 0x0000001F, t0, t1); TESTINST2("sll $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); TESTINST2("sll $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); TESTINST2("sll $t0, $t1, 0x00000000", 0x00088000, 0x00000000, t0, t1); TESTINST2("sll $t0, $t1, 0x00000001", 0x00088000, 0x00000001, t0, t1); TESTINST2("sll $t0, $t1, 31", 0x00088000, 31, t0, t1); TESTINST2("sll $t0, $t1, 16", 0x00010000, 16, t0, t1); TESTINST2("sll $t0, $t1, 17", 0x00010000, 17, t0, t1); TESTINST2("sll $t0, $t1, 18", 0x00010000, 18, t0, t1); TESTINST2("sll $t0, $t1, 0", 0, 0, t0, t1); printf("SLLV\n"); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("sllv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); printf("SLT\n"); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("slt $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); printf("SLTI\n"); TESTINST2("slti $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); TESTINST2("slti $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); TESTINST2("slti $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); TESTINST2("slti $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); TESTINST2("slti $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); TESTINST2("slti $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); TESTINST2("slti $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); TESTINST2("slti $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); TESTINST2("slti $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); TESTINST2("slti $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); TESTINST2("slti $t0, $t1, 31", 0x00088000, 31, t0, t1); TESTINST2("slti $t0, $t1, 16", 0x00010000, 16, t0, t1); TESTINST2("slti $t0, $t1, 17", 0x00010000, 17, t0, t1); TESTINST2("slti $t0, $t1, 18", 0x00010000, 18, t0, t1); TESTINST2("slti $t0, $t1, 0", 0, 0, t0, t1); printf("SLTIU\n"); TESTINST2("sltiu $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); TESTINST2("sltiu $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); TESTINST2("sltiu $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); TESTINST2("sltiu $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); TESTINST2("sltiu $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); TESTINST2("sltiu $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); TESTINST2("sltiu $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); TESTINST2("sltiu $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); TESTINST2("sltiu $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); TESTINST2("sltiu $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); TESTINST2("sltiu $t0, $t1, 31", 0x00088000, 31, t0, t1); TESTINST2("sltiu $t0, $t1, 16", 0x00010000, 16, t0, t1); TESTINST2("sltiu $t0, $t1, 17", 0x00010000, 17, t0, t1); TESTINST2("sltiu $t0, $t1, 18", 0x00010000, 18, t0, t1); TESTINST2("sltiu $t0, $t1, 0", 0, 0, t0, t1); printf("SLTU\n"); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("sltu $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); printf("SRA\n"); TESTINST2("sra $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); TESTINST2("sra $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); TESTINST2("sra $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); TESTINST2("sra $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); TESTINST2("sra $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); TESTINST2("sra $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); TESTINST2("sra $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); TESTINST2("sra $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); TESTINST2("sra $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); TESTINST2("sra $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); TESTINST2("sra $t0, $t1, 31", 0x00088000, 31, t0, t1); TESTINST2("sra $t0, $t1, 16", 0x00010000, 16, t0, t1); TESTINST2("sra $t0, $t1, 17", 0x00010000, 17, t0, t1); TESTINST2("sra $t0, $t1, 18", 0x00010000, 18, t0, t1); TESTINST2("sra $t0, $t1, 0", 0, 0, t0, t1); printf("SRAV\n"); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("srav $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); printf("SRL\n"); TESTINST2("srl $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1); TESTINST2("srl $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1); TESTINST2("srl $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1); TESTINST2("srl $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1); TESTINST2("srl $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1); TESTINST2("srl $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1); TESTINST2("srl $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1); TESTINST2("srl $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1); TESTINST2("srl $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1); TESTINST2("srl $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1); TESTINST2("srl $t0, $t1, 31", 0x00088000, 31, t0, t1); TESTINST2("srl $t0, $t1, 16", 0x00010000, 16, t0, t1); TESTINST2("srl $t0, $t1, 17", 0x00010000, 17, t0, t1); TESTINST2("srl $t0, $t1, 18", 0x00010000, 18, t0, t1); TESTINST2("srl $t0, $t1, 0", 0, 0, t0, t1); printf("SRLV\n"); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("srlv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); printf("SUBU\n"); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00001110, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2); printf("SUB\n"); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x27181728, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x97181728, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x7fffffff, t0, t1, t2); TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); printf("XOR\n"); TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0, 0, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x80000000, -1, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0, 255, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 1, 0, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0, 1, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", -1, 0, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0, -1, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0, 0x80000000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0xffffffff, 0, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0, 0xffffffff, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2); TESTINST1("xor $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2); printf("XORI\n"); TESTINST2("xori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); TESTINST2("xori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); TESTINST2("xori $t0, $t1, 255", 0, 255, t0, t1); TESTINST2("xori $t0, $t1, 0", -1, 0, t0, t1); TESTINST2("xori $t0, $t1, 1", 0, 1, t0, t1); TESTINST2("xori $t0, $t1, 0", 0, 0, t0, t1); TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); TESTINST2("xori $t0, $t1, 0", 0x7fffffff, 0, t0, t1); TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); TESTINST2("xori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); TESTINST2("xori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); TESTINST2("xori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); TESTINST2("xori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1); TESTINST2("xori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1); TESTINST2("xori $t0, $t1, 255", 0, 255, t0, t1); TESTINST2("xori $t0, $t1, 0", 1, 0, t0, t1); TESTINST2("xori $t0, $t1, 1", 0, 1, t0, t1); TESTINST2("xori $t0, $t1, 0", -1, 0, t0, t1); TESTINST2("xori $t0, $t1, 0x8000", 0, 0x8000, t0, t1); TESTINST2("xori $t0, $t1, 0", 0x8000, 0, t0, t1); TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1); TESTINST2("xori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1); TESTINST2("xori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1); TESTINST2("xori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1); TESTINST2("xori $t0, $t1, 0", 0xffff, 0, t0, t1); TESTINST2("xori $t0, $t1, 0xffff", 0, 0xffff, t0, t1); TESTINST2("xori $t0, $t1, 0xffff", 0xffffffff, 0xffff, t0, t1); TESTINST2("xori $t0, $t1, 0x7fff", 0x7fffffff, 0x7fff, t0, t1); TESTINST2("xori $t0, $t1, 0x0000", 0x0000ffff, 0x0000, t0, t1); printf("MFHI MFLO\n"); TESTINSN_HILO(0x31415927); TESTINSN_HILO(0); TESTINSN_HILO(-1); TESTINSN_HILO(0xffffffff); TESTINSN_HILO(0x8000); TESTINSN_HILO(0x80000000); TESTINSN_HILO(0x0000ffff); TESTINSN_HILO(0x7fff); TESTINSN_HILO(0x0dd0); TESTINSN_HILO(0xff00); return 0; }