#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;
}