• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
main(int argc,char ** argv)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