MIPS32int.c revision 436e89c602e787e7a27dd6624b09beed41a0da8a
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
87const 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
130int 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, 64($t1)", 0, 64, 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, 64($t1)", 0, 64, 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, 64($t1)", 0, 64, 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, 64($t1)", 0, 64, 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, 64($t1)", 0, 64, t0);
790   TESTINSN5LOAD("lw $t0, 2($t1)", 0, 2, t0);
791   TESTINSN5LOAD("lw $t0, 6($t1)", 0, 6, t0);
792   TESTINSN5LOAD("lw $t0, 10($t1)", 0, 10, t0);
793   TESTINSN5LOAD("lw $t0, 14($t1)", 0, 14, t0);
794   TESTINSN5LOAD("lw $t0, 18($t1)", 0, 18, t0);
795   TESTINSN5LOAD("lw $t0, 22($t1)", 0, 22, t0);
796   TESTINSN5LOAD("lw $t0, 26($t1)", 0, 26, t0);
797   TESTINSN5LOAD("lw $t0, 30($t1)", 0, 30, t0);
798   TESTINSN5LOAD("lw $t0, 34($t1)", 0, 34, t0);
799   TESTINSN5LOAD("lw $t0, 38($t1)", 0, 38, t0);
800
801   printf("LWL\n");
802   TESTINSN5LOAD("lwl $t0, 0($t1)", 0, 0, t0);
803   TESTINSN5LOAD("lwl $t0, 4($t1)", 0, 4, t0);
804   TESTINSN5LOAD("lwl $t0, 8($t1)", 0, 8, t0);
805   TESTINSN5LOAD("lwl $t0, 12($t1)", 0, 12, t0);
806   TESTINSN5LOAD("lwl $t0, 16($t1)", 0, 16, t0);
807   TESTINSN5LOAD("lwl $t0, 20($t1)", 0, 20, t0);
808   TESTINSN5LOAD("lwl $t0, 24($t1)", 0, 24, t0);
809   TESTINSN5LOAD("lwl $t0, 28($t1)", 0, 28, t0);
810   TESTINSN5LOAD("lwl $t0, 32($t1)", 0, 32, t0);
811   TESTINSN5LOAD("lwl $t0, 36($t1)", 0, 36, t0);
812   TESTINSN5LOAD("lwl $t0, 40($t1)", 0, 40, t0);
813   TESTINSN5LOAD("lwl $t0, 44($t1)", 0, 44, t0);
814   TESTINSN5LOAD("lwl $t0, 48($t1)", 0, 48, t0);
815   TESTINSN5LOAD("lwl $t0, 52($t1)", 0, 52, t0);
816   TESTINSN5LOAD("lwl $t0, 56($t1)", 0, 56, t0);
817   TESTINSN5LOAD("lwl $t0, 60($t1)", 0, 60, t0);
818   TESTINSN5LOAD("lwl $t0, 64($t1)", 0, 64, t0);
819   TESTINSN5LOAD("lwl $t0, 2($t1)", 0, 2, t0);
820   TESTINSN5LOAD("lwl $t0, 6($t1)", 0, 6, t0);
821   TESTINSN5LOAD("lwl $t0, 10($t1)", 0, 10, t0);
822   TESTINSN5LOAD("lwl $t0, 14($t1)", 0, 14, t0);
823   TESTINSN5LOAD("lwl $t0, 18($t1)", 0, 18, t0);
824   TESTINSN5LOAD("lwl $t0, 22($t1)", 0, 22, t0);
825   TESTINSN5LOAD("lwl $t0, 26($t1)", 0, 26, t0);
826   TESTINSN5LOAD("lwl $t0, 30($t1)", 0, 30, t0);
827   TESTINSN5LOAD("lwl $t0, 34($t1)", 0, 34, t0);
828   TESTINSN5LOAD("lwl $t0, 38($t1)", 0, 38, t0);
829
830   printf("LWR\n");
831   TESTINSN5LOAD("lwr $t0, 0($t1)", 0, 0, t0);
832   TESTINSN5LOAD("lwr $t0, 4($t1)", 0, 4, t0);
833   TESTINSN5LOAD("lwr $t0, 8($t1)", 0, 8, t0);
834   TESTINSN5LOAD("lwr $t0, 12($t1)", 0, 12, t0);
835   TESTINSN5LOAD("lwr $t0, 16($t1)", 0, 16, t0);
836   TESTINSN5LOAD("lwr $t0, 20($t1)", 0, 20, t0);
837   TESTINSN5LOAD("lwr $t0, 24($t1)", 0, 24, t0);
838   TESTINSN5LOAD("lwr $t0, 28($t1)", 0, 28, t0);
839   TESTINSN5LOAD("lwr $t0, 32($t1)", 0, 32, t0);
840   TESTINSN5LOAD("lwr $t0, 36($t1)", 0, 36, t0);
841   TESTINSN5LOAD("lwr $t0, 40($t1)", 0, 40, t0);
842   TESTINSN5LOAD("lwr $t0, 44($t1)", 0, 44, t0);
843   TESTINSN5LOAD("lwr $t0, 48($t1)", 0, 48, t0);
844   TESTINSN5LOAD("lwr $t0, 52($t1)", 0, 52, t0);
845   TESTINSN5LOAD("lwr $t0, 56($t1)", 0, 56, t0);
846   TESTINSN5LOAD("lwr $t0, 60($t1)", 0, 60, t0);
847   TESTINSN5LOAD("lwr $t0, 64($t1)", 0, 64, t0);
848   TESTINSN5LOAD("lwr $t0, 2($t1)", 0, 2, t0);
849   TESTINSN5LOAD("lwr $t0, 6($t1)", 0, 6, t0);
850   TESTINSN5LOAD("lwr $t0, 10($t1)", 0, 10, t0);
851   TESTINSN5LOAD("lwr $t0, 14($t1)", 0, 14, t0);
852   TESTINSN5LOAD("lwr $t0, 18($t1)", 0, 18, t0);
853   TESTINSN5LOAD("lwr $t0, 22($t1)", 0, 22, t0);
854   TESTINSN5LOAD("lwr $t0, 26($t1)", 0, 26, t0);
855   TESTINSN5LOAD("lwr $t0, 30($t1)", 0, 30, t0);
856   TESTINSN5LOAD("lwr $t0, 34($t1)", 0, 34, t0);
857   TESTINSN5LOAD("lwr $t0, 38($t1)", 0, 38, t0);
858
859   printf("MADD\n");
860   TESTINST3a("madd  $t0, $t1", 0x6, 0x2, t0, t1);
861   TESTINST3a("madd  $t0, $t1", 0x55, 0x28, t0, t1);
862   TESTINST3a("madd  $t0, $t1", 0x18, 0xfff, t0, t1);
863   TESTINST3a("madd  $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1);
864   TESTINST3a("madd  $t0, $t1", 0xffffffff, 0x1, t0, t1);
865   TESTINST3a("madd  $t0, $t1", 0x1, 0xffffffff, t0, t1);
866   TESTINST3a("madd  $t0, $t1", 0x2, 0x6, t0, t1);
867   TESTINST3a("madd  $t0, $t1", 0x356, 0x555, t0, t1);
868
869   printf("MADDU\n");
870   TESTINST3a("maddu  $t0, $t1", 0x6, 0x2, t0, t1);
871   TESTINST3a("maddu  $t0, $t1", 0x55, 0x28, t0, t1);
872   TESTINST3a("maddu  $t0, $t1", 0x18, 0xfff, t0, t1);
873   TESTINST3a("maddu  $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1);
874   TESTINST3a("maddu  $t0, $t1", 0xffffffff, 0x1, t0, t1);
875   TESTINST3a("maddu  $t0, $t1", 0x1, 0xffffffff, t0, t1);
876   TESTINST3a("maddu  $t0, $t1", 0x2, 0x6, t0, t1);
877   TESTINST3a("maddu  $t0, $t1", 0x356, 0x555, t0, t1);
878
879   printf("MOVN\n");
880   TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0,          t0, t1, t2);
881   TESTINST1("movn $t0, $t1, $t2", 0x31415927, 1,          t0, t1, t2);
882   TESTINST1("movn $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
886   TESTINST1("movn $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
887   TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1,          t0, t1, t2);
888   TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 1,          t0, t1, t2);
889   TESTINST1("movn $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
890   TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
891   TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1,          t0, t1, t2);
892   TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
893   TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0,          t0, t1, t2);
894   TESTINST1("movn $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
895   TESTINST1("movn $t0, $t1, $t2", 0,          1,          t0, t1, t2);
896   TESTINST1("movn $t0, $t1, $t2", 1,          0,          t0, t1, t2);
897   TESTINST1("movn $t0, $t1, $t2", 0,          1,          t0, t1, t2);
898   TESTINST1("movn $t0, $t1, $t2", -1,         0,          t0, t1, t2);
899   TESTINST1("movn $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
900   TESTINST1("movn $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
901   TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1,          t0, t1, t2);
902   TESTINST1("movn $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
903   TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
904   TESTINST1("movn $t0, $t1, $t2", 0x80000000, 1,          t0, t1, t2);
905   TESTINST1("movn $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
906
907   printf("MOVZ\n");
908   TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0,          t0, t1, t2);
909   TESTINST1("movz $t0, $t1, $t2", 0x31415927, 1,          t0, t1, t2);
910   TESTINST1("movz $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
914   TESTINST1("movz $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
915   TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1,          t0, t1, t2);
916   TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 1,          t0, t1, t2);
917   TESTINST1("movz $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
918   TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
919   TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1,          t0, t1, t2);
920   TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
921   TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0,          t0, t1, t2);
922   TESTINST1("movz $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
923   TESTINST1("movz $t0, $t1, $t2", 0,          1,          t0, t1, t2);
924   TESTINST1("movz $t0, $t1, $t2", 1,          0,          t0, t1, t2);
925   TESTINST1("movz $t0, $t1, $t2", 0,          1,          t0, t1, t2);
926   TESTINST1("movz $t0, $t1, $t2", -1,         0,          t0, t1, t2);
927   TESTINST1("movz $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
928   TESTINST1("movz $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
929   TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1,          t0, t1, t2);
930   TESTINST1("movz $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
931   TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
932   TESTINST1("movz $t0, $t1, $t2", 0x80000000, 1,          t0, t1, t2);
933   TESTINST1("movz $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
934
935   printf("MSUB\n");
936   TESTINST3a("msub  $t0, $t1", 0x6, 0x2, t0, t1);
937   TESTINST3a("msub  $t0, $t1", 0x55, 0x28, t0, t1);
938   TESTINST3a("msub  $t0, $t1", 0x18, 0xfff, t0, t1);
939   TESTINST3a("msub  $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1);
940   TESTINST3a("msub  $t0, $t1", 0xffffffff, 0x1, t0, t1);
941   TESTINST3a("msub  $t0, $t1", 0x1, 0xffffffff, t0, t1);
942   TESTINST3a("msub  $t0, $t1", 0x2, 0x6, t0, t1);
943   TESTINST3a("msub  $t0, $t1", 0x356, 0x555, t0, t1);
944
945   printf("MSUBU\n");
946   TESTINST3a("msubu  $t0, $t1", 0x31415927, 0xffffffff, t0, t1);
947   TESTINST3a("msubu  $t0, $t1", 0x31415927, 0xee00ee00, t0, t1);
948   TESTINST3a("msubu  $t0, $t1", 0,          255,        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,          0,          t0, t1);
952   TESTINST3a("msubu  $t0, $t1", 0x80000000, -1,         t0, t1);
953   TESTINST3a("msubu  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
954   TESTINST3a("msubu  $t0, $t1", 0x7fffffff, 0,          t0, t1);
955   TESTINST3a("msubu  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
956   TESTINST3a("msubu  $t0, $t1", 0x7fffffff, 0x80000000, t0, t1);
957   TESTINST3a("msubu  $t0, $t1", 0x80000000, 0xff000000, t0, t1);
958   TESTINST3a("msubu  $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1);
959   TESTINST3a("msubu  $t0, $t1", 0x31415927, 0xffffffff, t0, t1);
960   TESTINST3a("msubu  $t0, $t1", 0x31415927, 0xee00ee00, t0, t1);
961   TESTINST3a("msubu  $t0, $t1", 0,          255,        t0, t1);
962   TESTINST3a("msubu  $t0, $t1", 1,          0,          t0, t1);
963   TESTINST3a("msubu  $t0, $t1", 0,          1,          t0, t1);
964   TESTINST3a("msubu  $t0, $t1", -1,         0,          t0, t1);
965   TESTINST3a("msubu  $t0, $t1", 0,          -1,         t0, t1);
966   TESTINST3a("msubu  $t0, $t1", 0,          0x80000000, t0, t1);
967   TESTINST3a("msubu  $t0, $t1", 0x80000000, 0,          t0, t1);
968   TESTINST3a("msubu  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
969   TESTINST3a("msubu  $t0, $t1", 0x7fffffff, 0x80000000, t0, t1);
970   TESTINST3a("msubu  $t0, $t1", 0x80000000, 0xff000000, t0, t1);
971   TESTINST3a("msubu  $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1);
972   TESTINST3a("msubu  $t0, $t1", 0xffffffff, 0,          t0, t1);
973   TESTINST3a("msubu  $t0, $t1", 0,          0xffffffff, t0, t1);
974   TESTINST3a("msubu  $t0, $t1", 0xffffffff, 0xffffffff, t0, t1);
975   TESTINST3a("msubu  $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1);
976   TESTINST3a("msubu  $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1);
977
978   printf("MUL\n");
979   TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
980   TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
981   TESTINST1("mul $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
985   TESTINST1("mul $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
986   TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
987   TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
988   TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
989   TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
990   TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
991   TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
992   TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
993   TESTINST1("mul $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
994   TESTINST1("mul $t0, $t1, $t2", 0,          255,        t0, t1, t2);
995   TESTINST1("mul $t0, $t1, $t2", 1,          0,          t0, t1, t2);
996   TESTINST1("mul $t0, $t1, $t2", 0,          1,          t0, t1, t2);
997   TESTINST1("mul $t0, $t1, $t2", -1,         0,          t0, t1, t2);
998   TESTINST1("mul $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
999   TESTINST1("mul $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1000   TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1001   TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1002   TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1003   TESTINST1("mul $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1004   TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1005   TESTINST1("mul $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1006   TESTINST1("mul $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1007   TESTINST1("mul $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1008   TESTINST1("mul $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1009   TESTINST1("mul $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1010
1011   printf("MULT\n");
1012   TESTINST3a("mult  $t0, $t1", 0x31415927, 0xffffffff, t0, t1);
1013   TESTINST3a("mult  $t0, $t1", 0x31415927, 0xee00ee00, t0, t1);
1014   TESTINST3a("mult  $t0, $t1", 0,          255,        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,          0,          t0, t1);
1018   TESTINST3a("mult  $t0, $t1", 0x80000000, -1,         t0, t1);
1019   TESTINST3a("mult  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
1020   TESTINST3a("mult  $t0, $t1", 0x7fffffff, 0,          t0, t1);
1021   TESTINST3a("mult  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
1022   TESTINST3a("mult  $t0, $t1", 0x7fffffff, 0x80000000, t0, t1);
1023   TESTINST3a("mult  $t0, $t1", 0x80000000, 0xff000000, t0, t1);
1024   TESTINST3a("mult  $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1);
1025   TESTINST3a("mult  $t0, $t1", 0x31415927, 0xffffffff, t0, t1);
1026   TESTINST3a("mult  $t0, $t1", 0x31415927, 0xee00ee00, t0, t1);
1027   TESTINST3a("mult  $t0, $t1", 0,          255,        t0, t1);
1028   TESTINST3a("mult  $t0, $t1", 1,          0,          t0, t1);
1029   TESTINST3a("mult  $t0, $t1", 0,          1,          t0, t1);
1030   TESTINST3a("mult  $t0, $t1", -1,         0,          t0, t1);
1031   TESTINST3a("mult  $t0, $t1", 0,          -1,         t0, t1);
1032   TESTINST3a("mult  $t0, $t1", 0,          0x80000000, t0, t1);
1033   TESTINST3a("mult  $t0, $t1", 0x80000000, 0,          t0, t1);
1034   TESTINST3a("mult  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
1035   TESTINST3a("mult  $t0, $t1", 0x7fffffff, 0x80000000, t0, t1);
1036   TESTINST3a("mult  $t0, $t1", 0x80000000, 0xff000000, t0, t1);
1037   TESTINST3a("mult  $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1);
1038   TESTINST3a("mult  $t0, $t1", 0xffffffff, 0,          t0, t1);
1039   TESTINST3a("mult  $t0, $t1", 0,          0xffffffff, t0, t1);
1040   TESTINST3a("mult  $t0, $t1", 0xffffffff, 0xffffffff, t0, t1);
1041   TESTINST3a("mult  $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1);
1042   TESTINST3a("mult  $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1);
1043
1044   printf("MULTU\n");
1045   TESTINST3a("multu  $t0, $t1", 0x31415927, 0xffffffff, t0, t1);
1046   TESTINST3a("multu  $t0, $t1", 0x31415927, 0xee00ee00, t0, t1);
1047   TESTINST3a("multu  $t0, $t1", 0,          255,        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,          0,          t0, t1);
1051   TESTINST3a("multu  $t0, $t1", 0x80000000, -1,         t0, t1);
1052   TESTINST3a("multu  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
1053   TESTINST3a("multu  $t0, $t1", 0x7fffffff, 0,          t0, t1);
1054   TESTINST3a("multu  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
1055   TESTINST3a("multu  $t0, $t1", 0x7fffffff, 0x80000000, t0, t1);
1056   TESTINST3a("multu  $t0, $t1", 0x80000000, 0xff000000, t0, t1);
1057   TESTINST3a("multu  $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1);
1058   TESTINST3a("multu  $t0, $t1", 0x31415927, 0xffffffff, t0, t1);
1059   TESTINST3a("multu  $t0, $t1", 0x31415927, 0xee00ee00, t0, t1);
1060   TESTINST3a("multu  $t0, $t1", 0,          255,        t0, t1);
1061   TESTINST3a("multu  $t0, $t1", 1,          0,          t0, t1);
1062   TESTINST3a("multu  $t0, $t1", 0,          1,          t0, t1);
1063   TESTINST3a("multu  $t0, $t1", -1,         0,          t0, t1);
1064   TESTINST3a("multu  $t0, $t1", 0,          -1,         t0, t1);
1065   TESTINST3a("multu  $t0, $t1", 0,          0x80000000, t0, t1);
1066   TESTINST3a("multu  $t0, $t1", 0x80000000, 0,          t0, t1);
1067   TESTINST3a("multu  $t0, $t1", 0x80000000, 0x80000000, t0, t1);
1068   TESTINST3a("multu  $t0, $t1", 0x7fffffff, 0x80000000, t0, t1);
1069   TESTINST3a("multu  $t0, $t1", 0x80000000, 0xff000000, t0, t1);
1070   TESTINST3a("multu  $t0, $t1", 0x7fffffff, 0x0dd00000, t0, t1);
1071   TESTINST3a("multu  $t0, $t1", 0xffffffff, 0,          t0, t1);
1072   TESTINST3a("multu  $t0, $t1", 0,          0xffffffff, t0, t1);
1073   TESTINST3a("multu  $t0, $t1", 0xffffffff, 0xffffffff, t0, t1);
1074   TESTINST3a("multu  $t0, $t1", 0x7fffffff, 0x7fffffff, t0, t1);
1075   TESTINST3a("multu  $t0, $t1", 0x0000ffff, 0x0000ffff, t0, t1);
1076
1077   printf("NOR\n");
1078   TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1079   TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1080   TESTINST1("nor $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1084   TESTINST1("nor $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1085   TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1086   TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1087   TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1088   TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1089   TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1090   TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1091   TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1092   TESTINST1("nor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1093   TESTINST1("nor $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1094   TESTINST1("nor $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1095   TESTINST1("nor $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1096   TESTINST1("nor $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1097   TESTINST1("nor $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1098   TESTINST1("nor $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1099   TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1100   TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1101   TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1102   TESTINST1("nor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1103   TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1104   TESTINST1("nor $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1105   TESTINST1("nor $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1106   TESTINST1("nor $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1107   TESTINST1("nor $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1108   TESTINST1("nor $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1109
1110#if (__mips==32) && (__mips_isa_rev>=2)
1111   printf("WSBH\n");
1112   TESTINST3("wsbh  $t0, $t1", 0x2, t0, t1);
1113   TESTINST3("wsbh  $t0, $t1", 0x28, t0, t1);
1114   TESTINST3("wsbh  $t0, $t1", -258, t0, t1);
1115   TESTINST3("wsbh  $t0, $t1", 0x7fffffff, t0, t1);
1116   TESTINST3("wsbh  $t0, $t1", -11, t0, t1);
1117   TESTINST3("wsbh  $t0, $t1", 0xffffffff, t0, t1);
1118   TESTINST3("wsbh  $t0, $t1", 0x16, t0, t1);
1119   TESTINST3("wsbh  $t0, $t1", -1, t0, t1);
1120#endif
1121
1122   printf("NOT\n");
1123   TESTINST3("not  $t0, $t1", 0x2, t0, t1);
1124   TESTINST3("not  $t0, $t1", 0x28, t0, t1);
1125   TESTINST3("not  $t0, $t1", -258, t0, t1);
1126   TESTINST3("not  $t0, $t1", 0x7fffffff, t0, t1);
1127   TESTINST3("not  $t0, $t1", -11, t0, t1);
1128   TESTINST3("not  $t0, $t1", 0xffffffff, t0, t1);
1129   TESTINST3("not  $t0, $t1", 0x16, t0, t1);
1130   TESTINST3("not  $t0, $t1", -1, t0, t1);
1131
1132   printf("NEGU\n");
1133   TESTINST3("negu  $t0, $t1", 0x2, t0, t1);
1134   TESTINST3("negu  $t0, $t1", 0x28, t0, t1);
1135   TESTINST3("negu  $t0, $t1", -258, t0, t1);
1136   TESTINST3("negu  $t0, $t1", 0x7fffffff, t0, t1);
1137   TESTINST3("negu  $t0, $t1", -11, t0, t1);
1138   TESTINST3("negu  $t0, $t1", 0xffffffff, t0, t1);
1139   TESTINST3("negu  $t0, $t1", 0x16, t0, t1);
1140   TESTINST3("negu  $t0, $t1", -1, t0, t1);
1141
1142   printf("OR\n");
1143   TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1144   TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1145   TESTINST1("or $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1149   TESTINST1("or $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1150   TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1151   TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1152   TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1153   TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1154   TESTINST1("or $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1155   TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1156   TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1157   TESTINST1("or $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1158   TESTINST1("or $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1159   TESTINST1("or $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1160   TESTINST1("or $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1161   TESTINST1("or $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1162   TESTINST1("or $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1163   TESTINST1("or $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1164   TESTINST1("or $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1165   TESTINST1("or $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1166   TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1167   TESTINST1("or $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1168   TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1169   TESTINST1("or $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1170   TESTINST1("or $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1171   TESTINST1("or $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1172   TESTINST1("or $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1173   TESTINST1("or $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1174
1175   printf("ORI\n");
1176   TESTINST2("ori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1);
1177   TESTINST2("ori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1);
1178   TESTINST2("ori $t0, $t1, 255", 0,          255,        t0, t1);
1179   TESTINST2("ori $t0, $t1, 0", -1,         0,          t0, t1);
1180   TESTINST2("ori $t0, $t1, 1", 0,          1,          t0, t1);
1181   TESTINST2("ori $t0, $t1, 0", 0,          0,          t0, t1);
1182   TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1);
1183   TESTINST2("ori $t0, $t1, 0", 0x7fffffff, 0,          t0, t1);
1184   TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1);
1185   TESTINST2("ori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1);
1186   TESTINST2("ori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1);
1187   TESTINST2("ori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1);
1188   TESTINST2("ori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1);
1189   TESTINST2("ori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1);
1190   TESTINST2("ori $t0, $t1, 255", 0,          255,        t0, t1);
1191   TESTINST2("ori $t0, $t1, 0", 1,          0,          t0, t1);
1192   TESTINST2("ori $t0, $t1, 1", 0,          1,          t0, t1);
1193   TESTINST2("ori $t0, $t1, 0", -1,         0,          t0, t1);
1194   TESTINST2("ori $t0, $t1, 0x8000", 0,          0x8000, t0, t1);
1195   TESTINST2("ori $t0, $t1, 0", 0x8000, 0,          t0, t1);
1196   TESTINST2("ori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1);
1197   TESTINST2("ori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1);
1198   TESTINST2("ori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1);
1199   TESTINST2("ori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1);
1200   TESTINST2("ori $t0, $t1, 0", 0xffff, 0,          t0, t1);
1201   TESTINST2("ori $t0, $t1, 0xffff", 0,          0xffff, t0, t1);
1202   TESTINST2("ori $t0, $t1, 0xffff", 0xffffffff, 0xffff, t0, t1);
1203   TESTINST2("ori $t0, $t1, 0x7fff", 0x7fffffff, 0x7fff, t0, t1);
1204   TESTINST2("ori $t0, $t1, 0x0000", 0x0000ffff, 0x0000, t0, t1);
1205
1206#if (__mips==32) && (__mips_isa_rev>=2)
1207   printf("ROTR\n");
1208   TESTINST2("rotr $t0, $t1, 0x00000000", 0x31415927, 0x00000000, t0, t1);
1209   TESTINST2("rotr $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1);
1210   TESTINST2("rotr $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1);
1211   TESTINST2("rotr $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1);
1212   TESTINST2("rotr $t0, $t1, 0x00000010", 0x31415927, 0x00000010, t0, t1);
1213   TESTINST2("rotr $t0, $t1, 0x0000001F", 0x31415927, 0x0000001F, t0, t1);
1214   TESTINST2("rotr $t0, $t1, 0x00000020", 0x31415927, 0x00000020, t0, t1);
1215   TESTINST2("rotr $t0, $t1, 0x00000021", 0x31415927, 0x00000021, t0, t1);
1216   TESTINST2("rotr $t0, $t1, 0x00000000", 0x00088000, 0x00000000, t0, t1);
1217   TESTINST2("rotr $t0, $t1, 0x00000001", 0x00088000, 0x00000001, t0, t1);
1218   TESTINST2("rotr $t0, $t1, 31", 0x00088000, 31, t0, t1);
1219   TESTINST2("rotr $t0, $t1, 16", 0x00010000, 16, t0, t1);
1220   TESTINST2("rotr $t0, $t1, 17", 0x00010000, 17, t0, t1);
1221   TESTINST2("rotr $t0, $t1, 18", 0x00010000, 18, t0, t1);
1222   TESTINST2("rotr $t0, $t1, 0", 0, 0, t0, t1);
1223   TESTINST2("rotr $t0, $t1, 0xffff", 0xffff, 0xffff, t0, t1);
1224#endif
1225
1226#if (__mips==32) && (__mips_isa_rev>=2)
1227   printf("ROTRV\n");
1228   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1229   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1230   TESTINST1("rotrv $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1234   TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1235   TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1236   TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1237   TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1238   TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1239   TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1240   TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1241   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1242   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1243   TESTINST1("rotrv $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1244   TESTINST1("rotrv $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1245   TESTINST1("rotrv $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1246   TESTINST1("rotrv $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1247   TESTINST1("rotrv $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1248   TESTINST1("rotrv $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1249   TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1250   TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1251   TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1252   TESTINST1("rotrv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1253   TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1254   TESTINST1("rotrv $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1255   TESTINST1("rotrv $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1256   TESTINST1("rotrv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1257   TESTINST1("rotrv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1258   TESTINST1("rotrv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1259   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2);
1260   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2);
1261   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2);
1262   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2);
1263   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2);
1264   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2);
1265   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2);
1266   TESTINST1("rotrv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2);
1267   TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2);
1268   TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2);
1269   TESTINST1("rotrv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2);
1270   TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2);
1271   TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2);
1272   TESTINST1("rotrv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2);
1273   TESTINST1("rotrv $t0, $t1, $t2", 0, 0, t0, t1, t2);
1274   TESTINST1("rotrv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2);
1275
1276   printf("SEB\n");
1277   TESTINST3("seb  $t0, $t1", 0x2, t0, t1);
1278   TESTINST3("seb  $t0, $t1", 0x28, t0, t1);
1279   TESTINST3("seb  $t0, $t1", -258, t0, t1);
1280   TESTINST3("seb  $t0, $t1", 0x7fffffff, t0, t1);
1281   TESTINST3("seb  $t0, $t1", -11, t0, t1);
1282   TESTINST3("seb  $t0, $t1", 0xffffffff, t0, t1);
1283   TESTINST3("seb  $t0, $t1", 0x16, t0, t1);
1284   TESTINST3("seb  $t0, $t1", -1, t0, t1);
1285
1286   printf("SEH\n");
1287   TESTINST3("seh  $t0, $t1", 0x2, t0, t1);
1288   TESTINST3("seh  $t0, $t1", 0x28, t0, t1);
1289   TESTINST3("seh  $t0, $t1", -258, t0, t1);
1290   TESTINST3("seh  $t0, $t1", 0x7fffffff, t0, t1);
1291   TESTINST3("seh  $t0, $t1", -11, t0, t1);
1292   TESTINST3("seh  $t0, $t1", 0xffffffff, t0, t1);
1293   TESTINST3("seh  $t0, $t1", 0x16, t0, t1);
1294   TESTINST3("seh  $t0, $t1", -1, t0, t1);
1295#endif
1296
1297   printf("SLL\n");
1298   TESTINST2("sll $t0, $t1, 0x00000000", 0x31415927, 0x00000000, t0, t1);
1299   TESTINST2("sll $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1);
1300   TESTINST2("sll $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1);
1301   TESTINST2("sll $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1);
1302   TESTINST2("sll $t0, $t1, 0x00000010", 0x31415927, 0x00000010, t0, t1);
1303   TESTINST2("sll $t0, $t1, 0x0000001F", 0x31415927, 0x0000001F, t0, t1);
1304   TESTINST2("sll $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1);
1305   TESTINST2("sll $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1);
1306   TESTINST2("sll $t0, $t1, 0x00000000", 0x00088000, 0x00000000, t0, t1);
1307   TESTINST2("sll $t0, $t1, 0x00000001", 0x00088000, 0x00000001, t0, t1);
1308   TESTINST2("sll $t0, $t1, 31", 0x00088000, 31, t0, t1);
1309   TESTINST2("sll $t0, $t1, 16", 0x00010000, 16, t0, t1);
1310   TESTINST2("sll $t0, $t1, 17", 0x00010000, 17, t0, t1);
1311   TESTINST2("sll $t0, $t1, 18", 0x00010000, 18, t0, t1);
1312   TESTINST2("sll $t0, $t1, 0", 0, 0, t0, t1);
1313
1314   printf("SLLV\n");
1315   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1316   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1317   TESTINST1("sllv $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1321   TESTINST1("sllv $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1322   TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1323   TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1324   TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1325   TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1326   TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1327   TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1328   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1329   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1330   TESTINST1("sllv $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1331   TESTINST1("sllv $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1332   TESTINST1("sllv $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1333   TESTINST1("sllv $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1334   TESTINST1("sllv $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1335   TESTINST1("sllv $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1336   TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1337   TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1338   TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1339   TESTINST1("sllv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1340   TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1341   TESTINST1("sllv $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1342   TESTINST1("sllv $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1343   TESTINST1("sllv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1344   TESTINST1("sllv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1345   TESTINST1("sllv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1346   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2);
1347   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2);
1348   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2);
1349   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2);
1350   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2);
1351   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2);
1352   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2);
1353   TESTINST1("sllv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2);
1354   TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2);
1355   TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2);
1356   TESTINST1("sllv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2);
1357   TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2);
1358   TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2);
1359   TESTINST1("sllv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2);
1360   TESTINST1("sllv $t0, $t1, $t2", 0, 0, t0, t1, t2);
1361   TESTINST1("sllv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2);
1362
1363   printf("SLT\n");
1364   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1365   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1366   TESTINST1("slt $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1370   TESTINST1("slt $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1371   TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1372   TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1373   TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1374   TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1375   TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1376   TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1377   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1378   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1379   TESTINST1("slt $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1380   TESTINST1("slt $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1381   TESTINST1("slt $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1382   TESTINST1("slt $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1383   TESTINST1("slt $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1384   TESTINST1("slt $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1385   TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1386   TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1387   TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1388   TESTINST1("slt $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1389   TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1390   TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1391   TESTINST1("slt $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1392   TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1393   TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1394   TESTINST1("slt $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1395   TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1396   TESTINST1("slt $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1397   TESTINST1("slt $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1398   TESTINST1("slt $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1399   TESTINST1("slt $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1400   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2);
1401   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2);
1402   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2);
1403   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2);
1404   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2);
1405   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2);
1406   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2);
1407   TESTINST1("slt $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2);
1408   TESTINST1("slt $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2);
1409   TESTINST1("slt $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2);
1410   TESTINST1("slt $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2);
1411   TESTINST1("slt $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2);
1412   TESTINST1("slt $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2);
1413   TESTINST1("slt $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2);
1414   TESTINST1("slt $t0, $t1, $t2", 0, 0, t0, t1, t2);
1415   TESTINST1("slt $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2);
1416
1417   printf("SLTI\n");
1418   TESTINST2("slti $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1);
1419   TESTINST2("slti $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1);
1420   TESTINST2("slti $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1);
1421   TESTINST2("slti $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1);
1422   TESTINST2("slti $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1);
1423   TESTINST2("slti $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1);
1424   TESTINST2("slti $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1);
1425   TESTINST2("slti $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1);
1426   TESTINST2("slti $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1);
1427   TESTINST2("slti $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1);
1428   TESTINST2("slti $t0, $t1, 31", 0x00088000, 31, t0, t1);
1429   TESTINST2("slti $t0, $t1, 16", 0x00010000, 16, t0, t1);
1430   TESTINST2("slti $t0, $t1, 17", 0x00010000, 17, t0, t1);
1431   TESTINST2("slti $t0, $t1, 18", 0x00010000, 18, t0, t1);
1432   TESTINST2("slti $t0, $t1, 0", 0, 0, t0, t1);
1433
1434   printf("SLTIU\n");
1435   TESTINST2("sltiu $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1);
1436   TESTINST2("sltiu $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1);
1437   TESTINST2("sltiu $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1);
1438   TESTINST2("sltiu $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1);
1439   TESTINST2("sltiu $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1);
1440   TESTINST2("sltiu $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1);
1441   TESTINST2("sltiu $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1);
1442   TESTINST2("sltiu $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1);
1443   TESTINST2("sltiu $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1);
1444   TESTINST2("sltiu $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1);
1445   TESTINST2("sltiu $t0, $t1, 31", 0x00088000, 31, t0, t1);
1446   TESTINST2("sltiu $t0, $t1, 16", 0x00010000, 16, t0, t1);
1447   TESTINST2("sltiu $t0, $t1, 17", 0x00010000, 17, t0, t1);
1448   TESTINST2("sltiu $t0, $t1, 18", 0x00010000, 18, t0, t1);
1449   TESTINST2("sltiu $t0, $t1, 0", 0, 0, t0, t1);
1450
1451   printf("SLTU\n");
1452   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1453   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1454   TESTINST1("sltu $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1458   TESTINST1("sltu $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1459   TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1460   TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1461   TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1462   TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1463   TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1464   TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1465   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1466   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1467   TESTINST1("sltu $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1468   TESTINST1("sltu $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1469   TESTINST1("sltu $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1470   TESTINST1("sltu $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1471   TESTINST1("sltu $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1472   TESTINST1("sltu $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1473   TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1474   TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1475   TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1476   TESTINST1("sltu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1477   TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1478   TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1479   TESTINST1("sltu $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1480   TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1481   TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1482   TESTINST1("sltu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1483   TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1484   TESTINST1("sltu $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1485   TESTINST1("sltu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1486   TESTINST1("sltu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1487   TESTINST1("sltu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1488   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2);
1489   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2);
1490   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2);
1491   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2);
1492   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2);
1493   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2);
1494   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2);
1495   TESTINST1("sltu $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2);
1496   TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2);
1497   TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2);
1498   TESTINST1("sltu $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2);
1499   TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2);
1500   TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2);
1501   TESTINST1("sltu $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2);
1502   TESTINST1("sltu $t0, $t1, $t2", 0, 0, t0, t1, t2);
1503   TESTINST1("sltu $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2);
1504
1505   printf("SRA\n");
1506   TESTINST2("sra $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1);
1507   TESTINST2("sra $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1);
1508   TESTINST2("sra $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1);
1509   TESTINST2("sra $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1);
1510   TESTINST2("sra $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1);
1511   TESTINST2("sra $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1);
1512   TESTINST2("sra $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1);
1513   TESTINST2("sra $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1);
1514   TESTINST2("sra $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1);
1515   TESTINST2("sra $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1);
1516   TESTINST2("sra $t0, $t1, 31", 0x00088000, 31, t0, t1);
1517   TESTINST2("sra $t0, $t1, 16", 0x00010000, 16, t0, t1);
1518   TESTINST2("sra $t0, $t1, 17", 0x00010000, 17, t0, t1);
1519   TESTINST2("sra $t0, $t1, 18", 0x00010000, 18, t0, t1);
1520   TESTINST2("sra $t0, $t1, 0", 0, 0, t0, t1);
1521
1522   printf("SRAV\n");
1523   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1524   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1525   TESTINST1("srav $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1529   TESTINST1("srav $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1530   TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1531   TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1532   TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1533   TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1534   TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1535   TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1536   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1537   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1538   TESTINST1("srav $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1539   TESTINST1("srav $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1540   TESTINST1("srav $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1541   TESTINST1("srav $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1542   TESTINST1("srav $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1543   TESTINST1("srav $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1544   TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1545   TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1546   TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1547   TESTINST1("srav $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1548   TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1549   TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1550   TESTINST1("srav $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1551   TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1552   TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1553   TESTINST1("srav $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1554   TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1555   TESTINST1("srav $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1556   TESTINST1("srav $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1557   TESTINST1("srav $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1558   TESTINST1("srav $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1559   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2);
1560   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2);
1561   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2);
1562   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2);
1563   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2);
1564   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2);
1565   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2);
1566   TESTINST1("srav $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2);
1567   TESTINST1("srav $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2);
1568   TESTINST1("srav $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2);
1569   TESTINST1("srav $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2);
1570   TESTINST1("srav $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2);
1571   TESTINST1("srav $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2);
1572   TESTINST1("srav $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2);
1573   TESTINST1("srav $t0, $t1, $t2", 0, 0, t0, t1, t2);
1574   TESTINST1("srav $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2);
1575
1576   printf("SRL\n");
1577   TESTINST2("srl $t0, $t1, 0x00000000", 0x00000001, 0x31415927, t0, t1);
1578   TESTINST2("srl $t0, $t1, 0x00000001", 0x31415927, 0x00000001, t0, t1);
1579   TESTINST2("srl $t0, $t1, 0x00000002", 0x31415927, 0x00000002, t0, t1);
1580   TESTINST2("srl $t0, $t1, 0x0000000F", 0x31415927, 0x0000000F, t0, t1);
1581   TESTINST2("srl $t0, $t1, 0x00000010", 0x00000010, 0x00000010, t0, t1);
1582   TESTINST2("srl $t0, $t1, 0x0000001F", 0x00000010, 0x31415927, t0, t1);
1583   TESTINST2("srl $t0, $t1, 0x00000009", 0x31415927, 0x00000009, t0, t1);
1584   TESTINST2("srl $t0, $t1, 0x0000000A", 0x31415927, 0x0000000A, t0, t1);
1585   TESTINST2("srl $t0, $t1, 0x00000000", 0x00088000, 0x0000000A, t0, t1);
1586   TESTINST2("srl $t0, $t1, 0x00000001", 0x00000000, 0x00000001, t0, t1);
1587   TESTINST2("srl $t0, $t1, 31", 0x00088000, 31, t0, t1);
1588   TESTINST2("srl $t0, $t1, 16", 0x00010000, 16, t0, t1);
1589   TESTINST2("srl $t0, $t1, 17", 0x00010000, 17, t0, t1);
1590   TESTINST2("srl $t0, $t1, 18", 0x00010000, 18, t0, t1);
1591   TESTINST2("srl $t0, $t1, 0", 0, 0, t0, t1);
1592
1593   printf("SRLV\n");
1594   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1595   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1596   TESTINST1("srlv $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1600   TESTINST1("srlv $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1601   TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1602   TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1603   TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1604   TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1605   TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1606   TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1607   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1608   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1609   TESTINST1("srlv $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1610   TESTINST1("srlv $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1611   TESTINST1("srlv $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1612   TESTINST1("srlv $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1613   TESTINST1("srlv $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1614   TESTINST1("srlv $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1615   TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1616   TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1617   TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1618   TESTINST1("srlv $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1619   TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1620   TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1621   TESTINST1("srlv $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1622   TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1623   TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1624   TESTINST1("srlv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1625   TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1626   TESTINST1("srlv $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1627   TESTINST1("srlv $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1628   TESTINST1("srlv $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1629   TESTINST1("srlv $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1630   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2);
1631   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2);
1632   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2);
1633   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2);
1634   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2);
1635   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2);
1636   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2);
1637   TESTINST1("srlv $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2);
1638   TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2);
1639   TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2);
1640   TESTINST1("srlv $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2);
1641   TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2);
1642   TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2);
1643   TESTINST1("srlv $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2);
1644   TESTINST1("srlv $t0, $t1, $t2", 0, 0, t0, t1, t2);
1645   TESTINST1("srlv $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2);
1646
1647   printf("SUBU\n");
1648   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2);
1649   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00001110, t0, t1, t2);
1650   TESTINST1("subu $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1654   TESTINST1("subu $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1655   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1656   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1657   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1658   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1659   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1660   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1661   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1662   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1663   TESTINST1("subu $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1664   TESTINST1("subu $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1665   TESTINST1("subu $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1666   TESTINST1("subu $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1667   TESTINST1("subu $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1668   TESTINST1("subu $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1669   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1670   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1671   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1672   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1673   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1674   TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1675   TESTINST1("subu $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1676   TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1677   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1678   TESTINST1("subu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1679   TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1680   TESTINST1("subu $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1681   TESTINST1("subu $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1682   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1683   TESTINST1("subu $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1684   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000000, t0, t1, t2);
1685   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000001, t0, t1, t2);
1686   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000002, t0, t1, t2);
1687   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x0000000F, t0, t1, t2);
1688   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000010, t0, t1, t2);
1689   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x0000001F, t0, t1, t2);
1690   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000020, t0, t1, t2);
1691   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x00000021, t0, t1, t2);
1692   TESTINST1("subu $t0, $t1, $t2", 0x00088000, 0x00000000, t0, t1, t2);
1693   TESTINST1("subu $t0, $t1, $t2", 0x00088000, 0x00000001, t0, t1, t2);
1694   TESTINST1("subu $t0, $t1, $t2", 0x00088000, 31, t0, t1, t2);
1695   TESTINST1("subu $t0, $t1, $t2", 0x00010000, 16, t0, t1, t2);
1696   TESTINST1("subu $t0, $t1, $t2", 0x00010000, 17, t0, t1, t2);
1697   TESTINST1("subu $t0, $t1, $t2", 0x00010000, 18, t0, t1, t2);
1698   TESTINST1("subu $t0, $t1, $t2", 0, 0, t0, t1, t2);
1699   TESTINST1("subu $t0, $t1, $t2", 0xffff, 0xffff, t0, t1, t2);
1700
1701   printf("SUB\n");
1702   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1703   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x27181728, t0, t1, t2);
1704   TESTINST1("subu $t0, $t1, $t2", 0x31415927, 0x97181728, t0, t1, t2);
1705   TESTINST1("subu $t0, $t1, $t2", 0,          0,          t0, t1, t2);
1706   TESTINST1("subu $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1707   TESTINST1("subu $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1708   TESTINST1("subu $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1709   TESTINST1("subu $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1710   TESTINST1("subu $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1711   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1712   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1713   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1714   TESTINST1("subu $t0, $t1, $t2", 0x80000000, 0x7fffffff, t0, t1, t2);
1715   TESTINST1("subu $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1716
1717   printf("XOR\n");
1718   TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1719   TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1720   TESTINST1("xor $t0, $t1, $t2", 0,          255,        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,          0,          t0, t1, t2);
1724   TESTINST1("xor $t0, $t1, $t2", 0x80000000, -1,         t0, t1, t2);
1725   TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1726   TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0,          t0, t1, t2);
1727   TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1728   TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1729   TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1730   TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1731   TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xffffffff, t0, t1, t2);
1732   TESTINST1("xor $t0, $t1, $t2", 0x31415927, 0xee00ee00, t0, t1, t2);
1733   TESTINST1("xor $t0, $t1, $t2", 0,          255,        t0, t1, t2);
1734   TESTINST1("xor $t0, $t1, $t2", 1,          0,          t0, t1, t2);
1735   TESTINST1("xor $t0, $t1, $t2", 0,          1,          t0, t1, t2);
1736   TESTINST1("xor $t0, $t1, $t2", -1,         0,          t0, t1, t2);
1737   TESTINST1("xor $t0, $t1, $t2", 0,          -1,         t0, t1, t2);
1738   TESTINST1("xor $t0, $t1, $t2", 0,          0x80000000, t0, t1, t2);
1739   TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0,          t0, t1, t2);
1740   TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0x80000000, t0, t1, t2);
1741   TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x80000000, t0, t1, t2);
1742   TESTINST1("xor $t0, $t1, $t2", 0x80000000, 0xff000000, t0, t1, t2);
1743   TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x0dd00000, t0, t1, t2);
1744   TESTINST1("xor $t0, $t1, $t2", 0xffffffff, 0,          t0, t1, t2);
1745   TESTINST1("xor $t0, $t1, $t2", 0,          0xffffffff, t0, t1, t2);
1746   TESTINST1("xor $t0, $t1, $t2", 0xffffffff, 0xffffffff, t0, t1, t2);
1747   TESTINST1("xor $t0, $t1, $t2", 0x7fffffff, 0x7fffffff, t0, t1, t2);
1748   TESTINST1("xor $t0, $t1, $t2", 0x0000ffff, 0x0000ffff, t0, t1, t2);
1749
1750   printf("XORI\n");
1751   TESTINST2("xori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1);
1752   TESTINST2("xori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1);
1753   TESTINST2("xori $t0, $t1, 255", 0,          255,        t0, t1);
1754   TESTINST2("xori $t0, $t1, 0", -1,         0,          t0, t1);
1755   TESTINST2("xori $t0, $t1, 1", 0,          1,          t0, t1);
1756   TESTINST2("xori $t0, $t1, 0", 0,          0,          t0, t1);
1757   TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1);
1758   TESTINST2("xori $t0, $t1, 0", 0x7fffffff, 0,          t0, t1);
1759   TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1);
1760   TESTINST2("xori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1);
1761   TESTINST2("xori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1);
1762   TESTINST2("xori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1);
1763   TESTINST2("xori $t0, $t1, 0xffff", 0x31415927, 0xffff, t0, t1);
1764   TESTINST2("xori $t0, $t1, 0xee00", 0x31415927, 0xee00, t0, t1);
1765   TESTINST2("xori $t0, $t1, 255", 0,          255,        t0, t1);
1766   TESTINST2("xori $t0, $t1, 0", 1,          0,          t0, t1);
1767   TESTINST2("xori $t0, $t1, 1", 0,          1,          t0, t1);
1768   TESTINST2("xori $t0, $t1, 0", -1,         0,          t0, t1);
1769   TESTINST2("xori $t0, $t1, 0x8000", 0,          0x8000, t0, t1);
1770   TESTINST2("xori $t0, $t1, 0", 0x8000, 0,          t0, t1);
1771   TESTINST2("xori $t0, $t1, 0x8000", 0x80000000, 0x8000, t0, t1);
1772   TESTINST2("xori $t0, $t1, 0x8000", 0x7fffffff, 0x8000, t0, t1);
1773   TESTINST2("xori $t0, $t1, 0xff00", 0x80000000, 0xff00, t0, t1);
1774   TESTINST2("xori $t0, $t1, 0x0dd0", 0x7fffffff, 0x0dd0, t0, t1);
1775   TESTINST2("xori $t0, $t1, 0", 0xffff, 0,          t0, t1);
1776   TESTINST2("xori $t0, $t1, 0xffff", 0,          0xffff, t0, t1);
1777   TESTINST2("xori $t0, $t1, 0xffff", 0xffffffff, 0xffff, t0, t1);
1778   TESTINST2("xori $t0, $t1, 0x7fff", 0x7fffffff, 0x7fff, t0, t1);
1779   TESTINST2("xori $t0, $t1, 0x0000", 0x0000ffff, 0x0000, t0, t1);
1780
1781   printf("MFHI MFLO\n");
1782   TESTINSN_HILO(0x31415927);
1783   TESTINSN_HILO(0);
1784   TESTINSN_HILO(-1);
1785   TESTINSN_HILO(0xffffffff);
1786   TESTINSN_HILO(0x8000);
1787   TESTINSN_HILO(0x80000000);
1788   TESTINSN_HILO(0x0000ffff);
1789   TESTINSN_HILO(0x7fff);
1790   TESTINSN_HILO(0x0dd0);
1791   TESTINSN_HILO(0xff00);
1792
1793   return 0;
1794}
1795