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