1
2/* How to compile:
3   gcc -g -Wall -mcpu=cortex-a8 -o v6mediaA -marm none/tests/arm/v6media.c
4   or
5   gcc -g -Wall -mcpu=cortex-a8 -o v6mediaT -mthumb none/tests/arm/v6media.c
6*/
7
8#include <stdio.h>
9
10static int gen_cin(cin)
11{
12  int r = ((cin & 1) ? (1<<29) : 0);
13  //r |= (1 << 31) | (1 << 30);
14  return r;
15}
16
17/* test macros to generate and output the result of a single instruction */
18#define TESTINST2(instruction, RMval, RD, RM, carryin) \
19{ \
20  unsigned int out;   \
21  unsigned int cpsr;  \
22\
23  __asm__ volatile(   \
24    "msr  cpsr_fs, %3;"  \
25    "mov " #RM ",%2;"         \
26                /* set #RD to 0x55555555 so we can see which parts get overwritten */ \
27                "mov " #RD ", #0x55" "\n\t" \
28                "orr " #RD "," #RD "," #RD ", LSL #8" "\n\t"  \
29                "orr " #RD "," #RD "," #RD ", LSL #16" "\n\t" \
30    instruction ";"    \
31    "mov %0," #RD ";"  \
32    "mrs %1,cpsr;"     \
33    : "=&r" (out), "=&r" (cpsr)  \
34    : "r" (RMval), "r" (gen_cin(carryin))       \
35    : #RD, #RM, "cc", "memory"   \
36  ); \
37  printf("%s :: rd 0x%08x rm 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \
38    instruction, out, RMval,      \
39    carryin ? 1 : 0,     \
40    cpsr & 0xffff0000,            \
41    ((1<<31) & cpsr) ? 'N' : ' ', \
42    ((1<<30) & cpsr) ? 'Z' : ' ', \
43    ((1<<29) & cpsr) ? 'C' : ' ', \
44    ((1<<28) & cpsr) ? 'V' : ' ', \
45    ((1<<27) & cpsr) ? 'Q' : ' ', \
46    (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \
47  ); \
48}
49
50#define TESTINST3(instruction, RMval, RNval, RD, RM, RN, carryin) \
51{ \
52  unsigned int out;  \
53  unsigned int cpsr; \
54\
55  __asm__ volatile(  \
56    "msr  cpsr_fs, %4;"  \
57    "mov " #RM ",%2;"  \
58    "mov " #RN ",%3;"  \
59    instruction ";"    \
60    "mov %0," #RD ";"  \
61    "mrs %1,cpsr;"     \
62    : "=&r" (out), "=&r" (cpsr)               \
63    : "r" (RMval), "r" (RNval), "r" (gen_cin(carryin))   \
64    : #RD, #RM, #RN, "cc", "memory"           \
65  ); \
66  printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \
67    instruction, out, RMval, RNval, \
68    carryin ? 1 : 0,  \
69    cpsr & 0xffff0000, \
70    ((1<<31) & cpsr) ? 'N' : ' ', \
71    ((1<<30) & cpsr) ? 'Z' : ' ', \
72    ((1<<29) & cpsr) ? 'C' : ' ', \
73    ((1<<28) & cpsr) ? 'V' : ' ', \
74    ((1<<27) & cpsr) ? 'Q' : ' ', \
75    (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \
76  ); \
77}
78
79#define TESTINST4(instruction, RMval, RNval, RSval, RD, RM, RN, RS, carryin) \
80{ \
81  unsigned int out;  \
82  unsigned int cpsr; \
83\
84  __asm__ volatile( \
85    "msr  cpsr_fs, %5;"  \
86    "mov " #RM ",%2;"  \
87    "mov " #RN ",%3;"  \
88    "mov " #RS ",%4;"  \
89    instruction ";"    \
90    "mov %0," #RD ";"  \
91    "mrs %1,cpsr;"     \
92    : "=&r" (out), "=&r" (cpsr) \
93    : "r" (RMval), "r" (RNval), "r" (RSval), "r" (gen_cin(carryin))  \
94    : #RD, #RM, #RN, #RS, "cc", "memory" \
95  ); \
96  printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \
97    instruction, out, RMval, RNval, RSval, \
98    carryin ? 1 : 0,   \
99    cpsr & 0xffff0000, \
100    ((1<<31) & cpsr) ? 'N' : ' ', \
101    ((1<<30) & cpsr) ? 'Z' : ' ', \
102    ((1<<29) & cpsr) ? 'C' : ' ', \
103    ((1<<28) & cpsr) ? 'V' : ' ', \
104    ((1<<27) & cpsr) ? 'Q' : ' ', \
105    (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \
106  ); \
107}
108
109#define TESTINST4_2OUT(instruction, RDval, RD2val, RMval, RSval, RD, RD2, RM, RS, carryin) \
110{ \
111  unsigned int out;  \
112  unsigned int out2; \
113  unsigned int cpsr; \
114\
115  __asm__ volatile(  \
116    "msr  cpsr_fs, %7;"  \
117    "mov " #RD ",%3;"  \
118    "mov " #RD2 ",%4;" \
119    "mov " #RM ",%5;"  \
120    "mov " #RS ",%6;"  \
121    instruction ";"    \
122    "mov %0," #RD ";"  \
123    "mov %1," #RD2 ";" \
124    "mrs %2,cpsr;"     \
125    : "=&r" (out), "=&r" (out2), "=&r" (cpsr)  \
126    : "r" (RDval), "r" (RD2val), "r" (RMval), "r" (RSval), "r" (gen_cin(carryin)) \
127    : #RD, #RD2, #RM, #RS, "cc", "memory"      \
128  ); \
129  printf("%s :: rd 0x%08x rd2 0x%08x, rm 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \
130    instruction, out, out2, RMval, RSval, \
131    carryin ? 1 : 0,   \
132    cpsr & 0xffff0000, \
133    ((1<<31) & cpsr) ? 'N' : ' ', \
134    ((1<<30) & cpsr) ? 'Z' : ' ', \
135    ((1<<29) & cpsr) ? 'C' : ' ', \
136    ((1<<28) & cpsr) ? 'V' : ' ', \
137    ((1<<27) & cpsr) ? 'Q' : ' ', \
138    (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \
139  ); \
140}
141
142/* helpers */
143#define TESTCARRY { int c = 0; for (c = 0; c < 2; c++) {
144#define TESTCARRYEND }}
145
146
147
148
149int main(int argc, char **argv)
150{
151  printf("MUL\n");
152  TESTINST3("mul  r0, r1, r2", 0,          0,          r0, r1, r2, 0);
153  TESTINST3("mul  r0, r1, r2", 0xffffffff, 0,          r0, r1, r2, 0);
154  TESTINST3("mul  r0, r1, r2", 0,          0xffffffff, r0, r1, r2, 0);
155  TESTINST3("mul  r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0);
156  TESTINST3("mul  r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0);
157  TESTINST3("mul  r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
158
159#if 0
160  printf("MULS\n");
161  TESTINST3("muls r0, r1, r2", 0, 0, r0, r1, r2, 0);
162  TESTINST3("muls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0);
163  TESTINST3("muls r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0);
164  TESTINST3("muls r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0);
165  TESTINST3("muls r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0);
166  TESTINST3("muls r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
167#endif
168
169  printf("MLA\n");
170  TESTINST4("mla  r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0);
171  TESTINST4("mla  r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0);
172  TESTINST4("mla  r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0);
173  TESTINST4("mla  r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
174  TESTINST4("mla  r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
175  TESTINST4("mla  r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
176
177#if 0
178  printf("MLAS\n");
179  TESTINST4("mlas r0, r1, r2, r3", 0,          0,          1, r0, r1, r2, r3, 0);
180  TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0,          1, r0, r1, r2, r3, 0);
181  TESTINST4("mlas r0, r1, r2, r3", 0,          0xffffffff, 1, r0, r1, r2, r3, 0);
182  TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
183  TESTINST4("mlas r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
184  TESTINST4("mlas r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
185#endif
186
187  printf("MLS\n");
188  TESTINST4("mls  r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0);
189  TESTINST4("mls  r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0);
190  TESTINST4("mls  r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0);
191  TESTINST4("mls  r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
192  TESTINST4("mls  r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
193  TESTINST4("mls  r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
194
195  printf("UMULL\n");
196  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
197  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
198  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
199  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
200  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
201  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
202#if 0
203  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
204  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
205  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
206  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
207  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
208  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
209#endif
210  printf("SMULL\n");
211  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
212  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
213  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
214  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
215  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
216  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
217#if 0
218  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
219  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
220  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
221  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
222  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
223  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
224#endif
225
226  printf("UMLAL\n");
227  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
228  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
229  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
230  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
231  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
232  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
233  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
234  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
235  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
236#if 0
237  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
238  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
239  TESTINST4_2OUT("umlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
240  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
241  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
242  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
243  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
244  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
245  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
246#endif
247
248  printf("SMLAL\n");
249  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
250  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
251  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
252  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
253  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
254  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
255  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
256  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
257  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
258#if 0
259  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
260  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
261  TESTINST4_2OUT("smlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
262  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
263  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
264  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
265  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
266  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
267  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
268#endif
269
270  printf("CLZ\n");
271  TESTCARRY
272  TESTINST2("clz  r0, r1", 0, r0, r1, c);
273  TESTINST2("clz  r0, r1", 1, r0, r1, c);
274  TESTINST2("clz  r0, r1", 0x10, r0, r1, c);
275  TESTINST2("clz  r0, r1", 0xffffffff, r0, r1, c);
276  TESTCARRYEND
277
278  printf("extend instructions\n");
279  TESTINST2("uxtb r0, r1", 0, r0, r1, 0);
280  TESTINST2("uxtb r0, r1", 1, r0, r1, 0);
281  TESTINST2("uxtb r0, r1", 0xff, r0, r1, 0);
282  TESTINST2("uxtb r0, r1", 0xffffffff, r0, r1, 0);
283  TESTINST2("sxtb r0, r1", 0, r0, r1, 0);
284  TESTINST2("sxtb r0, r1", 1, r0, r1, 0);
285  TESTINST2("sxtb r0, r1", 0xff, r0, r1, 0);
286  TESTINST2("sxtb r0, r1", 0xffffffff, r0, r1, 0);
287
288  TESTINST2("uxth r0, r1", 0, r0, r1, 0);
289  TESTINST2("uxth r0, r1", 1, r0, r1, 0);
290  TESTINST2("uxth r0, r1", 0xffff, r0, r1, 0);
291  TESTINST2("uxth r0, r1", 0xffffffff, r0, r1, 0);
292  TESTINST2("sxth r0, r1", 0, r0, r1, 0);
293  TESTINST2("sxth r0, r1", 1, r0, r1, 0);
294  TESTINST2("sxth r0, r1", 0x7fff, r0, r1, 0);
295  TESTINST2("sxth r0, r1", 0xffff, r0, r1, 0);
296  TESTINST2("sxth r0, r1", 0x10ffff, r0, r1, 0);
297  TESTINST2("sxth r0, r1", 0x107fff, r0, r1, 0);
298  TESTINST2("sxth r0, r1", 0xffffffff, r0, r1, 0);
299
300  TESTINST2("uxtb r0, r1, ror #0", 0x000000ff, r0, r1, 0);
301  TESTINST2("uxtb r0, r1, ror #8", 0x000000ff, r0, r1, 0);
302  TESTINST2("uxtb r0, r1, ror #8", 0x0000ff00, r0, r1, 0);
303  TESTINST2("uxtb r0, r1, ror #16", 0x00ff0000, r0, r1, 0);
304  TESTINST2("uxtb r0, r1, ror #24", 0xff000000, r0, r1, 0);
305
306  TESTINST2("uxtb16 r0, r1", 0xffffffff, r0, r1, 0);
307  TESTINST2("uxtb16 r0, r1, ror #16", 0x0000ffff, r0, r1, 0);
308  TESTINST2("sxtb16 r0, r1", 0xffffffff, r0, r1, 0);
309  TESTINST2("sxtb16 r0, r1", 0x00ff00ff, r0, r1, 0);
310  TESTINST2("sxtb16 r0, r1", 0x007f007f, r0, r1, 0);
311
312  printf("------------ BFI ------------\n");
313  /* bfi  rDst, rSrc, #lsb-in-dst, #number-of-bits-to-copy */
314  TESTINST2("bfi  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
315  TESTINST2("bfi  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
316  TESTINST2("bfi  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
317
318  TESTINST2("bfi  r0, r1, #19, #11", 0xFFFFFFFF, r0, r1, 0);
319  TESTINST2("bfi  r0, r1, #20, #11", 0xFFFFFFFF, r0, r1, 0);
320  TESTINST2("bfi  r0, r1, #21, #11", 0xFFFFFFFF, r0, r1, 0);
321
322  TESTINST2("bfi  r0, r1, #0, #32", 0xFFFFFFFF, r0, r1, 0);
323  TESTINST2("bfi  r0, r1, #1, #31", 0xFFFFFFFF, r0, r1, 0);
324
325  TESTINST2("bfi  r0, r1, #29, #3", 0xFFFFFFFF, r0, r1, 0);
326  TESTINST2("bfi  r0, r1, #30, #2", 0xFFFFFFFF, r0, r1, 0);
327  TESTINST2("bfi  r0, r1, #31, #1", 0xFFFFFFFF, r0, r1, 0);
328
329  printf("------------ BFC ------------\n");
330  /* bfi  rDst, #lsb-in-dst, #number-of-bits-to-copy */
331  TESTINST2("bfc  r0, #0, #11", 0xAAAAAAAA, r0, r1, 0);
332  TESTINST2("bfc  r0, #1, #11", 0xAAAAAAAA, r0, r1, 0);
333  TESTINST2("bfc  r0, #2, #11", 0xAAAAAAAA, r0, r1, 0);
334
335  TESTINST2("bfc  r0, #19, #11", 0xFFFFFFFF, r0, r1, 0);
336  TESTINST2("bfc  r0, #20, #11", 0xFFFFFFFF, r0, r1, 0);
337  TESTINST2("bfc  r0, #21, #11", 0xFFFFFFFF, r0, r1, 0);
338
339  TESTINST2("bfc  r0, #0, #32", 0xFFFFFFFF, r0, r1, 0);
340  TESTINST2("bfc  r0, #1, #31", 0xFFFFFFFF, r0, r1, 0);
341
342  TESTINST2("bfc  r0, #29, #3", 0xFFFFFFFF, r0, r1, 0);
343  TESTINST2("bfc  r0, #30, #2", 0xFFFFFFFF, r0, r1, 0);
344  TESTINST2("bfc  r0, #31, #1", 0xFFFFFFFF, r0, r1, 0);
345
346  printf("------------ SBFX ------------\n");
347  /* sbfx rDst, rSrc, #lsb, #width */
348  TESTINST2("sbfx  r0, r1, #0, #1", 0x00000000, r0, r1, 0);
349  TESTINST2("sbfx  r0, r1, #0, #1", 0x00000001, r0, r1, 0);
350  TESTINST2("sbfx  r0, r1, #1, #1", 0x00000000, r0, r1, 0);
351  TESTINST2("sbfx  r0, r1, #1, #1", 0x00000001, r0, r1, 0);
352  TESTINST2("sbfx  r0, r1, #1, #1", 0x00000002, r0, r1, 0);
353  TESTINST2("sbfx  r0, r1, #1, #1", 0x00000003, r0, r1, 0);
354
355  TESTINST2("sbfx  r0, r1, #0, #2", 0x00000000, r0, r1, 0);
356  TESTINST2("sbfx  r0, r1, #0, #2", 0x00000001, r0, r1, 0);
357  TESTINST2("sbfx  r0, r1, #1, #2", 0x00000000, r0, r1, 0);
358  TESTINST2("sbfx  r0, r1, #1, #2", 0x00000001, r0, r1, 0);
359  TESTINST2("sbfx  r0, r1, #1, #2", 0x00000002, r0, r1, 0);
360  TESTINST2("sbfx  r0, r1, #1, #2", 0x00000003, r0, r1, 0);
361
362  TESTINST2("sbfx  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
363  TESTINST2("sbfx  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
364  TESTINST2("sbfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
365  TESTINST2("sbfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
366  TESTINST2("sbfx  r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0);
367  TESTINST2("sbfx  r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0);
368
369  printf("------------ UBFX ------------\n");
370  /* ubfx rDst, rSrc, #lsb, #width */
371  TESTINST2("ubfx  r0, r1, #0, #1", 0x00000000, r0, r1, 0);
372  TESTINST2("ubfx  r0, r1, #0, #1", 0x00000001, r0, r1, 0);
373  TESTINST2("ubfx  r0, r1, #1, #1", 0x00000000, r0, r1, 0);
374  TESTINST2("ubfx  r0, r1, #1, #1", 0x00000001, r0, r1, 0);
375  TESTINST2("ubfx  r0, r1, #1, #1", 0x00000002, r0, r1, 0);
376  TESTINST2("ubfx  r0, r1, #1, #1", 0x00000003, r0, r1, 0);
377
378  TESTINST2("ubfx  r0, r1, #0, #2", 0x00000000, r0, r1, 0);
379  TESTINST2("ubfx  r0, r1, #0, #2", 0x00000001, r0, r1, 0);
380  TESTINST2("ubfx  r0, r1, #1, #2", 0x00000000, r0, r1, 0);
381  TESTINST2("ubfx  r0, r1, #1, #2", 0x00000001, r0, r1, 0);
382  TESTINST2("ubfx  r0, r1, #1, #2", 0x00000002, r0, r1, 0);
383  TESTINST2("ubfx  r0, r1, #1, #2", 0x00000003, r0, r1, 0);
384
385  TESTINST2("ubfx  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
386  TESTINST2("ubfx  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
387  TESTINST2("ubfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
388  TESTINST2("ubfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
389  TESTINST2("ubfx  r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0);
390  TESTINST2("ubfx  r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0);
391
392  printf("------------ SMUL{B,T}{B,T} ------------\n");
393  /* SMULbb rD, rN, rM */
394  TESTINST3("smulbb r0, r1, r2", 0x00030000, 0x00040000,  r0, r1, r2, 0);
395  TESTINST3("smulbb r0, r1, r2", 0x00030001, 0x00040002,  r0, r1, r2, 0);
396  TESTINST3("smulbb r0, r1, r2", 0x00038001, 0x00047fff,  r0, r1, r2, 0);
397  TESTINST3("smulbb r0, r1, r2", 0x00037fff, 0x00047fff,  r0, r1, r2, 0);
398  TESTINST3("smulbb r0, r1, r2", 0x0003ffff, 0x0004ffff,  r0, r1, r2, 0);
399TESTINST3("smulbb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
400TESTINST3("smulbb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
401TESTINST3("smulbb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
402TESTINST3("smulbb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
403TESTINST3("smulbb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
404TESTINST3("smulbb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
405TESTINST3("smulbb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
406TESTINST3("smulbb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
407TESTINST3("smulbb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
408TESTINST3("smulbb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
409TESTINST3("smulbb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
410TESTINST3("smulbb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
411TESTINST3("smulbb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
412TESTINST3("smulbb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
413TESTINST3("smulbb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
414TESTINST3("smulbb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
415TESTINST3("smulbb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
416TESTINST3("smulbb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
417TESTINST3("smulbb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
418TESTINST3("smulbb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
419TESTINST3("smulbb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
420TESTINST3("smulbb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
421TESTINST3("smulbb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
422TESTINST3("smulbb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
423TESTINST3("smulbb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
424TESTINST3("smulbb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
425TESTINST3("smulbb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
426TESTINST3("smulbb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
427TESTINST3("smulbb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
428TESTINST3("smulbb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
429TESTINST3("smulbb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
430TESTINST3("smulbb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
431TESTINST3("smulbb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
432TESTINST3("smulbb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
433TESTINST3("smulbb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
434TESTINST3("smulbb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
435TESTINST3("smulbb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
436TESTINST3("smulbb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
437TESTINST3("smulbb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
438TESTINST3("smulbb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
439TESTINST3("smulbb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
440TESTINST3("smulbb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
441TESTINST3("smulbb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
442TESTINST3("smulbb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
443TESTINST3("smulbb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
444TESTINST3("smulbb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
445TESTINST3("smulbb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
446TESTINST3("smulbb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
447TESTINST3("smulbb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
448TESTINST3("smulbb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
449  /* SMULtt rD, rN, rM */
450  TESTINST3("smultt r0, r1, r2", 0x00000003, 0x00000004,  r0, r1, r2, 0);
451  TESTINST3("smultt r0, r1, r2", 0x00010003, 0x00020004,  r0, r1, r2, 0);
452  TESTINST3("smultt r0, r1, r2", 0x80010003, 0x7fff0004,  r0, r1, r2, 0);
453  TESTINST3("smultt r0, r1, r2", 0x7fff0003, 0x7fff0004,  r0, r1, r2, 0);
454  TESTINST3("smultt r0, r1, r2", 0xffff0003, 0xffff0004,  r0, r1, r2, 0);
455TESTINST3("smultt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
456TESTINST3("smultt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
457TESTINST3("smultt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
458TESTINST3("smultt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
459TESTINST3("smultt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
460TESTINST3("smultt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
461TESTINST3("smultt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
462TESTINST3("smultt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
463TESTINST3("smultt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
464TESTINST3("smultt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
465TESTINST3("smultt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
466TESTINST3("smultt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
467TESTINST3("smultt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
468TESTINST3("smultt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
469TESTINST3("smultt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
470TESTINST3("smultt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
471TESTINST3("smultt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
472TESTINST3("smultt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
473TESTINST3("smultt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
474TESTINST3("smultt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
475TESTINST3("smultt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
476TESTINST3("smultt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
477TESTINST3("smultt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
478TESTINST3("smultt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
479TESTINST3("smultt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
480TESTINST3("smultt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
481TESTINST3("smultt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
482TESTINST3("smultt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
483TESTINST3("smultt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
484TESTINST3("smultt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
485TESTINST3("smultt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
486TESTINST3("smultt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
487TESTINST3("smultt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
488TESTINST3("smultt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
489TESTINST3("smultt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
490TESTINST3("smultt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
491TESTINST3("smultt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
492TESTINST3("smultt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
493TESTINST3("smultt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
494TESTINST3("smultt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
495TESTINST3("smultt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
496TESTINST3("smultt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
497TESTINST3("smultt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
498TESTINST3("smultt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
499TESTINST3("smultt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
500TESTINST3("smultt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
501TESTINST3("smultt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
502TESTINST3("smultt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
503TESTINST3("smultt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
504TESTINST3("smultt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
505  /* SMULtb rD, rN, rM */
506  TESTINST3("smultb r0, r1, r2", 0x00000003, 0x00040000,  r0, r1, r2, 0);
507  TESTINST3("smultb r0, r1, r2", 0x00010003, 0x00040002,  r0, r1, r2, 0);
508  TESTINST3("smultb r0, r1, r2", 0x80010003, 0x00047fff,  r0, r1, r2, 0);
509  TESTINST3("smultb r0, r1, r2", 0x7fff0003, 0x00047fff,  r0, r1, r2, 0);
510  TESTINST3("smultb r0, r1, r2", 0xffff0003, 0x0004ffff,  r0, r1, r2, 0);
511TESTINST3("smultb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
512TESTINST3("smultb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
513TESTINST3("smultb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
514TESTINST3("smultb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
515TESTINST3("smultb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
516TESTINST3("smultb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
517TESTINST3("smultb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
518TESTINST3("smultb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
519TESTINST3("smultb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
520TESTINST3("smultb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
521TESTINST3("smultb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
522TESTINST3("smultb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
523TESTINST3("smultb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
524TESTINST3("smultb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
525TESTINST3("smultb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
526TESTINST3("smultb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
527TESTINST3("smultb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
528TESTINST3("smultb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
529TESTINST3("smultb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
530TESTINST3("smultb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
531TESTINST3("smultb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
532TESTINST3("smultb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
533TESTINST3("smultb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
534TESTINST3("smultb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
535TESTINST3("smultb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
536TESTINST3("smultb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
537TESTINST3("smultb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
538TESTINST3("smultb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
539TESTINST3("smultb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
540TESTINST3("smultb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
541TESTINST3("smultb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
542TESTINST3("smultb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
543TESTINST3("smultb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
544TESTINST3("smultb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
545TESTINST3("smultb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
546TESTINST3("smultb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
547TESTINST3("smultb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
548TESTINST3("smultb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
549TESTINST3("smultb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
550TESTINST3("smultb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
551TESTINST3("smultb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
552TESTINST3("smultb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
553TESTINST3("smultb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
554TESTINST3("smultb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
555TESTINST3("smultb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
556TESTINST3("smultb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
557TESTINST3("smultb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
558TESTINST3("smultb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
559TESTINST3("smultb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
560TESTINST3("smultb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
561  /* SMULbt rD, rN, rM */
562  TESTINST3("smulbt r0, r1, r2", 0x00030000, 0x00000004,  r0, r1, r2, 0);
563  TESTINST3("smulbt r0, r1, r2", 0x00030001, 0x00020004,  r0, r1, r2, 0);
564  TESTINST3("smulbt r0, r1, r2", 0x00038001, 0x7fff0004,  r0, r1, r2, 0);
565  TESTINST3("smulbt r0, r1, r2", 0x00037fff, 0x7fff0004,  r0, r1, r2, 0);
566  TESTINST3("smulbt r0, r1, r2", 0x0003ffff, 0xffff0004,  r0, r1, r2, 0);
567TESTINST3("smulbt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
568TESTINST3("smulbt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
569TESTINST3("smulbt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
570TESTINST3("smulbt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
571TESTINST3("smulbt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
572TESTINST3("smulbt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
573TESTINST3("smulbt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
574TESTINST3("smulbt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
575TESTINST3("smulbt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
576TESTINST3("smulbt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
577TESTINST3("smulbt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
578TESTINST3("smulbt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
579TESTINST3("smulbt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
580TESTINST3("smulbt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
581TESTINST3("smulbt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
582TESTINST3("smulbt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
583TESTINST3("smulbt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
584TESTINST3("smulbt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
585TESTINST3("smulbt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
586TESTINST3("smulbt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
587TESTINST3("smulbt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
588TESTINST3("smulbt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
589TESTINST3("smulbt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
590TESTINST3("smulbt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
591TESTINST3("smulbt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
592TESTINST3("smulbt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
593TESTINST3("smulbt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
594TESTINST3("smulbt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
595TESTINST3("smulbt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
596TESTINST3("smulbt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
597TESTINST3("smulbt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
598TESTINST3("smulbt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
599TESTINST3("smulbt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
600TESTINST3("smulbt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
601TESTINST3("smulbt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
602TESTINST3("smulbt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
603TESTINST3("smulbt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
604TESTINST3("smulbt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
605TESTINST3("smulbt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
606TESTINST3("smulbt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
607TESTINST3("smulbt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
608TESTINST3("smulbt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
609TESTINST3("smulbt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
610TESTINST3("smulbt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
611TESTINST3("smulbt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
612TESTINST3("smulbt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
613TESTINST3("smulbt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
614TESTINST3("smulbt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
615TESTINST3("smulbt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
616TESTINST3("smulbt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
617
618  printf("-------------- SMULW{B,T} --------------\n");
619  /* SMULWB rD, rN, rM : Rn x Rm[31..16] */
620  TESTINST3("smulwb r0, r1, r2", 0x00000003, 0x00020004, r0, r1, r2, 0);
621  TESTINST3("smulwb r0, r1, r2", 0x00010003, 0x47ff0004, r0, r1, r2, 0);
622  TESTINST3("smulwb r0, r1, r2", 0x80010003, 0x7fff0004, r0, r1, r2, 0);
623  TESTINST3("smulwb r0, r1, r2", 0x7fff0003, 0x7fff0004, r0, r1, r2, 0);
624  TESTINST3("smulwb r0, r1, r2", 0xffff0003, 0xffff0004, r0, r1, r2, 0);
625TESTINST3("smulwb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
626TESTINST3("smulwb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
627TESTINST3("smulwb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
628TESTINST3("smulwb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
629TESTINST3("smulwb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
630TESTINST3("smulwb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
631TESTINST3("smulwb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
632TESTINST3("smulwb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
633TESTINST3("smulwb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
634TESTINST3("smulwb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
635TESTINST3("smulwb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
636TESTINST3("smulwb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
637TESTINST3("smulwb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
638TESTINST3("smulwb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
639TESTINST3("smulwb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
640TESTINST3("smulwb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
641TESTINST3("smulwb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
642TESTINST3("smulwb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
643TESTINST3("smulwb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
644TESTINST3("smulwb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
645TESTINST3("smulwb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
646TESTINST3("smulwb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
647TESTINST3("smulwb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
648TESTINST3("smulwb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
649TESTINST3("smulwb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
650TESTINST3("smulwb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
651TESTINST3("smulwb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
652TESTINST3("smulwb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
653TESTINST3("smulwb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
654TESTINST3("smulwb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
655TESTINST3("smulwb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
656TESTINST3("smulwb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
657TESTINST3("smulwb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
658TESTINST3("smulwb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
659TESTINST3("smulwb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
660TESTINST3("smulwb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
661TESTINST3("smulwb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
662TESTINST3("smulwb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
663TESTINST3("smulwb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
664TESTINST3("smulwb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
665TESTINST3("smulwb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
666TESTINST3("smulwb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
667TESTINST3("smulwb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
668TESTINST3("smulwb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
669TESTINST3("smulwb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
670TESTINST3("smulwb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
671TESTINST3("smulwb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
672TESTINST3("smulwb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
673TESTINST3("smulwb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
674TESTINST3("smulwb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
675  /* SMULWT rD, rN, rM - Rn x Rm[15.. 0] */
676  TESTINST3("smulwt r0, r1, r2", 0x00000003, 0x00040000, r0, r1, r2, 0);
677  TESTINST3("smulwt r0, r1, r2", 0x00010003, 0x00040002, r0, r1, r2, 0);
678  TESTINST3("smulwt r0, r1, r2", 0x80010003, 0x00047fff, r0, r1, r2, 0);
679  TESTINST3("smulwt r0, r1, r2", 0x7fff0003, 0x00047fff, r0, r1, r2, 0);
680  TESTINST3("smulwt r0, r1, r2", 0xffff0003, 0x0004ffff, r0, r1, r2, 0);
681TESTINST3("smulwt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
682TESTINST3("smulwt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
683TESTINST3("smulwt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
684TESTINST3("smulwt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
685TESTINST3("smulwt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
686TESTINST3("smulwt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
687TESTINST3("smulwt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
688TESTINST3("smulwt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
689TESTINST3("smulwt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
690TESTINST3("smulwt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
691TESTINST3("smulwt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
692TESTINST3("smulwt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
693TESTINST3("smulwt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
694TESTINST3("smulwt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
695TESTINST3("smulwt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
696TESTINST3("smulwt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
697TESTINST3("smulwt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
698TESTINST3("smulwt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
699TESTINST3("smulwt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
700TESTINST3("smulwt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
701TESTINST3("smulwt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
702TESTINST3("smulwt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
703TESTINST3("smulwt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
704TESTINST3("smulwt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
705TESTINST3("smulwt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
706TESTINST3("smulwt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
707TESTINST3("smulwt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
708TESTINST3("smulwt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
709TESTINST3("smulwt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
710TESTINST3("smulwt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
711TESTINST3("smulwt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
712TESTINST3("smulwt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
713TESTINST3("smulwt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
714TESTINST3("smulwt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
715TESTINST3("smulwt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
716TESTINST3("smulwt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
717TESTINST3("smulwt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
718TESTINST3("smulwt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
719TESTINST3("smulwt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
720TESTINST3("smulwt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
721TESTINST3("smulwt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
722TESTINST3("smulwt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
723TESTINST3("smulwt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
724TESTINST3("smulwt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
725TESTINST3("smulwt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
726TESTINST3("smulwt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
727TESTINST3("smulwt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
728TESTINST3("smulwt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
729TESTINST3("smulwt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
730TESTINST3("smulwt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
731
732  printf("------------ PKHBT / PKHTB ------------\n");
733  /* PKHBT */
734  TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x11223344, 0x55667788, r0,r1,r2, 0);
735  TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x11223344, 0x55667788, r0,r1,r2, 0);
736  TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x11223344, 0x55667788, r0,r1,r2, 0);
737  TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x11223344, 0x55667788, r0,r1,r2, 0);
738  TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x11223344, 0x55667788, r0,r1,r2, 0);
739  TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x11223344, 0x55667788, r0,r1,r2, 0);
740  TESTINST3("pkhbt r0, r1, r2, lsl #22", 0x11223344, 0x55667788, r0,r1,r2, 0);
741  TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x11223344, 0x55667788, r0,r1,r2, 0);
742TESTINST3("pkhbt r0, r1, r2", 0x50c28082, 0xc1553709, r0,r1,r2, 0);
743TESTINST3("pkhbt r0, r1, r2", 0x17962e8f, 0x69ec0212, r0,r1,r2, 0);
744TESTINST3("pkhbt r0, r1, r2", 0xc57243b7, 0x03fa9bb5, r0,r1,r2, 0);
745TESTINST3("pkhbt r0, r1, r2", 0x7eb226ac, 0xf52e9fbf, r0,r1,r2, 0);
746TESTINST3("pkhbt r0, r1, r2", 0xbce0f026, 0x7fcbe5a9, r0,r1,r2, 0);
747TESTINST3("pkhbt r0, r1, r2", 0xa5757252, 0x2dd01366, r0,r1,r2, 0);
748TESTINST3("pkhbt r0, r1, r2", 0xf4a477c1, 0x5e4b1cbf, r0,r1,r2, 0);
749TESTINST3("pkhbt r0, r1, r2", 0x76723a21, 0x464a21cc, r0,r1,r2, 0);
750TESTINST3("pkhbt r0, r1, r2", 0x74d01105, 0xe8108f1b, r0,r1,r2, 0);
751TESTINST3("pkhbt r0, r1, r2", 0xc1273e2c, 0xcd90d604, r0,r1,r2, 0);
752TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
753TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
754TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
755TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
756TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
757TESTINST3("pkhbt r0, r1, r2, lsl #8",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
758TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
759TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
760TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
761TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
762TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
763TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
764TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
765TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
766TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
767TESTINST3("pkhbt r0, r1, r2, lsl #8",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
768TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
769TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
770TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
771TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
772TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
773TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
774TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
775TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
776TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
777TESTINST3("pkhbt r0, r1, r2, lsl #8",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
778TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
779TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
780TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
781TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
782TESTINST3("pkhbt r0, r1, r2, lsl #0",  0xd5dc5407, 0xf87b961e, r0,r1,r2, 0);
783TESTINST3("pkhbt r0, r1, r2, lsl #1",  0xd65db979, 0xc61b323b, r0,r1,r2, 0);
784TESTINST3("pkhbt r0, r1, r2, lsl #2",  0xa3268abe, 0xed2cbf78, r0,r1,r2, 0);
785TESTINST3("pkhbt r0, r1, r2, lsl #3",  0xbf73f0a5, 0x2fb714c9, r0,r1,r2, 0);
786TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x281703ed, 0x925ef472, r0,r1,r2, 0);
787TESTINST3("pkhbt r0, r1, r2, lsl #8",  0xeaa652c7, 0x137741f4, r0,r1,r2, 0);
788TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x71fbde8b, 0xdba5bd25, r0,r1,r2, 0);
789TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x884c0ad8, 0xc00b821a, r0,r1,r2, 0);
790TESTINST3("pkhbt r0, r1, r2, lsl #24", 0xe1bb8606, 0x58293969, r0,r1,r2, 0);
791TESTINST3("pkhbt r0, r1, r2, lsl #31", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0);
792TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x40b094e2, 0x17913309, r0,r1,r2, 0);
793TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x5388b5cd, 0x86582032, r0,r1,r2, 0);
794TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x5de41558, 0xccfa1c7e, r0,r1,r2, 0);
795TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x23ba1b46, 0x4437983c, r0,r1,r2, 0);
796TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x48d06549, 0xa9085781, r0,r1,r2, 0);
797TESTINST3("pkhbt r0, r1, r2, lsl #8",  0xc6b4ac58, 0xb2aead21, r0,r1,r2, 0);
798TESTINST3("pkhbt r0, r1, r2, lsl #12", 0xc2bdf597, 0xdde1e6a4, r0,r1,r2, 0);
799TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x852e3a72, 0x157b0dea, r0,r1,r2, 0);
800TESTINST3("pkhbt r0, r1, r2, lsl #24", 0xe7aa57b4, 0x1584bd74, r0,r1,r2, 0);
801TESTINST3("pkhbt r0, r1, r2, lsl #31", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0);
802  /* PKHTB */
803  TESTINST3("pkhtb r0, r1, r2, asr #0",  0x11223344, 0x55667788, r0,r1,r2, 0);
804  TESTINST3("pkhtb r0, r1, r2, asr #1",  0x11223344, 0x55667788, r0,r1,r2, 0);
805  TESTINST3("pkhtb r0, r1, r2, asr #2",  0x11223344, 0x55667788, r0,r1,r2, 0);
806  TESTINST3("pkhtb r0, r1, r2, asr #3",  0x11223344, 0x55667788, r0,r1,r2, 0);
807  TESTINST3("pkhtb r0, r1, r2, asr #4",  0x11223344, 0x55667788, r0,r1,r2, 0);
808  TESTINST3("pkhtb r0, r1, r2, asr #16", 0x11223344, 0x55667788, r0,r1,r2, 0);
809  TESTINST3("pkhtb r0, r1, r2, asr #22", 0x11223344, 0x55667788, r0,r1,r2, 0);
810  TESTINST3("pkhtb r0, r1, r2, asr #31", 0x11223344, 0x55667788, r0,r1,r2, 0);
811TESTINST3("pkhtb r0, r1, r2", 0x50c28082, 0xc1553709, r0,r1,r2, 0);
812TESTINST3("pkhtb r0, r1, r2", 0x17962e8f, 0x69ec0212, r0,r1,r2, 0);
813TESTINST3("pkhtb r0, r1, r2", 0xc57243b7, 0x03fa9bb5, r0,r1,r2, 0);
814TESTINST3("pkhtb r0, r1, r2", 0x7eb226ac, 0xf52e9fbf, r0,r1,r2, 0);
815TESTINST3("pkhtb r0, r1, r2", 0xbce0f026, 0x7fcbe5a9, r0,r1,r2, 0);
816TESTINST3("pkhtb r0, r1, r2", 0xa5757252, 0x2dd01366, r0,r1,r2, 0);
817TESTINST3("pkhtb r0, r1, r2", 0xf4a477c1, 0x5e4b1cbf, r0,r1,r2, 0);
818TESTINST3("pkhtb r0, r1, r2", 0x76723a21, 0x464a21cc, r0,r1,r2, 0);
819TESTINST3("pkhtb r0, r1, r2", 0x74d01105, 0xe8108f1b, r0,r1,r2, 0);
820TESTINST3("pkhtb r0, r1, r2", 0xc1273e2c, 0xcd90d604, r0,r1,r2, 0);
821TESTINST3("pkhtb r0, r1, r2, asr #0",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
822TESTINST3("pkhtb r0, r1, r2, asr #1",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
823TESTINST3("pkhtb r0, r1, r2, asr #2",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
824TESTINST3("pkhtb r0, r1, r2, asr #3",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
825TESTINST3("pkhtb r0, r1, r2, asr #4",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
826TESTINST3("pkhtb r0, r1, r2, asr #8",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
827TESTINST3("pkhtb r0, r1, r2, asr #12", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
828TESTINST3("pkhtb r0, r1, r2, asr #16", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
829TESTINST3("pkhtb r0, r1, r2, asr #24", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
830TESTINST3("pkhtb r0, r1, r2, asr #31", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
831TESTINST3("pkhtb r0, r1, r2, asr #32", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
832TESTINST3("pkhtb r0, r1, r2, asr #0",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
833TESTINST3("pkhtb r0, r1, r2, asr #1",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
834TESTINST3("pkhtb r0, r1, r2, asr #2",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
835TESTINST3("pkhtb r0, r1, r2, asr #3",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
836TESTINST3("pkhtb r0, r1, r2, asr #4",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
837TESTINST3("pkhtb r0, r1, r2, asr #8",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
838TESTINST3("pkhtb r0, r1, r2, asr #12", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
839TESTINST3("pkhtb r0, r1, r2, asr #16", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
840TESTINST3("pkhtb r0, r1, r2, asr #24", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
841TESTINST3("pkhtb r0, r1, r2, asr #31", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
842TESTINST3("pkhtb r0, r1, r2, asr #32", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
843TESTINST3("pkhtb r0, r1, r2, asr #0",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
844TESTINST3("pkhtb r0, r1, r2, asr #1",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
845TESTINST3("pkhtb r0, r1, r2, asr #2",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
846TESTINST3("pkhtb r0, r1, r2, asr #3",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
847TESTINST3("pkhtb r0, r1, r2, asr #4",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
848TESTINST3("pkhtb r0, r1, r2, asr #8",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
849TESTINST3("pkhtb r0, r1, r2, asr #12", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
850TESTINST3("pkhtb r0, r1, r2, asr #16", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
851TESTINST3("pkhtb r0, r1, r2, asr #24", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
852TESTINST3("pkhtb r0, r1, r2, asr #31", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
853TESTINST3("pkhtb r0, r1, r2, asr #32", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
854TESTINST3("pkhtb r0, r1, r2, asr #0",  0xd5dc5407, 0xf87b961e, r0,r1,r2, 0);
855TESTINST3("pkhtb r0, r1, r2, asr #1",  0xd65db979, 0xc61b323b, r0,r1,r2, 0);
856TESTINST3("pkhtb r0, r1, r2, asr #2",  0xa3268abe, 0xed2cbf78, r0,r1,r2, 0);
857TESTINST3("pkhtb r0, r1, r2, asr #3",  0xbf73f0a5, 0x2fb714c9, r0,r1,r2, 0);
858TESTINST3("pkhtb r0, r1, r2, asr #4",  0x281703ed, 0x925ef472, r0,r1,r2, 0);
859TESTINST3("pkhtb r0, r1, r2, asr #8",  0xeaa652c7, 0x137741f4, r0,r1,r2, 0);
860TESTINST3("pkhtb r0, r1, r2, asr #12", 0x71fbde8b, 0xdba5bd25, r0,r1,r2, 0);
861TESTINST3("pkhtb r0, r1, r2, asr #16", 0x884c0ad8, 0xc00b821a, r0,r1,r2, 0);
862TESTINST3("pkhtb r0, r1, r2, asr #24", 0xe1bb8606, 0x58293969, r0,r1,r2, 0);
863TESTINST3("pkhtb r0, r1, r2, asr #31", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0);
864TESTINST3("pkhtb r0, r1, r2, asr #32", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0);
865TESTINST3("pkhtb r0, r1, r2, asr #0",  0x40b094e2, 0x17913309, r0,r1,r2, 0);
866TESTINST3("pkhtb r0, r1, r2, asr #1",  0x5388b5cd, 0x86582032, r0,r1,r2, 0);
867TESTINST3("pkhtb r0, r1, r2, asr #2",  0x5de41558, 0xccfa1c7e, r0,r1,r2, 0);
868TESTINST3("pkhtb r0, r1, r2, asr #3",  0x23ba1b46, 0x4437983c, r0,r1,r2, 0);
869TESTINST3("pkhtb r0, r1, r2, asr #4",  0x48d06549, 0xa9085781, r0,r1,r2, 0);
870TESTINST3("pkhtb r0, r1, r2, asr #8",  0xc6b4ac58, 0xb2aead21, r0,r1,r2, 0);
871TESTINST3("pkhtb r0, r1, r2, asr #12", 0xc2bdf597, 0xdde1e6a4, r0,r1,r2, 0);
872TESTINST3("pkhtb r0, r1, r2, asr #16", 0x852e3a72, 0x157b0dea, r0,r1,r2, 0);
873TESTINST3("pkhtb r0, r1, r2, asr #24", 0xe7aa57b4, 0x1584bd74, r0,r1,r2, 0);
874TESTINST3("pkhtb r0, r1, r2, asr #31", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0);
875TESTINST3("pkhtb r0, r1, r2, asr #32", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0);
876
877  printf("----------------- USAT ----------------- \n");
878  TESTINST2("usat  r0, #0,  r1", 0x0123abcd, r0, r1, 0);
879  TESTINST2("usat  r0, #1,  r1", 0x0123abcd, r0, r1, 0);
880  TESTINST2("usat  r0, #5,  r1", 0x0123abcd, r0, r1, 0);
881  TESTINST2("usat  r0, #8,  r1", 0x0123abcd, r0, r1, 0);
882  TESTINST2("usat  r0, #11, r1", 0x11110000, r0, r1, 0);
883  TESTINST2("usat  r0, #13, r1", 0x11110000, r0, r1, 0);
884  TESTINST2("usat  r0, #15, r1", 0x11110000, r0, r1, 0);
885TESTINST2("usat  r0, #0,  r1",          0xebbff82b, r0, r1, 0);
886TESTINST2("usat  r0, #31, r1, lsl #0",  0x5f986e68, r0, r1, 0);
887TESTINST2("usat  r0, #31, r1, lsl #0",  0xe7aa57b4, r0, r1, 0);
888TESTINST2("usat  r0, #31, r1, lsl #0",  0x89d2ef86, r0, r1, 0);
889TESTINST2("usat  r0, #31, r1, lsl #8",  0xc53aaba9, r0, r1, 0);
890TESTINST2("usat  r0, #31, r1, lsl #8",  0x216158cb, r0, r1, 0);
891TESTINST2("usat  r0, #31, r1, lsl #8",  0x3cd6cd94, r0, r1, 0);
892TESTINST2("usat  r0, #0,  r1, lsl #0",  0xf87b961e, r0, r1, 0);
893TESTINST2("usat  r0, #0,  r1, lsl #0",  0xc61b323b, r0, r1, 0);
894TESTINST2("usat  r0, #0,  r1, lsl #0",  0xa3268abe, r0, r1, 0);
895TESTINST2("usat  r0, #0,  r1, lsl #8",  0xbf73f0a5, r0, r1, 0);
896TESTINST2("usat  r0, #0,  r1, lsl #8",  0x925ef472, r0, r1, 0);
897TESTINST2("usat  r0, #0,  r1, lsl #8",  0x137741f4, r0, r1, 0);
898TESTINST2("usat  r0, #24, r1, lsl #2",  0x50c28082, r0, r1, 0);
899TESTINST2("usat  r0, #16, r1, lsl #3",  0x17962e8f, r0, r1, 0);
900TESTINST2("usat  r0, #12, r1, lsl #4",  0xc57243b7, r0, r1, 0);
901TESTINST2("usat  r0, #8,  r1, lsl #8",  0xf20fb90f, r0, r1, 0);
902TESTINST2("usat  r0, #4,  r1, lsl #12", 0xbb151055, r0, r1, 0);
903TESTINST2("usat  r0, #3,  r1, lsl #16", 0x957440d2, r0, r1, 0);
904TESTINST2("usat  r0, #2,  r1, lsl #24", 0x728b7771, r0, r1, 0);
905TESTINST2("usat  r0, #1,  r1, lsl #31", 0xf13c20f3, r0, r1, 0);
906TESTINST2("usat  r0, #0,  r1",          0xebbff82b, r0, r1, 0);
907TESTINST2("usat  r0, #31, r1, asr #0",  0x5f986e68, r0, r1, 0);
908TESTINST2("usat  r0, #31, r1, asr #0",  0xe7aa57b4, r0, r1, 0);
909TESTINST2("usat  r0, #31, r1, asr #0",  0x89d2ef86, r0, r1, 0);
910TESTINST2("usat  r0, #31, r1, asr #8",  0xc53aaba9, r0, r1, 0);
911TESTINST2("usat  r0, #31, r1, asr #8",  0x216158cb, r0, r1, 0);
912TESTINST2("usat  r0, #31, r1, asr #8",  0x3cd6cd94, r0, r1, 0);
913TESTINST2("usat  r0, #0,  r1, asr #0",  0xf87b961e, r0, r1, 0);
914TESTINST2("usat  r0, #0,  r1, asr #0",  0xc61b323b, r0, r1, 0);
915TESTINST2("usat  r0, #0,  r1, asr #0",  0xa3268abe, r0, r1, 0);
916TESTINST2("usat  r0, #0,  r1, asr #8",  0xbf73f0a5, r0, r1, 0);
917TESTINST2("usat  r0, #0,  r1, asr #8",  0x925ef472, r0, r1, 0);
918TESTINST2("usat  r0, #0,  r1, asr #8",  0x137741f4, r0, r1, 0);
919TESTINST2("usat  r0, #24, r1, asr #2",  0x50c28082, r0, r1, 0);
920TESTINST2("usat  r0, #16, r1, asr #3",  0x17962e8f, r0, r1, 0);
921TESTINST2("usat  r0, #12, r1, asr #4",  0xc57243b7, r0, r1, 0);
922TESTINST2("usat  r0, #8,  r1, asr #8",  0xf20fb90f, r0, r1, 0);
923TESTINST2("usat  r0, #4,  r1, asr #12", 0xbb151055, r0, r1, 0);
924TESTINST2("usat  r0, #3,  r1, asr #16", 0x957440d2, r0, r1, 0);
925TESTINST2("usat  r0, #2,  r1, asr #24", 0x728b7771, r0, r1, 0);
926TESTINST2("usat  r0, #1,  r1, asr #31", 0xf13c20f3, r0, r1, 0);
927TESTINST2("usat  r0, #0,  r1",          0xebbff82b, r0, r1, 0);
928TESTINST2("usat  r0, #31, r1, asr #0",  0x5f986e68, r0, r1, 0);
929TESTINST2("usat  r0, #31, r1, asr #0",  0xe7aa57b4, r0, r1, 0);
930TESTINST2("usat  r0, #31, r1, asr #0",  0x89d2ef86, r0, r1, 0);
931TESTINST2("usat  r0, #31, r1, asr #8",  0xc53aaba9, r0, r1, 0);
932TESTINST2("usat  r0, #31, r1, asr #8",  0x216158cb, r0, r1, 0);
933TESTINST2("usat  r0, #31, r1, asr #8",  0x3cd6cd94, r0, r1, 0);
934TESTINST2("usat  r0, #0,  r1, asr #0",  0xf87b961e, r0, r1, 0);
935TESTINST2("usat  r0, #0,  r1, asr #0",  0xc61b323b, r0, r1, 0);
936TESTINST2("usat  r0, #0,  r1, asr #0",  0xa3268abe, r0, r1, 0);
937TESTINST2("usat  r0, #0,  r1, asr #8",  0xbf73f0a5, r0, r1, 0);
938TESTINST2("usat  r0, #0,  r1, asr #8",  0x925ef472, r0, r1, 0);
939TESTINST2("usat  r0, #0,  r1, asr #8",  0x137741f4, r0, r1, 0);
940TESTINST2("usat  r0, #24, r1, asr #2",  0x50c28082, r0, r1, 0);
941TESTINST2("usat  r0, #16, r1, asr #3",  0x17962e8f, r0, r1, 0);
942TESTINST2("usat  r0, #12, r1, asr #4",  0xc57243b7, r0, r1, 0);
943TESTINST2("usat  r0, #8,  r1, asr #8",  0xf20fb90f, r0, r1, 0);
944TESTINST2("usat  r0, #4,  r1, asr #12", 0xbb151055, r0, r1, 0);
945TESTINST2("usat  r0, #3,  r1, asr #16", 0x957440d2, r0, r1, 0);
946TESTINST2("usat  r0, #2,  r1, asr #24", 0x728b7771, r0, r1, 0);
947TESTINST2("usat  r0, #1,  r1, asr #31", 0xf13c20f3, r0, r1, 0);
948#ifndef __thumb__
949TESTINST2("usat  r0, #0,  r1, asr #32", 0xa9085781, r0, r1, 0);
950TESTINST2("usat  r0, #31, r1, asr #32", 0x40b094e2, r0, r1, 0);
951TESTINST2("usat  r0, #31, r1, asr #32", 0x17913309, r0, r1, 0);
952TESTINST2("usat  r0, #31, r1, asr #32", 0x5388b5cd, r0, r1, 0);
953TESTINST2("usat  r0, #24, r1, asr #32", 0x86582032, r0, r1, 0);
954TESTINST2("usat  r0, #16, r1, asr #32", 0x5de41558, r0, r1, 0);
955TESTINST2("usat  r0, #12, r1, asr #32", 0xccfa1c7e, r0, r1, 0);
956TESTINST2("usat  r0, #8,  r1, asr #32", 0x23ba1b46, r0, r1, 0);
957TESTINST2("usat  r0, #4,  r1, asr #32", 0x4437983c, r0, r1, 0);
958TESTINST2("usat  r0, #3,  r1, asr #32", 0x48d06549, r0, r1, 0);
959TESTINST2("usat  r0, #2,  r1, asr #32", 0xa9085781, r0, r1, 0);
960TESTINST2("usat  r0, #1,  r1, asr #32", 0xc6b4ac58, r0, r1, 0);
961#endif
962
963  printf("------------ USAT16 sat_imm ------------ \n");
964  TESTINST2("usat16  r0, #0,  r1", 0x0123abcd, r0, r1, 0);
965  TESTINST2("usat16  r0, #1,  r1", 0xffcdabcd, r0, r1, 0);
966  TESTINST2("usat16  r0, #5,  r1", 0x0123feff, r0, r1, 0);
967  TESTINST2("usat16  r0, #8,  r1", 0x0123abcd, r0, r1, 0);
968  TESTINST2("usat16  r0, #11, r1", 0x11110000, r0, r1, 0);
969  TESTINST2("usat16  r0, #13, r1", 0x1111f111, r0, r1, 0);
970  TESTINST2("usat16  r0, #15, r1", 0x00001111, r0, r1, 0);
971TESTINST2("usat16  r0, #0,  r1", 0xebbff82b, r0, r1, 0);
972TESTINST2("usat16  r0, #1,  r1", 0xebbff82b, r0, r1, 0);
973TESTINST2("usat16  r0, #3,  r1", 0x50c28082, r0, r1, 0);
974TESTINST2("usat16  r0, #5,  r1", 0x17962e8f, r0, r1, 0);
975TESTINST2("usat16  r0, #8,  r1", 0xc57243b7, r0, r1, 0);
976TESTINST2("usat16  r0, #10, r1", 0xf20fb90f, r0, r1, 0);
977TESTINST2("usat16  r0, #11, r1", 0xbb151055, r0, r1, 0);
978TESTINST2("usat16  r0, #13, r1", 0x957440d2, r0, r1, 0);
979TESTINST2("usat16  r0, #14, r1", 0x728b7771, r0, r1, 0);
980TESTINST2("usat16  r0, #15, r1", 0xf13c20f3, r0, r1, 0);
981TESTINST2("usat16  r0, #0,  r1", 0x86398371, r0, r1, 0);
982TESTINST2("usat16  r0, #1,  r1", 0x03d0fb78, r0, r1, 0);
983TESTINST2("usat16  r0, #3,  r1", 0xd0d49b7c, r0, r1, 0);
984TESTINST2("usat16  r0, #5,  r1", 0x76354a58, r0, r1, 0);
985TESTINST2("usat16  r0, #8,  r1", 0x9fa45fb7, r0, r1, 0);
986TESTINST2("usat16  r0, #10, r1", 0x7572bdec, r0, r1, 0);
987TESTINST2("usat16  r0, #11, r1", 0xfea59eb6, r0, r1, 0);
988TESTINST2("usat16  r0, #13, r1", 0xf2669090, r0, r1, 0);
989TESTINST2("usat16  r0, #14, r1", 0xbc1ff573, r0, r1, 0);
990TESTINST2("usat16  r0, #15, r1", 0x7eb226ac, r0, r1, 0);
991TESTINST2("usat16  r0, #0,  r1", 0x22b65db1, r0, r1, 0);
992TESTINST2("usat16  r0, #1,  r1", 0x776c41c7, r0, r1, 0);
993TESTINST2("usat16  r0, #3,  r1", 0xe50dd77c, r0, r1, 0);
994TESTINST2("usat16  r0, #5,  r1", 0xd6f9a698, r0, r1, 0);
995TESTINST2("usat16  r0, #8,  r1", 0xeda5110c, r0, r1, 0);
996TESTINST2("usat16  r0, #10, r1", 0x0be36f70, r0, r1, 0);
997TESTINST2("usat16  r0, #11, r1", 0xd759eb72, r0, r1, 0);
998TESTINST2("usat16  r0, #13, r1", 0xd9c4b1f4, r0, r1, 0);
999TESTINST2("usat16  r0, #14, r1", 0xa29eb320, r0, r1, 0);
1000TESTINST2("usat16  r0, #15, r1", 0xcf1e4487, r0, r1, 0);
1001TESTINST2("usat16  r0, #0,  r1", 0x2eb68500, r0, r1, 0);
1002TESTINST2("usat16  r0, #1,  r1", 0xcdb7ed11, r0, r1, 0);
1003TESTINST2("usat16  r0, #3,  r1", 0x2eaea305, r0, r1, 0);
1004TESTINST2("usat16  r0, #5,  r1", 0x6ebd04d9, r0, r1, 0);
1005TESTINST2("usat16  r0, #8,  r1", 0xa5ec1aa8, r0, r1, 0);
1006TESTINST2("usat16  r0, #10, r1", 0x72f33509, r0, r1, 0);
1007TESTINST2("usat16  r0, #11, r1", 0xa3e6f759, r0, r1, 0);
1008TESTINST2("usat16  r0, #13, r1", 0xfaceab39, r0, r1, 0);
1009TESTINST2("usat16  r0, #14, r1", 0x2738f0ff, r0, r1, 0);
1010TESTINST2("usat16  r0, #15, r1", 0xe79fd570, r0, r1, 0);
1011TESTINST2("usat16  r0, #0,  r1", 0x55ea3e4e, r0, r1, 0);
1012TESTINST2("usat16  r0, #1,  r1", 0x2b62ba5a, r0, r1, 0);
1013TESTINST2("usat16  r0, #3,  r1", 0x9b41bfb1, r0, r1, 0);
1014TESTINST2("usat16  r0, #5,  r1", 0x557c7ba2, r0, r1, 0);
1015TESTINST2("usat16  r0, #8,  r1", 0x2973c051, r0, r1, 0);
1016TESTINST2("usat16  r0, #10, r1", 0x6a228b19, r0, r1, 0);
1017TESTINST2("usat16  r0, #11, r1", 0x0cdafabe, r0, r1, 0);
1018TESTINST2("usat16  r0, #13, r1", 0x50865114, r0, r1, 0);
1019TESTINST2("usat16  r0, #14, r1", 0xd83b849b, r0, r1, 0);
1020TESTINST2("usat16  r0, #15, r1", 0xca5e5605, r0, r1, 0);
1021
1022  printf("---------------- UADD16 ---------------- \n");
1023  TESTINST3("uadd16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
1024  TESTINST3("uadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
1025  TESTINST3("uadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
1026  TESTINST3("uadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1027
1028  TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
1029  TESTINST3("uadd16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0);
1030  TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0);
1031  TESTINST3("uadd16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0);
1032  TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0);
1033  TESTINST3("uadd16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0);
1034  TESTINST3("uadd16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
1035
1036  TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
1037  TESTINST3("uadd16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0);
1038  TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0);
1039  TESTINST3("uadd16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0);
1040  TESTINST3("uadd16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0);
1041  TESTINST3("uadd16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0);
1042  TESTINST3("uadd16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0);
1043
1044TESTINST3("uadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1045TESTINST3("uadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1046TESTINST3("uadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1047TESTINST3("uadd16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1048TESTINST3("uadd16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1049TESTINST3("uadd16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1050TESTINST3("uadd16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1051TESTINST3("uadd16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1052TESTINST3("uadd16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1053TESTINST3("uadd16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1054TESTINST3("uadd16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1055TESTINST3("uadd16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1056TESTINST3("uadd16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1057TESTINST3("uadd16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1058TESTINST3("uadd16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1059TESTINST3("uadd16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1060TESTINST3("uadd16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1061TESTINST3("uadd16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1062TESTINST3("uadd16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1063TESTINST3("uadd16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1064TESTINST3("uadd16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1065TESTINST3("uadd16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1066TESTINST3("uadd16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1067TESTINST3("uadd16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1068TESTINST3("uadd16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1069TESTINST3("uadd16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1070TESTINST3("uadd16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1071TESTINST3("uadd16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1072TESTINST3("uadd16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1073TESTINST3("uadd16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1074TESTINST3("uadd16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1075TESTINST3("uadd16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1076TESTINST3("uadd16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1077TESTINST3("uadd16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1078TESTINST3("uadd16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1079TESTINST3("uadd16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1080TESTINST3("uadd16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1081TESTINST3("uadd16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1082TESTINST3("uadd16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1083TESTINST3("uadd16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1084TESTINST3("uadd16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1085TESTINST3("uadd16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1086TESTINST3("uadd16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1087TESTINST3("uadd16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1088TESTINST3("uadd16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1089TESTINST3("uadd16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1090TESTINST3("uadd16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1091TESTINST3("uadd16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1092TESTINST3("uadd16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1093TESTINST3("uadd16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1094
1095  printf("---------------- SADD16 ---------------- \n");
1096  TESTINST3("sadd16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
1097  TESTINST3("sadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
1098  TESTINST3("sadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
1099  TESTINST3("sadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1100
1101  TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
1102  TESTINST3("sadd16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0);
1103  TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0);
1104  TESTINST3("sadd16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0);
1105  TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0);
1106  TESTINST3("sadd16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0);
1107  TESTINST3("sadd16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
1108
1109  TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
1110  TESTINST3("sadd16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0);
1111  TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0);
1112  TESTINST3("sadd16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0);
1113  TESTINST3("sadd16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0);
1114  TESTINST3("sadd16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0);
1115  TESTINST3("sadd16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0);
1116
1117TESTINST3("sadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1118TESTINST3("sadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1119TESTINST3("sadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1120TESTINST3("sadd16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1121TESTINST3("sadd16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1122TESTINST3("sadd16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1123TESTINST3("sadd16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1124TESTINST3("sadd16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1125TESTINST3("sadd16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1126TESTINST3("sadd16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1127TESTINST3("sadd16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1128TESTINST3("sadd16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1129TESTINST3("sadd16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1130TESTINST3("sadd16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1131TESTINST3("sadd16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1132TESTINST3("sadd16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1133TESTINST3("sadd16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1134TESTINST3("sadd16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1135TESTINST3("sadd16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1136TESTINST3("sadd16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1137TESTINST3("sadd16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1138TESTINST3("sadd16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1139TESTINST3("sadd16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1140TESTINST3("sadd16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1141TESTINST3("sadd16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1142TESTINST3("sadd16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1143TESTINST3("sadd16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1144TESTINST3("sadd16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1145TESTINST3("sadd16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1146TESTINST3("sadd16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1147TESTINST3("sadd16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1148TESTINST3("sadd16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1149TESTINST3("sadd16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1150TESTINST3("sadd16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1151TESTINST3("sadd16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1152TESTINST3("sadd16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1153TESTINST3("sadd16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1154TESTINST3("sadd16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1155TESTINST3("sadd16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1156TESTINST3("sadd16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1157TESTINST3("sadd16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1158TESTINST3("sadd16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1159TESTINST3("sadd16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1160TESTINST3("sadd16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1161TESTINST3("sadd16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1162TESTINST3("sadd16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1163TESTINST3("sadd16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1164TESTINST3("sadd16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1165TESTINST3("sadd16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1166TESTINST3("sadd16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1167
1168  printf("---------------- USUB16 ---------------- \n");
1169  TESTINST3("usub16 r0, r1, r2", 0x04000022, 0x03000011, r0, r1, r2, 0);
1170  TESTINST3("usub16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
1171  TESTINST3("usub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
1172  TESTINST3("usub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
1173  TESTINST3("usub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1174
1175  TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
1176  TESTINST3("usub16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0);
1177  TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0);
1178  TESTINST3("usub16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0);
1179  TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0);
1180  TESTINST3("usub16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0);
1181  TESTINST3("usub16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
1182
1183  TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
1184  TESTINST3("usub16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0);
1185  TESTINST3("usub16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0);
1186  TESTINST3("usub16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0);
1187  TESTINST3("usub16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0);
1188  TESTINST3("usub16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0);
1189  TESTINST3("usub16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0);
1190
1191TESTINST3("usub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1192TESTINST3("usub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1193TESTINST3("usub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1194TESTINST3("usub16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1195TESTINST3("usub16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1196TESTINST3("usub16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1197TESTINST3("usub16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1198TESTINST3("usub16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1199TESTINST3("usub16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1200TESTINST3("usub16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1201TESTINST3("usub16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1202TESTINST3("usub16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1203TESTINST3("usub16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1204TESTINST3("usub16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1205TESTINST3("usub16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1206TESTINST3("usub16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1207TESTINST3("usub16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1208TESTINST3("usub16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1209TESTINST3("usub16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1210TESTINST3("usub16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1211TESTINST3("usub16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1212TESTINST3("usub16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1213TESTINST3("usub16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1214TESTINST3("usub16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1215TESTINST3("usub16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1216TESTINST3("usub16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1217TESTINST3("usub16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1218TESTINST3("usub16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1219TESTINST3("usub16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1220TESTINST3("usub16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1221TESTINST3("usub16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1222TESTINST3("usub16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1223TESTINST3("usub16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1224TESTINST3("usub16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1225TESTINST3("usub16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1226TESTINST3("usub16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1227TESTINST3("usub16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1228TESTINST3("usub16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1229TESTINST3("usub16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1230TESTINST3("usub16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1231TESTINST3("usub16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1232TESTINST3("usub16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1233TESTINST3("usub16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1234TESTINST3("usub16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1235TESTINST3("usub16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1236TESTINST3("usub16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1237TESTINST3("usub16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1238TESTINST3("usub16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1239TESTINST3("usub16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1240TESTINST3("usub16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1241
1242  printf("---------------- SSUB16 ---------------- \n");
1243  TESTINST3("ssub16 r0, r1, r2", 0x04000022, 0x03000011, r0, r1, r2, 0);
1244  TESTINST3("ssub16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
1245  TESTINST3("ssub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
1246  TESTINST3("ssub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
1247  TESTINST3("ssub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1248
1249  TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
1250  TESTINST3("ssub16 r0, r1, r2", 0x00000001, 0x00000000, r0, r1, r2, 0);
1251  TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000001, r0, r1, r2, 0);
1252  TESTINST3("ssub16 r0, r1, r2", 0x00000001, 0x00000001, r0, r1, r2, 0);
1253  TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x0000ffff, r0, r1, r2, 0);
1254  TESTINST3("ssub16 r0, r1, r2", 0x0000ffff, 0x00000000, r0, r1, r2, 0);
1255  TESTINST3("ssub16 r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
1256
1257  TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00000000, r0, r1, r2, 0);
1258  TESTINST3("ssub16 r0, r1, r2", 0x00010000, 0x00000000, r0, r1, r2, 0);
1259  TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0x00010000, r0, r1, r2, 0);
1260  TESTINST3("ssub16 r0, r1, r2", 0x00010000, 0x00010000, r0, r1, r2, 0);
1261  TESTINST3("ssub16 r0, r1, r2", 0x00000000, 0xffff0000, r0, r1, r2, 0);
1262  TESTINST3("ssub16 r0, r1, r2", 0xffff0000, 0x00000000, r0, r1, r2, 0);
1263  TESTINST3("ssub16 r0, r1, r2", 0xffff0000, 0xffff0000, r0, r1, r2, 0);
1264
1265TESTINST3("ssub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1266TESTINST3("ssub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1267TESTINST3("ssub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1268TESTINST3("ssub16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1269TESTINST3("ssub16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1270TESTINST3("ssub16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1271TESTINST3("ssub16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1272TESTINST3("ssub16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1273TESTINST3("ssub16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1274TESTINST3("ssub16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1275TESTINST3("ssub16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1276TESTINST3("ssub16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1277TESTINST3("ssub16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1278TESTINST3("ssub16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1279TESTINST3("ssub16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1280TESTINST3("ssub16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1281TESTINST3("ssub16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1282TESTINST3("ssub16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1283TESTINST3("ssub16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1284TESTINST3("ssub16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1285TESTINST3("ssub16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1286TESTINST3("ssub16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1287TESTINST3("ssub16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1288TESTINST3("ssub16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1289TESTINST3("ssub16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1290TESTINST3("ssub16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1291TESTINST3("ssub16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1292TESTINST3("ssub16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1293TESTINST3("ssub16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1294TESTINST3("ssub16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1295TESTINST3("ssub16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1296TESTINST3("ssub16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1297TESTINST3("ssub16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1298TESTINST3("ssub16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1299TESTINST3("ssub16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1300TESTINST3("ssub16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1301TESTINST3("ssub16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1302TESTINST3("ssub16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1303TESTINST3("ssub16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1304TESTINST3("ssub16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1305TESTINST3("ssub16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1306TESTINST3("ssub16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1307TESTINST3("ssub16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1308TESTINST3("ssub16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1309TESTINST3("ssub16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1310TESTINST3("ssub16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1311TESTINST3("ssub16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1312TESTINST3("ssub16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1313TESTINST3("ssub16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1314TESTINST3("ssub16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1315
1316  printf("---------------- UADD8 ----------------- \n");
1317  TESTINST3("uadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
1318  TESTINST3("uadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
1319  TESTINST3("uadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
1320  TESTINST3("uadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1321  TESTINST3("uadd8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0);
1322  TESTINST3("uadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1323  TESTINST3("uadd8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0);
1324  TESTINST3("uadd8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0);
1325TESTINST3("uadd8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1326TESTINST3("uadd8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1327TESTINST3("uadd8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1328TESTINST3("uadd8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1329TESTINST3("uadd8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1330TESTINST3("uadd8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1331TESTINST3("uadd8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1332TESTINST3("uadd8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1333TESTINST3("uadd8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1334TESTINST3("uadd8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1335TESTINST3("uadd8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1336TESTINST3("uadd8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1337TESTINST3("uadd8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1338TESTINST3("uadd8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1339TESTINST3("uadd8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1340TESTINST3("uadd8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1341TESTINST3("uadd8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1342TESTINST3("uadd8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1343TESTINST3("uadd8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1344TESTINST3("uadd8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1345TESTINST3("uadd8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1346TESTINST3("uadd8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1347TESTINST3("uadd8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1348TESTINST3("uadd8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1349TESTINST3("uadd8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1350TESTINST3("uadd8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1351TESTINST3("uadd8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1352TESTINST3("uadd8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1353TESTINST3("uadd8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1354TESTINST3("uadd8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1355TESTINST3("uadd8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1356TESTINST3("uadd8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1357TESTINST3("uadd8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1358TESTINST3("uadd8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1359TESTINST3("uadd8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1360TESTINST3("uadd8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1361TESTINST3("uadd8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1362TESTINST3("uadd8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1363TESTINST3("uadd8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1364TESTINST3("uadd8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1365TESTINST3("uadd8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1366TESTINST3("uadd8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1367TESTINST3("uadd8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1368TESTINST3("uadd8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1369TESTINST3("uadd8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1370TESTINST3("uadd8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1371TESTINST3("uadd8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1372TESTINST3("uadd8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1373TESTINST3("uadd8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1374TESTINST3("uadd8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1375
1376  printf("---------------- USUB8 ----------------- \n");
1377  TESTINST3("usub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
1378  TESTINST3("usub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
1379  TESTINST3("usub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
1380  TESTINST3("usub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1381  TESTINST3("usub8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0);
1382  TESTINST3("usub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1383  TESTINST3("usub8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0);
1384  TESTINST3("usub8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0);
1385TESTINST3("usub8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1386TESTINST3("usub8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1387TESTINST3("usub8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1388TESTINST3("usub8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1389TESTINST3("usub8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1390TESTINST3("usub8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1391TESTINST3("usub8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1392TESTINST3("usub8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1393TESTINST3("usub8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1394TESTINST3("usub8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1395TESTINST3("usub8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1396TESTINST3("usub8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1397TESTINST3("usub8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1398TESTINST3("usub8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1399TESTINST3("usub8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1400TESTINST3("usub8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1401TESTINST3("usub8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1402TESTINST3("usub8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1403TESTINST3("usub8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1404TESTINST3("usub8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1405TESTINST3("usub8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1406TESTINST3("usub8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1407TESTINST3("usub8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1408TESTINST3("usub8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1409TESTINST3("usub8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1410TESTINST3("usub8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1411TESTINST3("usub8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1412TESTINST3("usub8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1413TESTINST3("usub8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1414TESTINST3("usub8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1415TESTINST3("usub8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1416TESTINST3("usub8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1417TESTINST3("usub8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1418TESTINST3("usub8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1419TESTINST3("usub8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1420TESTINST3("usub8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1421TESTINST3("usub8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1422TESTINST3("usub8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1423TESTINST3("usub8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1424TESTINST3("usub8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1425TESTINST3("usub8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1426TESTINST3("usub8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1427TESTINST3("usub8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1428TESTINST3("usub8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1429TESTINST3("usub8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1430TESTINST3("usub8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1431TESTINST3("usub8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1432TESTINST3("usub8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1433TESTINST3("usub8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1434TESTINST3("usub8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1435
1436  printf("---------------- QADD16 ---------------- \n");
1437  TESTINST3("qadd16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
1438  TESTINST3("qadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
1439  TESTINST3("qadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
1440  TESTINST3("qadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1441TESTINST3("qadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1442TESTINST3("qadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1443TESTINST3("qadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1444TESTINST3("qadd16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1445TESTINST3("qadd16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1446TESTINST3("qadd16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1447TESTINST3("qadd16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1448TESTINST3("qadd16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1449TESTINST3("qadd16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1450TESTINST3("qadd16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1451TESTINST3("qadd16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1452TESTINST3("qadd16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1453TESTINST3("qadd16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1454TESTINST3("qadd16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1455TESTINST3("qadd16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1456TESTINST3("qadd16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1457TESTINST3("qadd16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1458TESTINST3("qadd16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1459TESTINST3("qadd16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1460TESTINST3("qadd16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1461TESTINST3("qadd16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1462TESTINST3("qadd16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1463TESTINST3("qadd16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1464TESTINST3("qadd16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1465TESTINST3("qadd16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1466TESTINST3("qadd16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1467TESTINST3("qadd16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1468TESTINST3("qadd16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1469TESTINST3("qadd16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1470TESTINST3("qadd16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1471TESTINST3("qadd16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1472TESTINST3("qadd16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1473TESTINST3("qadd16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1474TESTINST3("qadd16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1475TESTINST3("qadd16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1476TESTINST3("qadd16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1477TESTINST3("qadd16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1478TESTINST3("qadd16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1479TESTINST3("qadd16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1480TESTINST3("qadd16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1481TESTINST3("qadd16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1482TESTINST3("qadd16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1483TESTINST3("qadd16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1484TESTINST3("qadd16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1485TESTINST3("qadd16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1486TESTINST3("qadd16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1487TESTINST3("qadd16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1488TESTINST3("qadd16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1489TESTINST3("qadd16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1490TESTINST3("qadd16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1491
1492  printf("---------------- QSUB16 ---------------- \n");
1493  TESTINST3("qsub16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
1494  TESTINST3("qsub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
1495  TESTINST3("qsub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
1496  TESTINST3("qsub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
1497TESTINST3("qsub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1498TESTINST3("qsub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1499TESTINST3("qsub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1500TESTINST3("qsub16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1501TESTINST3("qsub16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1502TESTINST3("qsub16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1503TESTINST3("qsub16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1504TESTINST3("qsub16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1505TESTINST3("qsub16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1506TESTINST3("qsub16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1507TESTINST3("qsub16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1508TESTINST3("qsub16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1509TESTINST3("qsub16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1510TESTINST3("qsub16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1511TESTINST3("qsub16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1512TESTINST3("qsub16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1513TESTINST3("qsub16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1514TESTINST3("qsub16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1515TESTINST3("qsub16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1516TESTINST3("qsub16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1517TESTINST3("qsub16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1518TESTINST3("qsub16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1519TESTINST3("qsub16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1520TESTINST3("qsub16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1521TESTINST3("qsub16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1522TESTINST3("qsub16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1523TESTINST3("qsub16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1524TESTINST3("qsub16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1525TESTINST3("qsub16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1526TESTINST3("qsub16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1527TESTINST3("qsub16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1528TESTINST3("qsub16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1529TESTINST3("qsub16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1530TESTINST3("qsub16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1531TESTINST3("qsub16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1532TESTINST3("qsub16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1533TESTINST3("qsub16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1534TESTINST3("qsub16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1535TESTINST3("qsub16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1536TESTINST3("qsub16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1537TESTINST3("qsub16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1538TESTINST3("qsub16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1539TESTINST3("qsub16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1540TESTINST3("qsub16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1541TESTINST3("qsub16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1542TESTINST3("qsub16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1543TESTINST3("qsub16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1544TESTINST3("qsub16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1545TESTINST3("qsub16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1546TESTINST3("qsub16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1547
1548  printf("----------------- QSAX ----------------- \n");
1549  TESTINST3("qsax r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
1550  TESTINST3("qsax r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
1551  TESTINST3("qsax r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
1552  TESTINST3("qsax r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
1553  TESTINST3("qsax r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
1554  TESTINST3("qsax r0, r1, r2", 0x00030003, 0x00640064, r0, r1, r2, 0);
1555TESTINST3("qsax r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1556TESTINST3("qsax r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1557TESTINST3("qsax r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1558TESTINST3("qsax r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1559TESTINST3("qsax r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1560TESTINST3("qsax r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1561TESTINST3("qsax r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1562TESTINST3("qsax r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1563TESTINST3("qsax r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1564TESTINST3("qsax r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1565TESTINST3("qsax r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1566TESTINST3("qsax r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1567TESTINST3("qsax r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1568TESTINST3("qsax r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1569TESTINST3("qsax r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1570TESTINST3("qsax r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1571TESTINST3("qsax r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1572TESTINST3("qsax r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1573TESTINST3("qsax r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1574TESTINST3("qsax r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1575TESTINST3("qsax r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1576TESTINST3("qsax r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1577TESTINST3("qsax r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1578TESTINST3("qsax r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1579TESTINST3("qsax r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1580TESTINST3("qsax r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1581TESTINST3("qsax r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1582TESTINST3("qsax r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1583TESTINST3("qsax r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1584TESTINST3("qsax r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1585TESTINST3("qsax r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1586TESTINST3("qsax r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1587TESTINST3("qsax r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1588TESTINST3("qsax r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1589TESTINST3("qsax r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1590TESTINST3("qsax r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1591TESTINST3("qsax r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1592TESTINST3("qsax r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1593TESTINST3("qsax r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1594TESTINST3("qsax r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1595TESTINST3("qsax r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1596TESTINST3("qsax r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1597TESTINST3("qsax r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1598TESTINST3("qsax r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1599TESTINST3("qsax r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1600TESTINST3("qsax r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1601TESTINST3("qsax r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1602TESTINST3("qsax r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1603TESTINST3("qsax r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1604TESTINST3("qsax r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1605
1606  printf("----------------- QASX ----------------- \n");
1607  TESTINST3("qasx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
1608  TESTINST3("qasx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
1609  TESTINST3("qasx r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
1610  TESTINST3("qasx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
1611  TESTINST3("qasx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
1612  TESTINST3("qasx r0, r1, r2", 0x00030003, 0x00640064, r0, r1, r2, 0);
1613TESTINST3("qasx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1614TESTINST3("qasx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1615TESTINST3("qasx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1616TESTINST3("qasx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1617TESTINST3("qasx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1618TESTINST3("qasx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1619TESTINST3("qasx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1620TESTINST3("qasx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1621TESTINST3("qasx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1622TESTINST3("qasx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1623TESTINST3("qasx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1624TESTINST3("qasx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1625TESTINST3("qasx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1626TESTINST3("qasx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1627TESTINST3("qasx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1628TESTINST3("qasx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1629TESTINST3("qasx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1630TESTINST3("qasx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1631TESTINST3("qasx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1632TESTINST3("qasx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1633TESTINST3("qasx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1634TESTINST3("qasx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1635TESTINST3("qasx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1636TESTINST3("qasx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1637TESTINST3("qasx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1638TESTINST3("qasx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1639TESTINST3("qasx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1640TESTINST3("qasx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1641TESTINST3("qasx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1642TESTINST3("qasx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1643TESTINST3("qasx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1644TESTINST3("qasx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1645TESTINST3("qasx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1646TESTINST3("qasx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1647TESTINST3("qasx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1648TESTINST3("qasx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1649TESTINST3("qasx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1650TESTINST3("qasx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1651TESTINST3("qasx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1652TESTINST3("qasx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1653TESTINST3("qasx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1654TESTINST3("qasx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1655TESTINST3("qasx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1656TESTINST3("qasx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1657TESTINST3("qasx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1658TESTINST3("qasx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1659TESTINST3("qasx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1660TESTINST3("qasx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1661TESTINST3("qasx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1662TESTINST3("qasx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1663
1664  printf("----------------- SASX ----------------- \n");
1665  TESTINST3("sasx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
1666  TESTINST3("sasx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
1667  TESTINST3("sasx r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
1668  TESTINST3("sasx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
1669  TESTINST3("sasx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
1670  TESTINST3("sasx r0, r1, r2", 0x00030003, 0x00640064, r0, r1, r2, 0);
1671TESTINST3("sasx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1672TESTINST3("sasx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1673TESTINST3("sasx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1674TESTINST3("sasx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1675TESTINST3("sasx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1676TESTINST3("sasx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1677TESTINST3("sasx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1678TESTINST3("sasx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1679TESTINST3("sasx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1680TESTINST3("sasx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1681TESTINST3("sasx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1682TESTINST3("sasx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1683TESTINST3("sasx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1684TESTINST3("sasx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1685TESTINST3("sasx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1686TESTINST3("sasx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1687TESTINST3("sasx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1688TESTINST3("sasx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1689TESTINST3("sasx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1690TESTINST3("sasx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1691TESTINST3("sasx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1692TESTINST3("sasx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1693TESTINST3("sasx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1694TESTINST3("sasx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1695TESTINST3("sasx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1696TESTINST3("sasx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1697TESTINST3("sasx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1698TESTINST3("sasx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1699TESTINST3("sasx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1700TESTINST3("sasx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1701TESTINST3("sasx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1702TESTINST3("sasx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1703TESTINST3("sasx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1704TESTINST3("sasx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1705TESTINST3("sasx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1706TESTINST3("sasx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1707TESTINST3("sasx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1708TESTINST3("sasx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1709TESTINST3("sasx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1710TESTINST3("sasx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1711TESTINST3("sasx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1712TESTINST3("sasx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1713TESTINST3("sasx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1714TESTINST3("sasx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1715TESTINST3("sasx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1716TESTINST3("sasx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1717TESTINST3("sasx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1718TESTINST3("sasx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1719TESTINST3("sasx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1720TESTINST3("sasx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1721
1722  printf("----------------- SMUAD ----------------- \n");
1723  TESTINST3("smuad r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
1724  TESTINST3("smuad r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
1725  TESTINST3("smuad r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
1726  TESTINST3("smuad r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
1727  TESTINST3("smuad r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
1728  TESTINST3("smuad r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
1729  TESTINST3("smuad r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
1730TESTINST3("smuad r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1731TESTINST3("smuad r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1732TESTINST3("smuad r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1733TESTINST3("smuad r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1734TESTINST3("smuad r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1735TESTINST3("smuad r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1736TESTINST3("smuad r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1737TESTINST3("smuad r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1738TESTINST3("smuad r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1739TESTINST3("smuad r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1740TESTINST3("smuad r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1741TESTINST3("smuad r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1742TESTINST3("smuad r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1743TESTINST3("smuad r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1744TESTINST3("smuad r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1745TESTINST3("smuad r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1746TESTINST3("smuad r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1747TESTINST3("smuad r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1748TESTINST3("smuad r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1749TESTINST3("smuad r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1750TESTINST3("smuad r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1751TESTINST3("smuad r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1752TESTINST3("smuad r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1753TESTINST3("smuad r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1754TESTINST3("smuad r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1755TESTINST3("smuad r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1756TESTINST3("smuad r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1757TESTINST3("smuad r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1758TESTINST3("smuad r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1759TESTINST3("smuad r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1760TESTINST3("smuad r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1761TESTINST3("smuad r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1762TESTINST3("smuad r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1763TESTINST3("smuad r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1764TESTINST3("smuad r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1765TESTINST3("smuad r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1766TESTINST3("smuad r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1767TESTINST3("smuad r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1768TESTINST3("smuad r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1769TESTINST3("smuad r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1770TESTINST3("smuad r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1771TESTINST3("smuad r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1772TESTINST3("smuad r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1773TESTINST3("smuad r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1774TESTINST3("smuad r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1775TESTINST3("smuad r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1776TESTINST3("smuad r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1777TESTINST3("smuad r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1778TESTINST3("smuad r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1779TESTINST3("smuad r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1780  printf("----------------- SMUADX ---------------- \n");
1781  TESTINST3("smuadx r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
1782  TESTINST3("smuadx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
1783  TESTINST3("smuadx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
1784  TESTINST3("smuadx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
1785  TESTINST3("smuadx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
1786  TESTINST3("smuadx r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
1787  TESTINST3("smuadx r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
1788TESTINST3("smuadx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
1789TESTINST3("smuadx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
1790TESTINST3("smuadx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
1791TESTINST3("smuadx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
1792TESTINST3("smuadx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
1793TESTINST3("smuadx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
1794TESTINST3("smuadx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
1795TESTINST3("smuadx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
1796TESTINST3("smuadx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
1797TESTINST3("smuadx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
1798TESTINST3("smuadx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
1799TESTINST3("smuadx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
1800TESTINST3("smuadx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
1801TESTINST3("smuadx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
1802TESTINST3("smuadx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
1803TESTINST3("smuadx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
1804TESTINST3("smuadx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
1805TESTINST3("smuadx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
1806TESTINST3("smuadx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
1807TESTINST3("smuadx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
1808TESTINST3("smuadx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
1809TESTINST3("smuadx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
1810TESTINST3("smuadx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
1811TESTINST3("smuadx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
1812TESTINST3("smuadx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
1813TESTINST3("smuadx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
1814TESTINST3("smuadx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
1815TESTINST3("smuadx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
1816TESTINST3("smuadx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
1817TESTINST3("smuadx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
1818TESTINST3("smuadx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
1819TESTINST3("smuadx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
1820TESTINST3("smuadx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
1821TESTINST3("smuadx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
1822TESTINST3("smuadx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
1823TESTINST3("smuadx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
1824TESTINST3("smuadx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
1825TESTINST3("smuadx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
1826TESTINST3("smuadx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
1827TESTINST3("smuadx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
1828TESTINST3("smuadx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
1829TESTINST3("smuadx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
1830TESTINST3("smuadx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
1831TESTINST3("smuadx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
1832TESTINST3("smuadx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
1833TESTINST3("smuadx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
1834TESTINST3("smuadx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
1835TESTINST3("smuadx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
1836TESTINST3("smuadx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
1837TESTINST3("smuadx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
1838
1839  printf("----------------- SMLAD ----------------- \n");
1840  TESTINST4("smlad  r0, r1, r2, r3",
1841                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
1842  TESTINST4("smlad  r0, r1, r2, r3",
1843                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
1844  TESTINST4("smlad  r0, r1, r2, r3",
1845                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
1846  TESTINST4("smlad  r0, r1, r2, r3",
1847                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
1848  TESTINST4("smlad  r0, r1, r2, r3",
1849                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
1850  TESTINST4("smlad  r0, r1, r2, r3",
1851                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
1852  TESTINST4("smlad  r0, r1, r2, r3",
1853                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
1854TESTINST4("smlad  r0, r1, r2, r3",
1855          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
1856TESTINST4("smlad  r0, r1, r2, r3",
1857          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
1858TESTINST4("smlad  r0, r1, r2, r3",
1859          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
1860TESTINST4("smlad  r0, r1, r2, r3",
1861          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
1862TESTINST4("smlad  r0, r1, r2, r3",
1863          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
1864TESTINST4("smlad  r0, r1, r2, r3",
1865          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
1866TESTINST4("smlad  r0, r1, r2, r3",
1867          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
1868TESTINST4("smlad  r0, r1, r2, r3",
1869          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
1870TESTINST4("smlad  r0, r1, r2, r3",
1871          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
1872TESTINST4("smlad  r0, r1, r2, r3",
1873          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
1874TESTINST4("smlad  r0, r1, r2, r3",
1875          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
1876TESTINST4("smlad  r0, r1, r2, r3",
1877          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
1878TESTINST4("smlad  r0, r1, r2, r3",
1879          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
1880TESTINST4("smlad  r0, r1, r2, r3",
1881          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
1882TESTINST4("smlad  r0, r1, r2, r3",
1883          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
1884TESTINST4("smlad  r0, r1, r2, r3",
1885          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
1886TESTINST4("smlad  r0, r1, r2, r3",
1887          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
1888TESTINST4("smlad  r0, r1, r2, r3",
1889          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
1890TESTINST4("smlad  r0, r1, r2, r3",
1891          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
1892TESTINST4("smlad  r0, r1, r2, r3",
1893          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
1894TESTINST4("smlad  r0, r1, r2, r3",
1895          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
1896TESTINST4("smlad  r0, r1, r2, r3",
1897          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
1898TESTINST4("smlad  r0, r1, r2, r3",
1899          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
1900TESTINST4("smlad  r0, r1, r2, r3",
1901          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
1902TESTINST4("smlad  r0, r1, r2, r3",
1903          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
1904TESTINST4("smlad  r0, r1, r2, r3",
1905          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
1906TESTINST4("smlad  r0, r1, r2, r3",
1907          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
1908TESTINST4("smlad  r0, r1, r2, r3",
1909          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
1910TESTINST4("smlad  r0, r1, r2, r3",
1911          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
1912TESTINST4("smlad  r0, r1, r2, r3",
1913          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
1914TESTINST4("smlad  r0, r1, r2, r3",
1915          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
1916TESTINST4("smlad  r0, r1, r2, r3",
1917          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
1918TESTINST4("smlad  r0, r1, r2, r3",
1919          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
1920TESTINST4("smlad  r0, r1, r2, r3",
1921          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
1922TESTINST4("smlad  r0, r1, r2, r3",
1923          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
1924TESTINST4("smlad  r0, r1, r2, r3",
1925          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
1926TESTINST4("smlad  r0, r1, r2, r3",
1927          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
1928TESTINST4("smlad  r0, r1, r2, r3",
1929          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
1930TESTINST4("smlad  r0, r1, r2, r3",
1931          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
1932TESTINST4("smlad  r0, r1, r2, r3",
1933          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
1934TESTINST4("smlad  r0, r1, r2, r3",
1935          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
1936TESTINST4("smlad  r0, r1, r2, r3",
1937          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
1938TESTINST4("smlad  r0, r1, r2, r3",
1939          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
1940TESTINST4("smlad  r0, r1, r2, r3",
1941          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
1942TESTINST4("smlad  r0, r1, r2, r3",
1943          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
1944TESTINST4("smlad  r0, r1, r2, r3",
1945          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
1946TESTINST4("smlad  r0, r1, r2, r3",
1947          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
1948TESTINST4("smlad  r0, r1, r2, r3",
1949          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
1950TESTINST4("smlad  r0, r1, r2, r3",
1951          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
1952TESTINST4("smlad  r0, r1, r2, r3",
1953          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
1954TESTINST4("smlad  r0, r1, r2, r3",
1955          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
1956
1957  printf("----------------- SMLADX ----------------- \n");
1958  TESTINST4("smladx  r0, r1, r2, r3",
1959                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
1960  TESTINST4("smladx  r0, r1, r2, r3",
1961                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
1962  TESTINST4("smladx  r0, r1, r2, r3",
1963                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
1964  TESTINST4("smladx  r0, r1, r2, r3",
1965                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
1966  TESTINST4("smladx  r0, r1, r2, r3",
1967                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
1968  TESTINST4("smladx  r0, r1, r2, r3",
1969                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
1970  TESTINST4("smladx  r0, r1, r2, r3",
1971                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
1972TESTINST4("smladx  r0, r1, r2, r3",
1973          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
1974TESTINST4("smladx  r0, r1, r2, r3",
1975          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
1976TESTINST4("smladx  r0, r1, r2, r3",
1977          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
1978
1979  printf("------------ SMLABB, SMLATT, SMLATB, SMLABT ------------\n");
1980  /* smlabb rD, rN, rM, rA */
1981  TESTINST4("smlabb r0, r1, r2, r3",
1982            0x00030000, 0x00040000, 0x00000000, r0,r1,r2,r3, 0);
1983  TESTINST4("smlabb r0, r1, r2, r3",
1984            0x00030001, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0);
1985  TESTINST4("smlabb r0, r1, r2, r3",
1986            0x00038001, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0);
1987  TESTINST4("smlabb r0, r1, r2, r3",
1988            0x00037fff, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0);
1989  TESTINST4("smlabb r0, r1, r2, r3",
1990            0x0003ffff, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0);
1991  TESTINST4("smlabb r0, r1, r2, r3",
1992            0x0003fffc, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0);
1993TESTINST4("smlabb  r0, r1, r2, r3",
1994          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
1995TESTINST4("smlabb  r0, r1, r2, r3",
1996          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
1997TESTINST4("smlabb  r0, r1, r2, r3",
1998          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
1999TESTINST4("smlabb  r0, r1, r2, r3",
2000          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
2001TESTINST4("smlabb  r0, r1, r2, r3",
2002          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
2003TESTINST4("smlabb  r0, r1, r2, r3",
2004          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
2005TESTINST4("smlabb  r0, r1, r2, r3",
2006          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
2007TESTINST4("smlabb  r0, r1, r2, r3",
2008          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
2009TESTINST4("smlabb  r0, r1, r2, r3",
2010          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
2011TESTINST4("smlabb  r0, r1, r2, r3",
2012          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
2013TESTINST4("smlabb  r0, r1, r2, r3",
2014          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
2015TESTINST4("smlabb  r0, r1, r2, r3",
2016          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
2017TESTINST4("smlabb  r0, r1, r2, r3",
2018          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
2019TESTINST4("smlabb  r0, r1, r2, r3",
2020          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
2021TESTINST4("smlabb  r0, r1, r2, r3",
2022          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
2023TESTINST4("smlabb  r0, r1, r2, r3",
2024          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
2025TESTINST4("smlabb  r0, r1, r2, r3",
2026          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
2027TESTINST4("smlabb  r0, r1, r2, r3",
2028          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
2029TESTINST4("smlabb  r0, r1, r2, r3",
2030          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
2031TESTINST4("smlabb  r0, r1, r2, r3",
2032          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
2033TESTINST4("smlabb  r0, r1, r2, r3",
2034          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
2035TESTINST4("smlabb  r0, r1, r2, r3",
2036          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
2037TESTINST4("smlabb  r0, r1, r2, r3",
2038          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
2039TESTINST4("smlabb  r0, r1, r2, r3",
2040          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
2041TESTINST4("smlabb  r0, r1, r2, r3",
2042          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
2043TESTINST4("smlabb  r0, r1, r2, r3",
2044          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
2045TESTINST4("smlabb  r0, r1, r2, r3",
2046          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
2047TESTINST4("smlabb  r0, r1, r2, r3",
2048          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
2049TESTINST4("smlabb  r0, r1, r2, r3",
2050          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
2051TESTINST4("smlabb  r0, r1, r2, r3",
2052          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
2053TESTINST4("smlabb  r0, r1, r2, r3",
2054          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
2055TESTINST4("smlabb  r0, r1, r2, r3",
2056          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
2057TESTINST4("smlabb  r0, r1, r2, r3",
2058          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
2059TESTINST4("smlabb  r0, r1, r2, r3",
2060          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
2061TESTINST4("smlabb  r0, r1, r2, r3",
2062          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
2063TESTINST4("smlabb  r0, r1, r2, r3",
2064          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
2065TESTINST4("smlabb  r0, r1, r2, r3",
2066          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
2067TESTINST4("smlabb  r0, r1, r2, r3",
2068          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
2069TESTINST4("smlabb  r0, r1, r2, r3",
2070          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
2071TESTINST4("smlabb  r0, r1, r2, r3",
2072          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
2073TESTINST4("smlabb  r0, r1, r2, r3",
2074          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
2075TESTINST4("smlabb  r0, r1, r2, r3",
2076          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
2077TESTINST4("smlabb  r0, r1, r2, r3",
2078          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
2079TESTINST4("smlabb  r0, r1, r2, r3",
2080          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
2081TESTINST4("smlabb  r0, r1, r2, r3",
2082          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
2083TESTINST4("smlabb  r0, r1, r2, r3",
2084          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
2085TESTINST4("smlabb  r0, r1, r2, r3",
2086          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
2087TESTINST4("smlabb  r0, r1, r2, r3",
2088          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
2089TESTINST4("smlabb  r0, r1, r2, r3",
2090          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
2091TESTINST4("smlabb  r0, r1, r2, r3",
2092          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
2093TESTINST4("smlabb  r0, r1, r2, r3",
2094          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
2095  /* smlatt rD, rN, rM, rA */
2096  TESTINST4("smlatt r0, r1, r2, r3",
2097            0x00000003, 0x00000004, 0x00000000, r0,r1,r2,r3, 0);
2098  TESTINST4("smlatt r0, r1, r2, r3",
2099            0x00010003, 0x00020004, 0x00007fff, r0,r1,r2,r3, 0);
2100  TESTINST4("smlatt r0, r1, r2, r3",
2101            0x80010003, 0x7fff0004, 0x00005fff, r0,r1,r2,r3, 0);
2102  TESTINST4("smlatt r0, r1, r2, r3",
2103            0x7fff0003, 0x7fff0004, 0x00007fff, r0,r1,r2,r3, 0);
2104  TESTINST4("smlatt r0, r1, r2, r3",
2105            0xffff0003, 0xffff0004, 0x7fff7fff, r0,r1,r2,r3, 0);
2106  TESTINST4("smlatt r0, r1, r2, r3",
2107            0xfffc0003, 0xffff0004, 0xffffffff, r0,r1,r2,r3, 0);
2108TESTINST4("smlatt  r0, r1, r2, r3",
2109          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
2110TESTINST4("smlatt  r0, r1, r2, r3",
2111          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
2112TESTINST4("smlatt  r0, r1, r2, r3",
2113          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
2114TESTINST4("smlatt  r0, r1, r2, r3",
2115          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
2116TESTINST4("smlatt  r0, r1, r2, r3",
2117          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
2118TESTINST4("smlatt  r0, r1, r2, r3",
2119          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
2120TESTINST4("smlatt  r0, r1, r2, r3",
2121          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
2122TESTINST4("smlatt  r0, r1, r2, r3",
2123          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
2124TESTINST4("smlatt  r0, r1, r2, r3",
2125          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
2126TESTINST4("smlatt  r0, r1, r2, r3",
2127          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
2128TESTINST4("smlatt  r0, r1, r2, r3",
2129          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
2130TESTINST4("smlatt  r0, r1, r2, r3",
2131          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
2132TESTINST4("smlatt  r0, r1, r2, r3",
2133          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
2134TESTINST4("smlatt  r0, r1, r2, r3",
2135          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
2136TESTINST4("smlatt  r0, r1, r2, r3",
2137          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
2138TESTINST4("smlatt  r0, r1, r2, r3",
2139          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
2140TESTINST4("smlatt  r0, r1, r2, r3",
2141          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
2142TESTINST4("smlatt  r0, r1, r2, r3",
2143          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
2144TESTINST4("smlatt  r0, r1, r2, r3",
2145          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
2146TESTINST4("smlatt  r0, r1, r2, r3",
2147          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
2148TESTINST4("smlatt  r0, r1, r2, r3",
2149          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
2150TESTINST4("smlatt  r0, r1, r2, r3",
2151          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
2152TESTINST4("smlatt  r0, r1, r2, r3",
2153          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
2154TESTINST4("smlatt  r0, r1, r2, r3",
2155          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
2156TESTINST4("smlatt  r0, r1, r2, r3",
2157          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
2158TESTINST4("smlatt  r0, r1, r2, r3",
2159          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
2160TESTINST4("smlatt  r0, r1, r2, r3",
2161          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
2162TESTINST4("smlatt  r0, r1, r2, r3",
2163          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
2164TESTINST4("smlatt  r0, r1, r2, r3",
2165          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
2166TESTINST4("smlatt  r0, r1, r2, r3",
2167          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
2168TESTINST4("smlatt  r0, r1, r2, r3",
2169          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
2170TESTINST4("smlatt  r0, r1, r2, r3",
2171          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
2172TESTINST4("smlatt  r0, r1, r2, r3",
2173          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
2174TESTINST4("smlatt  r0, r1, r2, r3",
2175          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
2176TESTINST4("smlatt  r0, r1, r2, r3",
2177          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
2178TESTINST4("smlatt  r0, r1, r2, r3",
2179          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
2180TESTINST4("smlatt  r0, r1, r2, r3",
2181          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
2182TESTINST4("smlatt  r0, r1, r2, r3",
2183          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
2184TESTINST4("smlatt  r0, r1, r2, r3",
2185          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
2186TESTINST4("smlatt  r0, r1, r2, r3",
2187          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
2188TESTINST4("smlatt  r0, r1, r2, r3",
2189          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
2190TESTINST4("smlatt  r0, r1, r2, r3",
2191          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
2192TESTINST4("smlatt  r0, r1, r2, r3",
2193          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
2194TESTINST4("smlatt  r0, r1, r2, r3",
2195          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
2196TESTINST4("smlatt  r0, r1, r2, r3",
2197          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
2198TESTINST4("smlatt  r0, r1, r2, r3",
2199          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
2200TESTINST4("smlatt  r0, r1, r2, r3",
2201          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
2202TESTINST4("smlatt  r0, r1, r2, r3",
2203          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
2204TESTINST4("smlatt  r0, r1, r2, r3",
2205          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
2206TESTINST4("smlatt  r0, r1, r2, r3",
2207          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
2208TESTINST4("smlatt  r0, r1, r2, r3",
2209          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
2210  /* smlatb rD, rN, rM, rA */
2211  TESTINST4("smlatb r0, r1, r2, r3",
2212            0x00000003, 0x00040000, 0x00000000, r0,r1,r2,r3, 0);
2213  TESTINST4("smlatb r0, r1, r2, r3",
2214            0x00010003, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0);
2215  TESTINST4("smlatb r0, r1, r2, r3",
2216            0x80010003, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0);
2217  TESTINST4("smlatb r0, r1, r2, r3",
2218            0x7fff0003, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0);
2219  TESTINST4("smlatb r0, r1, r2, r3",
2220            0xffff0003, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0);
2221  TESTINST4("smlatb r0, r1, r2, r3",
2222            0xfffc0003, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0);
2223TESTINST4("smlatb  r0, r1, r2, r3",
2224          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
2225TESTINST4("smlatb  r0, r1, r2, r3",
2226          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
2227TESTINST4("smlatb  r0, r1, r2, r3",
2228          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
2229TESTINST4("smlatb  r0, r1, r2, r3",
2230          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
2231TESTINST4("smlatb  r0, r1, r2, r3",
2232          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
2233TESTINST4("smlatb  r0, r1, r2, r3",
2234          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
2235TESTINST4("smlatb  r0, r1, r2, r3",
2236          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
2237TESTINST4("smlatb  r0, r1, r2, r3",
2238          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
2239TESTINST4("smlatb  r0, r1, r2, r3",
2240          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
2241TESTINST4("smlatb  r0, r1, r2, r3",
2242          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
2243TESTINST4("smlatb  r0, r1, r2, r3",
2244          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
2245TESTINST4("smlatb  r0, r1, r2, r3",
2246          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
2247TESTINST4("smlatb  r0, r1, r2, r3",
2248          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
2249TESTINST4("smlatb  r0, r1, r2, r3",
2250          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
2251TESTINST4("smlatb  r0, r1, r2, r3",
2252          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
2253TESTINST4("smlatb  r0, r1, r2, r3",
2254          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
2255TESTINST4("smlatb  r0, r1, r2, r3",
2256          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
2257TESTINST4("smlatb  r0, r1, r2, r3",
2258          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
2259TESTINST4("smlatb  r0, r1, r2, r3",
2260          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
2261TESTINST4("smlatb  r0, r1, r2, r3",
2262          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
2263TESTINST4("smlatb  r0, r1, r2, r3",
2264          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
2265TESTINST4("smlatb  r0, r1, r2, r3",
2266          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
2267TESTINST4("smlatb  r0, r1, r2, r3",
2268          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
2269TESTINST4("smlatb  r0, r1, r2, r3",
2270          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
2271TESTINST4("smlatb  r0, r1, r2, r3",
2272          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
2273TESTINST4("smlatb  r0, r1, r2, r3",
2274          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
2275TESTINST4("smlatb  r0, r1, r2, r3",
2276          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
2277TESTINST4("smlatb  r0, r1, r2, r3",
2278          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
2279TESTINST4("smlatb  r0, r1, r2, r3",
2280          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
2281TESTINST4("smlatb  r0, r1, r2, r3",
2282          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
2283TESTINST4("smlatb  r0, r1, r2, r3",
2284          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
2285TESTINST4("smlatb  r0, r1, r2, r3",
2286          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
2287TESTINST4("smlatb  r0, r1, r2, r3",
2288          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
2289TESTINST4("smlatb  r0, r1, r2, r3",
2290          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
2291TESTINST4("smlatb  r0, r1, r2, r3",
2292          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
2293TESTINST4("smlatb  r0, r1, r2, r3",
2294          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
2295TESTINST4("smlatb  r0, r1, r2, r3",
2296          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
2297TESTINST4("smlatb  r0, r1, r2, r3",
2298          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
2299TESTINST4("smlatb  r0, r1, r2, r3",
2300          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
2301TESTINST4("smlatb  r0, r1, r2, r3",
2302          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
2303TESTINST4("smlatb  r0, r1, r2, r3",
2304          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
2305TESTINST4("smlatb  r0, r1, r2, r3",
2306          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
2307TESTINST4("smlatb  r0, r1, r2, r3",
2308          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
2309TESTINST4("smlatb  r0, r1, r2, r3",
2310          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
2311TESTINST4("smlatb  r0, r1, r2, r3",
2312          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
2313TESTINST4("smlatb  r0, r1, r2, r3",
2314          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
2315TESTINST4("smlatb  r0, r1, r2, r3",
2316          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
2317TESTINST4("smlatb  r0, r1, r2, r3",
2318          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
2319TESTINST4("smlatb  r0, r1, r2, r3",
2320          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
2321TESTINST4("smlatb  r0, r1, r2, r3",
2322          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
2323TESTINST4("smlatb  r0, r1, r2, r3",
2324          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
2325  /* smlabt rD, rN, rM, rA */
2326  TESTINST4("smlabt r0, r1, r2, r3",
2327            0x00030000, 0x00000004, 0x00000000, r0,r1,r2,r3, 0);
2328  TESTINST4("smlabt r0, r1, r2, r3",
2329            0x00030001, 0x00020004, 0x00007fff, r0,r1,r2,r3, 0);
2330  TESTINST4("smlabt r0, r1, r2, r3",
2331            0x00038001, 0x7fff0004, 0x00005fff, r0,r1,r2,r3, 0);
2332  TESTINST4("smlabt r0, r1, r2, r3",
2333            0x00037fff, 0x7fff0004, 0x00007fff, r0,r1,r2,r3, 0);
2334  TESTINST4("smlabt r0, r1, r2, r3",
2335            0x0003ffff, 0xffff0004, 0x7fff7fff, r0,r1,r2,r3, 0);
2336  TESTINST4("smlabt r0, r1, r2, r3",
2337            0x0003fffc, 0xffff0004, 0xffffffff, r0,r1,r2,r3, 0);
2338TESTINST4("smlabt  r0, r1, r2, r3",
2339          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
2340TESTINST4("smlabt  r0, r1, r2, r3",
2341          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
2342TESTINST4("smlabt  r0, r1, r2, r3",
2343          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
2344TESTINST4("smlabt  r0, r1, r2, r3",
2345          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
2346TESTINST4("smlabt  r0, r1, r2, r3",
2347          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
2348TESTINST4("smlabt  r0, r1, r2, r3",
2349          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
2350TESTINST4("smlabt  r0, r1, r2, r3",
2351          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
2352TESTINST4("smlabt  r0, r1, r2, r3",
2353          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
2354TESTINST4("smlabt  r0, r1, r2, r3",
2355          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
2356TESTINST4("smlabt  r0, r1, r2, r3",
2357          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
2358TESTINST4("smlabt  r0, r1, r2, r3",
2359          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
2360TESTINST4("smlabt  r0, r1, r2, r3",
2361          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
2362TESTINST4("smlabt  r0, r1, r2, r3",
2363          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
2364TESTINST4("smlabt  r0, r1, r2, r3",
2365          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
2366TESTINST4("smlabt  r0, r1, r2, r3",
2367          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
2368TESTINST4("smlabt  r0, r1, r2, r3",
2369          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
2370TESTINST4("smlabt  r0, r1, r2, r3",
2371          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
2372TESTINST4("smlabt  r0, r1, r2, r3",
2373          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
2374TESTINST4("smlabt  r0, r1, r2, r3",
2375          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
2376TESTINST4("smlabt  r0, r1, r2, r3",
2377          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
2378TESTINST4("smlabt  r0, r1, r2, r3",
2379          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
2380TESTINST4("smlabt  r0, r1, r2, r3",
2381          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
2382TESTINST4("smlabt  r0, r1, r2, r3",
2383          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
2384TESTINST4("smlabt  r0, r1, r2, r3",
2385          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
2386TESTINST4("smlabt  r0, r1, r2, r3",
2387          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
2388TESTINST4("smlabt  r0, r1, r2, r3",
2389          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
2390TESTINST4("smlabt  r0, r1, r2, r3",
2391          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
2392TESTINST4("smlabt  r0, r1, r2, r3",
2393          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
2394TESTINST4("smlabt  r0, r1, r2, r3",
2395          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
2396TESTINST4("smlabt  r0, r1, r2, r3",
2397          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
2398TESTINST4("smlabt  r0, r1, r2, r3",
2399          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
2400TESTINST4("smlabt  r0, r1, r2, r3",
2401          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
2402TESTINST4("smlabt  r0, r1, r2, r3",
2403          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
2404TESTINST4("smlabt  r0, r1, r2, r3",
2405          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
2406TESTINST4("smlabt  r0, r1, r2, r3",
2407          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
2408TESTINST4("smlabt  r0, r1, r2, r3",
2409          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
2410TESTINST4("smlabt  r0, r1, r2, r3",
2411          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
2412TESTINST4("smlabt  r0, r1, r2, r3",
2413          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
2414TESTINST4("smlabt  r0, r1, r2, r3",
2415          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
2416TESTINST4("smlabt  r0, r1, r2, r3",
2417          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
2418TESTINST4("smlabt  r0, r1, r2, r3",
2419          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
2420TESTINST4("smlabt  r0, r1, r2, r3",
2421          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
2422TESTINST4("smlabt  r0, r1, r2, r3",
2423          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
2424TESTINST4("smlabt  r0, r1, r2, r3",
2425          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
2426TESTINST4("smlabt  r0, r1, r2, r3",
2427          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
2428TESTINST4("smlabt  r0, r1, r2, r3",
2429          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
2430TESTINST4("smlabt  r0, r1, r2, r3",
2431          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
2432TESTINST4("smlabt  r0, r1, r2, r3",
2433          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
2434TESTINST4("smlabt  r0, r1, r2, r3",
2435          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
2436TESTINST4("smlabt  r0, r1, r2, r3",
2437          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
2438TESTINST4("smlabt  r0, r1, r2, r3",
2439          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
2440
2441  printf("------------ UQSUB8 -----------------------------------\n");
2442  TESTINST3("uqsub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
2443  TESTINST3("uqsub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
2444  TESTINST3("uqsub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
2445  TESTINST3("uqsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
2446  TESTINST3("uqsub8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0);
2447  TESTINST3("uqsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
2448  TESTINST3("uqsub8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0);
2449  TESTINST3("uqsub8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0);
2450TESTINST3("uqsub8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
2451TESTINST3("uqsub8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
2452TESTINST3("uqsub8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
2453TESTINST3("uqsub8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
2454TESTINST3("uqsub8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
2455TESTINST3("uqsub8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
2456TESTINST3("uqsub8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
2457TESTINST3("uqsub8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
2458TESTINST3("uqsub8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
2459TESTINST3("uqsub8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
2460TESTINST3("uqsub8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
2461TESTINST3("uqsub8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
2462TESTINST3("uqsub8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
2463TESTINST3("uqsub8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
2464TESTINST3("uqsub8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
2465TESTINST3("uqsub8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
2466TESTINST3("uqsub8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
2467TESTINST3("uqsub8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
2468TESTINST3("uqsub8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
2469TESTINST3("uqsub8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
2470TESTINST3("uqsub8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
2471TESTINST3("uqsub8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
2472TESTINST3("uqsub8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
2473TESTINST3("uqsub8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
2474TESTINST3("uqsub8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
2475TESTINST3("uqsub8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
2476TESTINST3("uqsub8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
2477TESTINST3("uqsub8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
2478TESTINST3("uqsub8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
2479TESTINST3("uqsub8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
2480TESTINST3("uqsub8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
2481TESTINST3("uqsub8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
2482TESTINST3("uqsub8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
2483TESTINST3("uqsub8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
2484TESTINST3("uqsub8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
2485TESTINST3("uqsub8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
2486TESTINST3("uqsub8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
2487TESTINST3("uqsub8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
2488TESTINST3("uqsub8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
2489TESTINST3("uqsub8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
2490TESTINST3("uqsub8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
2491TESTINST3("uqsub8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
2492TESTINST3("uqsub8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
2493TESTINST3("uqsub8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
2494TESTINST3("uqsub8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
2495TESTINST3("uqsub8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
2496TESTINST3("uqsub8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
2497TESTINST3("uqsub8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
2498TESTINST3("uqsub8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
2499TESTINST3("uqsub8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
2500TESTINST3("uqsub8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
2501
2502  printf("------------ UQADD8 -----------------------------------\n");
2503  TESTINST3("uqadd8 r0, r1, r2", 0x0009ffff, 0x001800aa, r0, r1, r2, 0);
2504  TESTINST3("uqadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
2505  TESTINST3("uqadd8 r0, r1, r2", 0x00aa0018, 0xffff0009, r0, r1, r2, 0);
2506  TESTINST3("uqadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
2507  TESTINST3("uqadd8 r0, r1, r2", 0x0000aa18, 0xff00ff09, r0, r1, r2, 0);
2508  TESTINST3("uqadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
2509  TESTINST3("uqadd8 r0, r1, r2", 0xff9fefcc, 0xff9ffedd, r0, r1, r2, 0);
2510  TESTINST3("uqadd8 r0, r1, r2", 0xff07ff09, 0xaa020318, r0, r1, r2, 0);
2511TESTINST3("uqadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
2512TESTINST3("uqadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
2513TESTINST3("uqadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
2514TESTINST3("uqadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
2515TESTINST3("uqadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
2516TESTINST3("uqadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
2517TESTINST3("uqadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
2518TESTINST3("uqadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
2519TESTINST3("uqadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
2520TESTINST3("uqadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
2521TESTINST3("uqadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
2522TESTINST3("uqadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
2523TESTINST3("uqadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
2524TESTINST3("uqadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
2525TESTINST3("uqadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
2526TESTINST3("uqadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
2527TESTINST3("uqadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
2528TESTINST3("uqadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
2529TESTINST3("uqadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
2530TESTINST3("uqadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
2531TESTINST3("uqadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
2532TESTINST3("uqadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
2533TESTINST3("uqadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
2534TESTINST3("uqadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
2535TESTINST3("uqadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
2536TESTINST3("uqadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
2537TESTINST3("uqadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
2538TESTINST3("uqadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
2539TESTINST3("uqadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
2540TESTINST3("uqadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
2541TESTINST3("uqadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
2542TESTINST3("uqadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
2543TESTINST3("uqadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
2544TESTINST3("uqadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
2545TESTINST3("uqadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
2546TESTINST3("uqadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
2547TESTINST3("uqadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
2548TESTINST3("uqadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
2549TESTINST3("uqadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
2550TESTINST3("uqadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
2551TESTINST3("uqadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
2552TESTINST3("uqadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
2553TESTINST3("uqadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
2554TESTINST3("uqadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
2555TESTINST3("uqadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
2556TESTINST3("uqadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
2557TESTINST3("uqadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
2558TESTINST3("uqadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
2559TESTINST3("uqadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
2560TESTINST3("uqadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
2561TESTINST3("uqadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
2562
2563  printf("------------ SEL --------------------------------------\n");
2564  TESTINST3("sel r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
2565  TESTINST3("sel r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
2566  TESTINST3("sel r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
2567  TESTINST3("sel r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
2568  TESTINST3("sel r0, r1, r2", 0xfffcffff, 0xffff0001, r0, r1, r2, 0);
2569  TESTINST3("sel r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
2570TESTINST3("sel r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
2571TESTINST3("sel r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
2572TESTINST3("sel r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
2573TESTINST3("sel r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
2574TESTINST3("sel r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
2575TESTINST3("sel r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
2576TESTINST3("sel r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
2577TESTINST3("sel r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
2578TESTINST3("sel r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
2579TESTINST3("sel r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
2580TESTINST3("sel r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
2581TESTINST3("sel r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
2582TESTINST3("sel r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
2583TESTINST3("sel r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
2584TESTINST3("sel r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
2585TESTINST3("sel r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
2586TESTINST3("sel r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
2587TESTINST3("sel r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
2588TESTINST3("sel r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
2589TESTINST3("sel r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
2590TESTINST3("sel r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
2591TESTINST3("sel r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
2592TESTINST3("sel r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
2593TESTINST3("sel r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
2594TESTINST3("sel r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
2595TESTINST3("sel r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
2596TESTINST3("sel r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
2597TESTINST3("sel r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
2598TESTINST3("sel r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
2599TESTINST3("sel r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
2600TESTINST3("sel r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
2601TESTINST3("sel r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
2602TESTINST3("sel r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
2603TESTINST3("sel r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
2604TESTINST3("sel r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
2605TESTINST3("sel r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
2606TESTINST3("sel r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
2607TESTINST3("sel r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
2608TESTINST3("sel r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
2609TESTINST3("sel r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
2610TESTINST3("sel r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
2611TESTINST3("sel r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
2612TESTINST3("sel r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
2613TESTINST3("sel r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
2614TESTINST3("sel r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
2615TESTINST3("sel r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
2616TESTINST3("sel r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
2617TESTINST3("sel r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
2618TESTINST3("sel r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
2619TESTINST3("sel r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
2620TESTINST3("sel r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
2621
2622  printf("------------ QSUB8-------------------------------------\n");
2623  TESTINST3("qsub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
2624  TESTINST3("qsub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
2625  TESTINST3("qsub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
2626  TESTINST3("qsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
2627  TESTINST3("qsub8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
2628  TESTINST3("qsub8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0);
2629  TESTINST3("qsub8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
2630  TESTINST3("qsub8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
2631TESTINST3("qsub8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
2632TESTINST3("qsub8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
2633TESTINST3("qsub8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
2634TESTINST3("qsub8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
2635TESTINST3("qsub8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
2636TESTINST3("qsub8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
2637TESTINST3("qsub8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
2638TESTINST3("qsub8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
2639TESTINST3("qsub8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
2640TESTINST3("qsub8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
2641TESTINST3("qsub8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
2642TESTINST3("qsub8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
2643TESTINST3("qsub8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
2644TESTINST3("qsub8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
2645TESTINST3("qsub8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
2646TESTINST3("qsub8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
2647TESTINST3("qsub8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
2648TESTINST3("qsub8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
2649TESTINST3("qsub8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
2650TESTINST3("qsub8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
2651TESTINST3("qsub8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
2652TESTINST3("qsub8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
2653TESTINST3("qsub8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
2654TESTINST3("qsub8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
2655TESTINST3("qsub8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
2656TESTINST3("qsub8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
2657TESTINST3("qsub8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
2658TESTINST3("qsub8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
2659TESTINST3("qsub8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
2660TESTINST3("qsub8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
2661TESTINST3("qsub8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
2662TESTINST3("qsub8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
2663TESTINST3("qsub8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
2664TESTINST3("qsub8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
2665TESTINST3("qsub8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
2666TESTINST3("qsub8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
2667TESTINST3("qsub8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
2668TESTINST3("qsub8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
2669TESTINST3("qsub8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
2670TESTINST3("qsub8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
2671TESTINST3("qsub8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
2672TESTINST3("qsub8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
2673TESTINST3("qsub8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
2674TESTINST3("qsub8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
2675TESTINST3("qsub8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
2676TESTINST3("qsub8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
2677TESTINST3("qsub8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
2678TESTINST3("qsub8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
2679TESTINST3("qsub8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
2680TESTINST3("qsub8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
2681TESTINST3("qsub8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
2682
2683  printf("------------ QADD8-------------------------------------\n");
2684  TESTINST3("qadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
2685  TESTINST3("qadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
2686  TESTINST3("qadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
2687  TESTINST3("qadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
2688  TESTINST3("qadd8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
2689  TESTINST3("qadd8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0);
2690  TESTINST3("qadd8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
2691  TESTINST3("qadd8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
2692TESTINST3("qadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
2693TESTINST3("qadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
2694TESTINST3("qadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
2695TESTINST3("qadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
2696TESTINST3("qadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
2697TESTINST3("qadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
2698TESTINST3("qadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
2699TESTINST3("qadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
2700TESTINST3("qadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
2701TESTINST3("qadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
2702TESTINST3("qadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
2703TESTINST3("qadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
2704TESTINST3("qadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
2705TESTINST3("qadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
2706TESTINST3("qadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
2707TESTINST3("qadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
2708TESTINST3("qadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
2709TESTINST3("qadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
2710TESTINST3("qadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
2711TESTINST3("qadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
2712TESTINST3("qadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
2713TESTINST3("qadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
2714TESTINST3("qadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
2715TESTINST3("qadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
2716TESTINST3("qadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
2717TESTINST3("qadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
2718TESTINST3("qadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
2719TESTINST3("qadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
2720TESTINST3("qadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
2721TESTINST3("qadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
2722TESTINST3("qadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
2723TESTINST3("qadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
2724TESTINST3("qadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
2725TESTINST3("qadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
2726TESTINST3("qadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
2727TESTINST3("qadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
2728TESTINST3("qadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
2729TESTINST3("qadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
2730TESTINST3("qadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
2731TESTINST3("qadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
2732TESTINST3("qadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
2733TESTINST3("qadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
2734TESTINST3("qadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
2735TESTINST3("qadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
2736TESTINST3("qadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
2737TESTINST3("qadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
2738TESTINST3("qadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
2739TESTINST3("qadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
2740TESTINST3("qadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
2741TESTINST3("qadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
2742TESTINST3("qadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
2743
2744  printf("------------ SHADD8 -----------------------------------\n");
2745  TESTINST3("shadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
2746  TESTINST3("shadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
2747  TESTINST3("shadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
2748  TESTINST3("shadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
2749  TESTINST3("shadd8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
2750  TESTINST3("shadd8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0);
2751  TESTINST3("shadd8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
2752  TESTINST3("shadd8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
2753TESTINST3("shadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
2754TESTINST3("shadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
2755TESTINST3("shadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
2756TESTINST3("shadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
2757TESTINST3("shadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
2758TESTINST3("shadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
2759TESTINST3("shadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
2760TESTINST3("shadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
2761TESTINST3("shadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
2762TESTINST3("shadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
2763TESTINST3("shadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
2764TESTINST3("shadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
2765TESTINST3("shadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
2766TESTINST3("shadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
2767TESTINST3("shadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
2768TESTINST3("shadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
2769TESTINST3("shadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
2770TESTINST3("shadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
2771TESTINST3("shadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
2772TESTINST3("shadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
2773TESTINST3("shadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
2774TESTINST3("shadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
2775TESTINST3("shadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
2776TESTINST3("shadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
2777TESTINST3("shadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
2778TESTINST3("shadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
2779TESTINST3("shadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
2780TESTINST3("shadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
2781TESTINST3("shadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
2782TESTINST3("shadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
2783TESTINST3("shadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
2784TESTINST3("shadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
2785TESTINST3("shadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
2786TESTINST3("shadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
2787TESTINST3("shadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
2788TESTINST3("shadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
2789TESTINST3("shadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
2790TESTINST3("shadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
2791TESTINST3("shadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
2792TESTINST3("shadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
2793TESTINST3("shadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
2794TESTINST3("shadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
2795TESTINST3("shadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
2796TESTINST3("shadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
2797TESTINST3("shadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
2798TESTINST3("shadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
2799TESTINST3("shadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
2800TESTINST3("shadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
2801TESTINST3("shadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
2802TESTINST3("shadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
2803TESTINST3("shadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
2804
2805  printf("------------ UHADD8 -----------------------------------\n");
2806  TESTINST3("uhadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
2807  TESTINST3("uhadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
2808  TESTINST3("uhadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
2809  TESTINST3("uhadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
2810  TESTINST3("uhadd8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
2811  TESTINST3("uhadd8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0);
2812  TESTINST3("uhadd8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
2813  TESTINST3("uhadd8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
2814TESTINST3("uhadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
2815TESTINST3("uhadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
2816TESTINST3("uhadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
2817TESTINST3("uhadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
2818TESTINST3("uhadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
2819TESTINST3("uhadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
2820TESTINST3("uhadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
2821TESTINST3("uhadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
2822TESTINST3("uhadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
2823TESTINST3("uhadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
2824TESTINST3("uhadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
2825TESTINST3("uhadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
2826TESTINST3("uhadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
2827TESTINST3("uhadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
2828TESTINST3("uhadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
2829TESTINST3("uhadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
2830TESTINST3("uhadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
2831TESTINST3("uhadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
2832TESTINST3("uhadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
2833TESTINST3("uhadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
2834TESTINST3("uhadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
2835TESTINST3("uhadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
2836TESTINST3("uhadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
2837TESTINST3("uhadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
2838TESTINST3("uhadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
2839TESTINST3("uhadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
2840TESTINST3("uhadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
2841TESTINST3("uhadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
2842TESTINST3("uhadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
2843TESTINST3("uhadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
2844TESTINST3("uhadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
2845TESTINST3("uhadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
2846TESTINST3("uhadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
2847TESTINST3("uhadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
2848TESTINST3("uhadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
2849TESTINST3("uhadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
2850TESTINST3("uhadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
2851TESTINST3("uhadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
2852TESTINST3("uhadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
2853TESTINST3("uhadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
2854TESTINST3("uhadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
2855TESTINST3("uhadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
2856TESTINST3("uhadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
2857TESTINST3("uhadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
2858TESTINST3("uhadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
2859TESTINST3("uhadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
2860TESTINST3("uhadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
2861TESTINST3("uhadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
2862TESTINST3("uhadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
2863TESTINST3("uhadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
2864TESTINST3("uhadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
2865
2866  printf("----------------- SSAT ----------------- \n");
2867  TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x80008000, r0, r1, 0);
2868  TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x80008000, r0, r1, 0);
2869  TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x80008000, r0, r1, 0);
2870  TESTINST2("ssat  r0, #12, r1, ASR #16", 0x80008000, r0, r1, 0);
2871  TESTINST2("ssat  r0, #16, r1, LSL #12", 0xffff0009, r0, r1, 0);
2872  TESTINST2("ssat  r0, #18, r1, LSL #8",  0xffff0009, r0, r1, 0);
2873  TESTINST2("ssat  r0, #24, r1, ASR #6",  0xffff0009, r0, r1, 0);
2874  TESTINST2("ssat  r0, #31, r1, ASR #1",  0xffff0009, r0, r1, 0);
2875TESTINST2("ssat  r0, #1,   r1", 0x256bfdd6, r0, r1, 0);
2876TESTINST2("ssat  r0, #1,   r1", 0xc02a0c05, r0, r1, 0);
2877TESTINST2("ssat  r0, #1,   r1", 0xee2fa46e, r0, r1, 0);
2878TESTINST2("ssat  r0, #1,   r1", 0x97a7da20, r0, r1, 0);
2879TESTINST2("ssat  r0, #32,  r1", 0xa231d5e6, r0, r1, 0);
2880TESTINST2("ssat  r0, #32,  r1", 0x10e1968a, r0, r1, 0);
2881TESTINST2("ssat  r0, #32,  r1", 0x0e089270, r0, r1, 0);
2882TESTINST2("ssat  r0, #32,  r1", 0x9e8e0185, r0, r1, 0);
2883TESTINST2("ssat  r0, #32,  r1", 0x3096f12e, r0, r1, 0);
2884TESTINST2("ssat  r0, #32,  r1", 0xffc134df, r0, r1, 0);
2885TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x256bfdd6, r0, r1, 0);
2886TESTINST2("ssat  r0, #1,  r1, LSL #31", 0xc02a0c05, r0, r1, 0);
2887TESTINST2("ssat  r0, #1,  r1, LSL #31", 0xee2fa46e, r0, r1, 0);
2888TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x97a7da20, r0, r1, 0);
2889TESTINST2("ssat  r0, #1,  r1, LSL #31", 0xa231d5e6, r0, r1, 0);
2890TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x10e1968a, r0, r1, 0);
2891TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x0e089270, r0, r1, 0);
2892TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x9e8e0185, r0, r1, 0);
2893TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x3096f12e, r0, r1, 0);
2894TESTINST2("ssat  r0, #1,  r1, LSL #31", 0xffc134df, r0, r1, 0);
2895TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x256bfdd6, r0, r1, 0);
2896TESTINST2("ssat  r0, #3,  r1, LSL #28", 0xc02a0c05, r0, r1, 0);
2897TESTINST2("ssat  r0, #3,  r1, LSL #28", 0xee2fa46e, r0, r1, 0);
2898TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x97a7da20, r0, r1, 0);
2899TESTINST2("ssat  r0, #3,  r1, LSL #28", 0xa231d5e6, r0, r1, 0);
2900TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x10e1968a, r0, r1, 0);
2901TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x0e089270, r0, r1, 0);
2902TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x9e8e0185, r0, r1, 0);
2903TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x3096f12e, r0, r1, 0);
2904TESTINST2("ssat  r0, #3,  r1, LSL #28", 0xffc134df, r0, r1, 0);
2905TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x256bfdd6, r0, r1, 0);
2906TESTINST2("ssat  r0, #6,  r1, LSL #24", 0xc02a0c05, r0, r1, 0);
2907TESTINST2("ssat  r0, #6,  r1, LSL #24", 0xee2fa46e, r0, r1, 0);
2908TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x97a7da20, r0, r1, 0);
2909TESTINST2("ssat  r0, #6,  r1, LSL #24", 0xa231d5e6, r0, r1, 0);
2910TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x10e1968a, r0, r1, 0);
2911TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x0e089270, r0, r1, 0);
2912TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x9e8e0185, r0, r1, 0);
2913TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x3096f12e, r0, r1, 0);
2914TESTINST2("ssat  r0, #6,  r1, LSL #24", 0xffc134df, r0, r1, 0);
2915TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x256bfdd6, r0, r1, 0);
2916TESTINST2("ssat  r0, #8,  r1, ASR #18", 0xc02a0c05, r0, r1, 0);
2917TESTINST2("ssat  r0, #8,  r1, ASR #18", 0xee2fa46e, r0, r1, 0);
2918TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x97a7da20, r0, r1, 0);
2919TESTINST2("ssat  r0, #8,  r1, ASR #18", 0xa231d5e6, r0, r1, 0);
2920TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x10e1968a, r0, r1, 0);
2921TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x0e089270, r0, r1, 0);
2922TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x9e8e0185, r0, r1, 0);
2923TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x3096f12e, r0, r1, 0);
2924TESTINST2("ssat  r0, #8,  r1, ASR #18", 0xffc134df, r0, r1, 0);
2925TESTINST2("ssat  r0, #12, r1, ASR #16", 0x256bfdd6, r0, r1, 0);
2926TESTINST2("ssat  r0, #12, r1, ASR #16", 0xc02a0c05, r0, r1, 0);
2927TESTINST2("ssat  r0, #12, r1, ASR #16", 0xee2fa46e, r0, r1, 0);
2928TESTINST2("ssat  r0, #12, r1, ASR #16", 0x97a7da20, r0, r1, 0);
2929TESTINST2("ssat  r0, #12, r1, ASR #16", 0xa231d5e6, r0, r1, 0);
2930TESTINST2("ssat  r0, #12, r1, ASR #16", 0x10e1968a, r0, r1, 0);
2931TESTINST2("ssat  r0, #12, r1, ASR #16", 0x0e089270, r0, r1, 0);
2932TESTINST2("ssat  r0, #12, r1, ASR #16", 0x9e8e0185, r0, r1, 0);
2933TESTINST2("ssat  r0, #12, r1, ASR #16", 0x3096f12e, r0, r1, 0);
2934TESTINST2("ssat  r0, #12, r1, ASR #16", 0xffc134df, r0, r1, 0);
2935TESTINST2("ssat  r0, #16, r1, LSL #12", 0x256bfdd6, r0, r1, 0);
2936TESTINST2("ssat  r0, #16, r1, LSL #12", 0xc02a0c05, r0, r1, 0);
2937TESTINST2("ssat  r0, #16, r1, LSL #12", 0xee2fa46e, r0, r1, 0);
2938TESTINST2("ssat  r0, #16, r1, LSL #12", 0x97a7da20, r0, r1, 0);
2939TESTINST2("ssat  r0, #16, r1, LSL #12", 0xa231d5e6, r0, r1, 0);
2940TESTINST2("ssat  r0, #16, r1, LSL #12", 0x10e1968a, r0, r1, 0);
2941TESTINST2("ssat  r0, #16, r1, LSL #12", 0x0e089270, r0, r1, 0);
2942TESTINST2("ssat  r0, #16, r1, LSL #12", 0x9e8e0185, r0, r1, 0);
2943TESTINST2("ssat  r0, #16, r1, LSL #12", 0x3096f12e, r0, r1, 0);
2944TESTINST2("ssat  r0, #16, r1, LSL #12", 0xffc134df, r0, r1, 0);
2945TESTINST2("ssat  r0, #18, r1, LSL #8", 0x256bfdd6, r0, r1, 0);
2946TESTINST2("ssat  r0, #18, r1, LSL #8", 0xc02a0c05, r0, r1, 0);
2947TESTINST2("ssat  r0, #18, r1, LSL #8", 0xee2fa46e, r0, r1, 0);
2948TESTINST2("ssat  r0, #18, r1, LSL #8", 0x97a7da20, r0, r1, 0);
2949TESTINST2("ssat  r0, #18, r1, LSL #8", 0xa231d5e6, r0, r1, 0);
2950TESTINST2("ssat  r0, #18, r1, LSL #8", 0x10e1968a, r0, r1, 0);
2951TESTINST2("ssat  r0, #18, r1, LSL #8", 0x0e089270, r0, r1, 0);
2952TESTINST2("ssat  r0, #18, r1, LSL #8", 0x9e8e0185, r0, r1, 0);
2953TESTINST2("ssat  r0, #18, r1, LSL #8", 0x3096f12e, r0, r1, 0);
2954TESTINST2("ssat  r0, #18, r1, LSL #8", 0xffc134df, r0, r1, 0);
2955TESTINST2("ssat  r0, #24, r1, ASR #6", 0x256bfdd6, r0, r1, 0);
2956TESTINST2("ssat  r0, #24, r1, ASR #6", 0xc02a0c05, r0, r1, 0);
2957TESTINST2("ssat  r0, #24, r1, ASR #6", 0xee2fa46e, r0, r1, 0);
2958TESTINST2("ssat  r0, #24, r1, ASR #6", 0x97a7da20, r0, r1, 0);
2959TESTINST2("ssat  r0, #24, r1, ASR #6", 0xa231d5e6, r0, r1, 0);
2960TESTINST2("ssat  r0, #24, r1, ASR #6", 0x10e1968a, r0, r1, 0);
2961TESTINST2("ssat  r0, #24, r1, ASR #6", 0x0e089270, r0, r1, 0);
2962TESTINST2("ssat  r0, #24, r1, ASR #6", 0x9e8e0185, r0, r1, 0);
2963TESTINST2("ssat  r0, #24, r1, ASR #6", 0x3096f12e, r0, r1, 0);
2964TESTINST2("ssat  r0, #24, r1, ASR #6", 0xffc134df, r0, r1, 0);
2965TESTINST2("ssat  r0, #28, r1, ASR #3", 0x256bfdd6, r0, r1, 0);
2966TESTINST2("ssat  r0, #28, r1, ASR #3", 0xc02a0c05, r0, r1, 0);
2967TESTINST2("ssat  r0, #28, r1, ASR #3", 0xee2fa46e, r0, r1, 0);
2968TESTINST2("ssat  r0, #28, r1, ASR #3", 0x97a7da20, r0, r1, 0);
2969TESTINST2("ssat  r0, #28, r1, ASR #3", 0xa231d5e6, r0, r1, 0);
2970TESTINST2("ssat  r0, #28, r1, ASR #3", 0x10e1968a, r0, r1, 0);
2971TESTINST2("ssat  r0, #28, r1, ASR #3", 0x0e089270, r0, r1, 0);
2972TESTINST2("ssat  r0, #28, r1, ASR #3", 0x9e8e0185, r0, r1, 0);
2973TESTINST2("ssat  r0, #28, r1, ASR #3", 0x3096f12e, r0, r1, 0);
2974TESTINST2("ssat  r0, #28, r1, ASR #3", 0xffc134df, r0, r1, 0);
2975TESTINST2("ssat  r0, #31, r1, ASR #1", 0x256bfdd6, r0, r1, 0);
2976TESTINST2("ssat  r0, #31, r1, ASR #1", 0xc02a0c05, r0, r1, 0);
2977TESTINST2("ssat  r0, #31, r1, ASR #1", 0xee2fa46e, r0, r1, 0);
2978TESTINST2("ssat  r0, #31, r1, ASR #1", 0x97a7da20, r0, r1, 0);
2979TESTINST2("ssat  r0, #31, r1, ASR #1", 0xa231d5e6, r0, r1, 0);
2980TESTINST2("ssat  r0, #31, r1, ASR #1", 0x10e1968a, r0, r1, 0);
2981TESTINST2("ssat  r0, #31, r1, ASR #1", 0x0e089270, r0, r1, 0);
2982TESTINST2("ssat  r0, #31, r1, ASR #1", 0x9e8e0185, r0, r1, 0);
2983TESTINST2("ssat  r0, #31, r1, ASR #1", 0x3096f12e, r0, r1, 0);
2984TESTINST2("ssat  r0, #31, r1, ASR #1", 0xffc134df, r0, r1, 0);
2985#ifndef __thumb__
2986TESTINST2("ssat  r0, #1, r1, ASR #32", 0x256bfdd6, r0, r1, 0);
2987TESTINST2("ssat  r0, #1, r1, ASR #32", 0xc02a0c05, r0, r1, 0);
2988TESTINST2("ssat  r0, #1, r1, ASR #32", 0xee2fa46e, r0, r1, 0);
2989TESTINST2("ssat  r0, #1, r1, ASR #32", 0x97a7da20, r0, r1, 0);
2990TESTINST2("ssat  r0, #1, r1, ASR #32", 0xa231d5e6, r0, r1, 0);
2991TESTINST2("ssat  r0, #1, r1, ASR #32", 0x10e1968a, r0, r1, 0);
2992TESTINST2("ssat  r0, #1, r1, ASR #32", 0x0e089270, r0, r1, 0);
2993TESTINST2("ssat  r0, #1, r1, ASR #32", 0x9e8e0185, r0, r1, 0);
2994TESTINST2("ssat  r0, #1, r1, ASR #32", 0x3096f12e, r0, r1, 0);
2995TESTINST2("ssat  r0, #1, r1, ASR #32", 0xffc134df, r0, r1, 0);
2996TESTINST2("ssat  r0, #32, r1, ASR #32", 0x256bfdd6, r0, r1, 0);
2997TESTINST2("ssat  r0, #32, r1, ASR #32", 0xc02a0c05, r0, r1, 0);
2998TESTINST2("ssat  r0, #32, r1, ASR #32", 0xee2fa46e, r0, r1, 0);
2999TESTINST2("ssat  r0, #32, r1, ASR #32", 0x97a7da20, r0, r1, 0);
3000TESTINST2("ssat  r0, #32, r1, ASR #32", 0xa231d5e6, r0, r1, 0);
3001TESTINST2("ssat  r0, #32, r1, ASR #32", 0x10e1968a, r0, r1, 0);
3002TESTINST2("ssat  r0, #32, r1, ASR #32", 0x0e089270, r0, r1, 0);
3003TESTINST2("ssat  r0, #32, r1, ASR #32", 0x9e8e0185, r0, r1, 0);
3004TESTINST2("ssat  r0, #32, r1, ASR #32", 0x3096f12e, r0, r1, 0);
3005TESTINST2("ssat  r0, #32, r1, ASR #32", 0xffc134df, r0, r1, 0);
3006#endif
3007
3008  printf("---------------- SADD8 ----------------- \n");
3009  TESTINST3("sadd8 r0, r1, r2", 0x00f7ffff, 0x00e800fd, r0, r1, r2, 0);
3010  TESTINST3("sadd8 r0, r1, r2", 0x00e800fd, 0x00f7ffff, r0, r1, r2, 0);
3011  TESTINST3("sadd8 r0, r1, r2", 0x00fd00e8, 0xffff00f7, r0, r1, r2, 0);
3012  TESTINST3("sadd8 r0, r1, r2", 0xffff00f7, 0x00fd0018, r0, r1, r2, 0);
3013  TESTINST3("sadd8 r0, r1, r2", 0x0000fd18, 0xff00fff7, r0, r1, r2, 0);
3014  TESTINST3("sadd8 r0, r1, r2", 0xffff00f7, 0x00fd00e8, r0, r1, r2, 0);
3015  TESTINST3("sadd8 r0, r1, r2", 0x00fefd18, 0xff07fff7, r0, r1, r2, 0);
3016  TESTINST3("sadd8 r0, r1, r2", 0xff07fff7, 0x00fefde8, r0, r1, r2, 0);
3017TESTINST3("sadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
3018TESTINST3("sadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
3019TESTINST3("sadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
3020TESTINST3("sadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
3021TESTINST3("sadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
3022TESTINST3("sadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
3023TESTINST3("sadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
3024TESTINST3("sadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
3025TESTINST3("sadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
3026TESTINST3("sadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
3027TESTINST3("sadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
3028TESTINST3("sadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
3029TESTINST3("sadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
3030TESTINST3("sadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
3031TESTINST3("sadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
3032TESTINST3("sadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
3033TESTINST3("sadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
3034TESTINST3("sadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
3035TESTINST3("sadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
3036TESTINST3("sadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
3037TESTINST3("sadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
3038TESTINST3("sadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
3039TESTINST3("sadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
3040TESTINST3("sadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
3041TESTINST3("sadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
3042TESTINST3("sadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
3043TESTINST3("sadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
3044TESTINST3("sadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
3045TESTINST3("sadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
3046TESTINST3("sadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
3047TESTINST3("sadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
3048TESTINST3("sadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
3049TESTINST3("sadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
3050TESTINST3("sadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
3051TESTINST3("sadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
3052TESTINST3("sadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
3053TESTINST3("sadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
3054TESTINST3("sadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
3055TESTINST3("sadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
3056TESTINST3("sadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
3057TESTINST3("sadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
3058TESTINST3("sadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3059TESTINST3("sadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3060TESTINST3("sadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3061TESTINST3("sadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3062TESTINST3("sadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3063TESTINST3("sadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3064TESTINST3("sadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3065TESTINST3("sadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3066TESTINST3("sadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3067TESTINST3("sadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3068
3069  printf("---------------- SSUB8 ----------------- \n");
3070  TESTINST3("ssub8 r0, r1, r2", 0x00f7ffff, 0x00e800fd, r0, r1, r2, 0);
3071  TESTINST3("ssub8 r0, r1, r2", 0x00e800fd, 0x00f7ffff, r0, r1, r2, 0);
3072  TESTINST3("ssub8 r0, r1, r2", 0x00fd00e8, 0xffff00f7, r0, r1, r2, 0);
3073  TESTINST3("ssub8 r0, r1, r2", 0xffff00f7, 0x00fd0018, r0, r1, r2, 0);
3074  TESTINST3("ssub8 r0, r1, r2", 0x0000fd18, 0xff00fff7, r0, r1, r2, 0);
3075  TESTINST3("ssub8 r0, r1, r2", 0xffff00f7, 0x00fd00e8, r0, r1, r2, 0);
3076  TESTINST3("ssub8 r0, r1, r2", 0x00fefd18, 0xff07fff7, r0, r1, r2, 0);
3077  TESTINST3("ssub8 r0, r1, r2", 0xff07fff7, 0x00fefde8, r0, r1, r2, 0);
3078TESTINST3("ssub8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
3079TESTINST3("ssub8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
3080TESTINST3("ssub8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
3081TESTINST3("ssub8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
3082TESTINST3("ssub8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
3083TESTINST3("ssub8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
3084TESTINST3("ssub8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
3085TESTINST3("ssub8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
3086TESTINST3("ssub8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
3087TESTINST3("ssub8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
3088TESTINST3("ssub8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
3089TESTINST3("ssub8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
3090TESTINST3("ssub8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
3091TESTINST3("ssub8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
3092TESTINST3("ssub8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
3093TESTINST3("ssub8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
3094TESTINST3("ssub8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
3095TESTINST3("ssub8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
3096TESTINST3("ssub8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
3097TESTINST3("ssub8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
3098TESTINST3("ssub8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
3099TESTINST3("ssub8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
3100TESTINST3("ssub8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
3101TESTINST3("ssub8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
3102TESTINST3("ssub8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
3103TESTINST3("ssub8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
3104TESTINST3("ssub8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
3105TESTINST3("ssub8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
3106TESTINST3("ssub8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
3107TESTINST3("ssub8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
3108TESTINST3("ssub8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
3109TESTINST3("ssub8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
3110TESTINST3("ssub8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
3111TESTINST3("ssub8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
3112TESTINST3("ssub8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
3113TESTINST3("ssub8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
3114TESTINST3("ssub8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
3115TESTINST3("ssub8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
3116TESTINST3("ssub8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
3117TESTINST3("ssub8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
3118TESTINST3("ssub8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
3119TESTINST3("ssub8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3120TESTINST3("ssub8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3121TESTINST3("ssub8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3122TESTINST3("ssub8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3123TESTINST3("ssub8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3124TESTINST3("ssub8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3125TESTINST3("ssub8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3126TESTINST3("ssub8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3127TESTINST3("ssub8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3128TESTINST3("ssub8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3129
3130  printf("------------ SXTAB ------------\n");
3131  TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
3132  TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
3133  TESTINST3("sxtab r0, r1, r2, ROR #8",  0x31415927, 0x27182819, r0, r1, r2, 0);
3134  TESTINST3("sxtab r0, r1, r2, ROR #0",  0x31415927, 0x27182819, r0, r1, r2, 0);
3135
3136  TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0);
3137  TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0);
3138  TESTINST3("sxtab r0, r1, r2, ROR #8",  0x31415927, 0x27182899, r0, r1, r2, 0);
3139  TESTINST3("sxtab r0, r1, r2, ROR #0",  0x31415927, 0x27182899, r0, r1, r2, 0);
3140
3141TESTINST3("sxtab r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3142TESTINST3("sxtab r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3143TESTINST3("sxtab r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3144TESTINST3("sxtab r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3145TESTINST3("sxtab r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3146TESTINST3("sxtab r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3147TESTINST3("sxtab r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3148TESTINST3("sxtab r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3149TESTINST3("sxtab r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3150TESTINST3("sxtab r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3151
3152TESTINST3("sxtab r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3153TESTINST3("sxtab r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3154TESTINST3("sxtab r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3155TESTINST3("sxtab r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3156TESTINST3("sxtab r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3157TESTINST3("sxtab r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3158TESTINST3("sxtab r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3159TESTINST3("sxtab r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3160TESTINST3("sxtab r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3161TESTINST3("sxtab r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3162
3163TESTINST3("sxtab r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3164TESTINST3("sxtab r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3165TESTINST3("sxtab r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3166TESTINST3("sxtab r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3167TESTINST3("sxtab r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3168TESTINST3("sxtab r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3169TESTINST3("sxtab r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3170TESTINST3("sxtab r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3171TESTINST3("sxtab r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3172TESTINST3("sxtab r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3173
3174TESTINST3("sxtab r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3175TESTINST3("sxtab r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3176TESTINST3("sxtab r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3177TESTINST3("sxtab r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3178TESTINST3("sxtab r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3179TESTINST3("sxtab r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3180TESTINST3("sxtab r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3181TESTINST3("sxtab r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3182TESTINST3("sxtab r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3183TESTINST3("sxtab r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3184
3185  printf("------------ UXTAB ------------\n");
3186  TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
3187  TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
3188  TESTINST3("uxtab r0, r1, r2, ROR #8",  0x31415927, 0x27182819, r0, r1, r2, 0);
3189  TESTINST3("uxtab r0, r1, r2, ROR #0",  0x31415927, 0x27182819, r0, r1, r2, 0);
3190
3191  TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0);
3192  TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0);
3193  TESTINST3("uxtab r0, r1, r2, ROR #8",  0x31415927, 0x27182899, r0, r1, r2, 0);
3194  TESTINST3("uxtab r0, r1, r2, ROR #0",  0x31415927, 0x27182899, r0, r1, r2, 0);
3195
3196TESTINST3("uxtab r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3197TESTINST3("uxtab r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3198TESTINST3("uxtab r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3199TESTINST3("uxtab r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3200TESTINST3("uxtab r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3201TESTINST3("uxtab r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3202TESTINST3("uxtab r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3203TESTINST3("uxtab r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3204TESTINST3("uxtab r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3205TESTINST3("uxtab r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3206
3207TESTINST3("uxtab r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3208TESTINST3("uxtab r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3209TESTINST3("uxtab r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3210TESTINST3("uxtab r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3211TESTINST3("uxtab r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3212TESTINST3("uxtab r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3213TESTINST3("uxtab r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3214TESTINST3("uxtab r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3215TESTINST3("uxtab r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3216TESTINST3("uxtab r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3217
3218TESTINST3("uxtab r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3219TESTINST3("uxtab r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3220TESTINST3("uxtab r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3221TESTINST3("uxtab r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3222TESTINST3("uxtab r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3223TESTINST3("uxtab r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3224TESTINST3("uxtab r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3225TESTINST3("uxtab r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3226TESTINST3("uxtab r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3227TESTINST3("uxtab r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3228
3229TESTINST3("uxtab r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3230TESTINST3("uxtab r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3231TESTINST3("uxtab r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3232TESTINST3("uxtab r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3233TESTINST3("uxtab r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3234TESTINST3("uxtab r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3235TESTINST3("uxtab r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3236TESTINST3("uxtab r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3237TESTINST3("uxtab r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3238TESTINST3("uxtab r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3239
3240  printf("----------- UXTAB16 -----------\n");
3241  TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
3242  TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
3243  TESTINST3("uxtab16 r0, r1, r2, ROR #8",  0x31415927, 0x27182819, r0, r1, r2, 0);
3244  TESTINST3("uxtab16 r0, r1, r2, ROR #0",  0x31415927, 0x27182819, r0, r1, r2, 0);
3245
3246  TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0);
3247  TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0);
3248  TESTINST3("uxtab16 r0, r1, r2, ROR #8",  0x31415927, 0x27182899, r0, r1, r2, 0);
3249  TESTINST3("uxtab16 r0, r1, r2, ROR #0",  0x31415927, 0x27182899, r0, r1, r2, 0);
3250  TESTINST3("uxtab16 r0, r1, r2, ROR #0",  0x3141FFFF, 0x27182899, r0, r1, r2, 0);
3251
3252TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3253TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3254TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3255TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3256TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3257TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3258TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3259TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3260TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3261TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3262
3263TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3264TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3265TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3266TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3267TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3268TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3269TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3270TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3271TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3272TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3273
3274TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3275TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3276TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3277TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3278TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3279TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3280TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3281TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3282TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3283TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3284
3285TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3286TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3287TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3288TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3289TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3290TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3291TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3292TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3293TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3294TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3295
3296  printf("------------ SXTAH ------------\n");
3297  TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
3298  TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
3299  TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, r0, r1, r2, 0);
3300  TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, r0, r1, r2, 0);
3301
3302  TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, r0, r1, r2, 0);
3303  TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, r0, r1, r2, 0);
3304  TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, r0, r1, r2, 0);
3305  TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, r0, r1, r2, 0);
3306
3307TESTINST3("sxtah r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3308TESTINST3("sxtah r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3309TESTINST3("sxtah r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3310TESTINST3("sxtah r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3311TESTINST3("sxtah r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3312TESTINST3("sxtah r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3313TESTINST3("sxtah r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3314TESTINST3("sxtah r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3315TESTINST3("sxtah r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3316TESTINST3("sxtah r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3317
3318TESTINST3("sxtah r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3319TESTINST3("sxtah r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3320TESTINST3("sxtah r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3321TESTINST3("sxtah r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3322TESTINST3("sxtah r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3323TESTINST3("sxtah r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3324TESTINST3("sxtah r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3325TESTINST3("sxtah r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3326TESTINST3("sxtah r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3327TESTINST3("sxtah r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3328
3329TESTINST3("sxtah r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3330TESTINST3("sxtah r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3331TESTINST3("sxtah r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3332TESTINST3("sxtah r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3333TESTINST3("sxtah r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3334TESTINST3("sxtah r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3335TESTINST3("sxtah r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3336TESTINST3("sxtah r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3337TESTINST3("sxtah r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3338TESTINST3("sxtah r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3339
3340TESTINST3("sxtah r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3341TESTINST3("sxtah r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3342TESTINST3("sxtah r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3343TESTINST3("sxtah r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3344TESTINST3("sxtah r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3345TESTINST3("sxtah r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3346TESTINST3("sxtah r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3347TESTINST3("sxtah r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3348TESTINST3("sxtah r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3349TESTINST3("sxtah r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3350
3351  printf("------------ UXTAH ------------\n");
3352  TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
3353  TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
3354  TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, r0, r1, r2, 0);
3355  TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, r0, r1, r2, 0);
3356
3357  TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, r0, r1, r2, 0);
3358  TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, r0, r1, r2, 0);
3359  TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, r0, r1, r2, 0);
3360  TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, r0, r1, r2, 0);
3361
3362TESTINST3("uxtah r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3363TESTINST3("uxtah r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3364TESTINST3("uxtah r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3365TESTINST3("uxtah r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3366TESTINST3("uxtah r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3367TESTINST3("uxtah r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3368TESTINST3("uxtah r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3369TESTINST3("uxtah r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3370TESTINST3("uxtah r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3371TESTINST3("uxtah r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3372
3373TESTINST3("uxtah r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3374TESTINST3("uxtah r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3375TESTINST3("uxtah r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3376TESTINST3("uxtah r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3377TESTINST3("uxtah r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3378TESTINST3("uxtah r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3379TESTINST3("uxtah r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3380TESTINST3("uxtah r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3381TESTINST3("uxtah r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3382TESTINST3("uxtah r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3383
3384TESTINST3("uxtah r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3385TESTINST3("uxtah r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3386TESTINST3("uxtah r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3387TESTINST3("uxtah r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3388TESTINST3("uxtah r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3389TESTINST3("uxtah r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3390TESTINST3("uxtah r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3391TESTINST3("uxtah r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3392TESTINST3("uxtah r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3393TESTINST3("uxtah r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3394
3395TESTINST3("uxtah r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
3396TESTINST3("uxtah r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
3397TESTINST3("uxtah r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
3398TESTINST3("uxtah r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
3399TESTINST3("uxtah r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
3400TESTINST3("uxtah r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
3401TESTINST3("uxtah r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
3402TESTINST3("uxtah r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
3403TESTINST3("uxtah r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
3404TESTINST3("uxtah r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
3405
3406  printf("------------ SMLAWB ------------\n");
3407  /* smlawb rD, rN, rM, rA */
3408  TESTINST4("smlawb r0, r1, r2, r3",
3409            0x00030000, 0x00040000, 0x00000000, r0,r1,r2,r3, 0);
3410  TESTINST4("smlawb r0, r1, r2, r3",
3411            0x00030001, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0);
3412  TESTINST4("smlawb r0, r1, r2, r3",
3413            0x00038001, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0);
3414  TESTINST4("smlawb r0, r1, r2, r3",
3415            0x00037fff, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0);
3416  TESTINST4("smlawb r0, r1, r2, r3",
3417            0x0003ffff, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0);
3418  TESTINST4("smlawb r0, r1, r2, r3",
3419            0x0003fffc, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0);
3420TESTINST4("smlawb  r0, r1, r2, r3",
3421          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
3422TESTINST4("smlawb  r0, r1, r2, r3",
3423          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
3424TESTINST4("smlawb  r0, r1, r2, r3",
3425          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
3426TESTINST4("smlawb  r0, r1, r2, r3",
3427          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
3428TESTINST4("smlawb  r0, r1, r2, r3",
3429          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
3430TESTINST4("smlawb  r0, r1, r2, r3",
3431          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
3432TESTINST4("smlawb  r0, r1, r2, r3",
3433          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
3434TESTINST4("smlawb  r0, r1, r2, r3",
3435          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
3436TESTINST4("smlawb  r0, r1, r2, r3",
3437          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
3438TESTINST4("smlawb  r0, r1, r2, r3",
3439          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
3440TESTINST4("smlawb  r0, r1, r2, r3",
3441          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
3442TESTINST4("smlawb  r0, r1, r2, r3",
3443          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
3444TESTINST4("smlawb  r0, r1, r2, r3",
3445          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
3446TESTINST4("smlawb  r0, r1, r2, r3",
3447          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
3448TESTINST4("smlawb  r0, r1, r2, r3",
3449          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
3450TESTINST4("smlawb  r0, r1, r2, r3",
3451          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
3452TESTINST4("smlawb  r0, r1, r2, r3",
3453          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
3454TESTINST4("smlawb  r0, r1, r2, r3",
3455          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
3456TESTINST4("smlawb  r0, r1, r2, r3",
3457          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
3458TESTINST4("smlawb  r0, r1, r2, r3",
3459          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
3460TESTINST4("smlawb  r0, r1, r2, r3",
3461          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
3462TESTINST4("smlawb  r0, r1, r2, r3",
3463          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
3464TESTINST4("smlawb  r0, r1, r2, r3",
3465          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
3466TESTINST4("smlawb  r0, r1, r2, r3",
3467          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
3468TESTINST4("smlawb  r0, r1, r2, r3",
3469          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
3470TESTINST4("smlawb  r0, r1, r2, r3",
3471          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
3472TESTINST4("smlawb  r0, r1, r2, r3",
3473          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
3474TESTINST4("smlawb  r0, r1, r2, r3",
3475          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
3476TESTINST4("smlawb  r0, r1, r2, r3",
3477          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
3478TESTINST4("smlawb  r0, r1, r2, r3",
3479          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
3480TESTINST4("smlawb  r0, r1, r2, r3",
3481          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
3482TESTINST4("smlawb  r0, r1, r2, r3",
3483          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
3484TESTINST4("smlawb  r0, r1, r2, r3",
3485          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
3486TESTINST4("smlawb  r0, r1, r2, r3",
3487          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
3488TESTINST4("smlawb  r0, r1, r2, r3",
3489          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
3490TESTINST4("smlawb  r0, r1, r2, r3",
3491          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
3492TESTINST4("smlawb  r0, r1, r2, r3",
3493          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
3494TESTINST4("smlawb  r0, r1, r2, r3",
3495          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
3496TESTINST4("smlawb  r0, r1, r2, r3",
3497          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
3498TESTINST4("smlawb  r0, r1, r2, r3",
3499          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
3500TESTINST4("smlawb  r0, r1, r2, r3",
3501          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
3502TESTINST4("smlawb  r0, r1, r2, r3",
3503          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
3504TESTINST4("smlawb  r0, r1, r2, r3",
3505          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
3506TESTINST4("smlawb  r0, r1, r2, r3",
3507          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
3508TESTINST4("smlawb  r0, r1, r2, r3",
3509          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
3510TESTINST4("smlawb  r0, r1, r2, r3",
3511          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
3512TESTINST4("smlawb  r0, r1, r2, r3",
3513          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
3514TESTINST4("smlawb  r0, r1, r2, r3",
3515          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
3516TESTINST4("smlawb  r0, r1, r2, r3",
3517          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
3518TESTINST4("smlawb  r0, r1, r2, r3",
3519          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
3520TESTINST4("smlawb  r0, r1, r2, r3",
3521          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
3522
3523  printf("------------ SMLAWT ------------\n");
3524  /* smlawt rD, rN, rM, rA */
3525  TESTINST4("smlawt r0, r1, r2, r3",
3526            0x00030000, 0x00040000, 0x00000000, r0,r1,r2,r3, 0);
3527  TESTINST4("smlawt r0, r1, r2, r3",
3528            0x00030001, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0);
3529  TESTINST4("smlawt r0, r1, r2, r3",
3530            0x00038001, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0);
3531  TESTINST4("smlawt r0, r1, r2, r3",
3532            0x00037fff, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0);
3533  TESTINST4("smlawt r0, r1, r2, r3",
3534            0x0003ffff, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0);
3535  TESTINST4("smlawt r0, r1, r2, r3",
3536            0x0003fffc, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0);
3537TESTINST4("smlawt  r0, r1, r2, r3",
3538          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
3539TESTINST4("smlawt  r0, r1, r2, r3",
3540          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
3541TESTINST4("smlawt  r0, r1, r2, r3",
3542          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
3543TESTINST4("smlawt  r0, r1, r2, r3",
3544          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
3545TESTINST4("smlawt  r0, r1, r2, r3",
3546          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
3547TESTINST4("smlawt  r0, r1, r2, r3",
3548          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
3549TESTINST4("smlawt  r0, r1, r2, r3",
3550          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
3551TESTINST4("smlawt  r0, r1, r2, r3",
3552          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
3553TESTINST4("smlawt  r0, r1, r2, r3",
3554          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
3555TESTINST4("smlawt  r0, r1, r2, r3",
3556          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
3557TESTINST4("smlawt  r0, r1, r2, r3",
3558          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
3559TESTINST4("smlawt  r0, r1, r2, r3",
3560          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
3561TESTINST4("smlawt  r0, r1, r2, r3",
3562          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
3563TESTINST4("smlawt  r0, r1, r2, r3",
3564          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
3565TESTINST4("smlawt  r0, r1, r2, r3",
3566          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
3567TESTINST4("smlawt  r0, r1, r2, r3",
3568          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
3569TESTINST4("smlawt  r0, r1, r2, r3",
3570          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
3571TESTINST4("smlawt  r0, r1, r2, r3",
3572          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
3573TESTINST4("smlawt  r0, r1, r2, r3",
3574          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
3575TESTINST4("smlawt  r0, r1, r2, r3",
3576          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
3577TESTINST4("smlawt  r0, r1, r2, r3",
3578          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
3579TESTINST4("smlawt  r0, r1, r2, r3",
3580          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
3581TESTINST4("smlawt  r0, r1, r2, r3",
3582          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
3583TESTINST4("smlawt  r0, r1, r2, r3",
3584          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
3585TESTINST4("smlawt  r0, r1, r2, r3",
3586          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
3587TESTINST4("smlawt  r0, r1, r2, r3",
3588          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
3589TESTINST4("smlawt  r0, r1, r2, r3",
3590          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
3591TESTINST4("smlawt  r0, r1, r2, r3",
3592          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
3593TESTINST4("smlawt  r0, r1, r2, r3",
3594          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
3595TESTINST4("smlawt  r0, r1, r2, r3",
3596          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
3597TESTINST4("smlawt  r0, r1, r2, r3",
3598          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
3599TESTINST4("smlawt  r0, r1, r2, r3",
3600          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
3601TESTINST4("smlawt  r0, r1, r2, r3",
3602          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
3603TESTINST4("smlawt  r0, r1, r2, r3",
3604          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
3605TESTINST4("smlawt  r0, r1, r2, r3",
3606          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
3607TESTINST4("smlawt  r0, r1, r2, r3",
3608          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
3609TESTINST4("smlawt  r0, r1, r2, r3",
3610          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
3611TESTINST4("smlawt  r0, r1, r2, r3",
3612          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
3613TESTINST4("smlawt  r0, r1, r2, r3",
3614          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
3615TESTINST4("smlawt  r0, r1, r2, r3",
3616          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
3617TESTINST4("smlawt  r0, r1, r2, r3",
3618          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
3619TESTINST4("smlawt  r0, r1, r2, r3",
3620          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
3621TESTINST4("smlawt  r0, r1, r2, r3",
3622          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
3623TESTINST4("smlawt  r0, r1, r2, r3",
3624          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
3625TESTINST4("smlawt  r0, r1, r2, r3",
3626          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
3627TESTINST4("smlawt  r0, r1, r2, r3",
3628          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
3629TESTINST4("smlawt  r0, r1, r2, r3",
3630          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
3631TESTINST4("smlawt  r0, r1, r2, r3",
3632          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
3633TESTINST4("smlawt  r0, r1, r2, r3",
3634          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
3635TESTINST4("smlawt  r0, r1, r2, r3",
3636          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
3637TESTINST4("smlawt  r0, r1, r2, r3",
3638          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
3639
3640
3641  printf("----------------- SMLSD ----------------- \n");
3642  TESTINST4("smlsd  r0, r1, r2, r3",
3643                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
3644  TESTINST4("smlsd  r0, r1, r2, r3",
3645                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
3646  TESTINST4("smlsd  r0, r1, r2, r3",
3647                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
3648  TESTINST4("smlsd  r0, r1, r2, r3",
3649                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
3650  TESTINST4("smlsd  r0, r1, r2, r3",
3651                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
3652  TESTINST4("smlsd  r0, r1, r2, r3",
3653                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
3654  TESTINST4("smlsd  r0, r1, r2, r3",
3655                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
3656TESTINST4("smlsd  r0, r1, r2, r3",
3657          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
3658TESTINST4("smlsd  r0, r1, r2, r3",
3659          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
3660TESTINST4("smlsd  r0, r1, r2, r3",
3661          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
3662TESTINST4("smlsd  r0, r1, r2, r3",
3663          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
3664TESTINST4("smlsd  r0, r1, r2, r3",
3665          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
3666TESTINST4("smlsd  r0, r1, r2, r3",
3667          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
3668TESTINST4("smlsd  r0, r1, r2, r3",
3669          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
3670TESTINST4("smlsd  r0, r1, r2, r3",
3671          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
3672TESTINST4("smlsd  r0, r1, r2, r3",
3673          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
3674TESTINST4("smlsd  r0, r1, r2, r3",
3675          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
3676TESTINST4("smlsd  r0, r1, r2, r3",
3677          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
3678TESTINST4("smlsd  r0, r1, r2, r3",
3679          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
3680TESTINST4("smlsd  r0, r1, r2, r3",
3681          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
3682TESTINST4("smlsd  r0, r1, r2, r3",
3683          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
3684TESTINST4("smlsd  r0, r1, r2, r3",
3685          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
3686TESTINST4("smlsd  r0, r1, r2, r3",
3687          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
3688TESTINST4("smlsd  r0, r1, r2, r3",
3689          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
3690TESTINST4("smlsd  r0, r1, r2, r3",
3691          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
3692TESTINST4("smlsd  r0, r1, r2, r3",
3693          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
3694TESTINST4("smlsd  r0, r1, r2, r3",
3695          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
3696TESTINST4("smlsd  r0, r1, r2, r3",
3697          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
3698TESTINST4("smlsd  r0, r1, r2, r3",
3699          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
3700TESTINST4("smlsd  r0, r1, r2, r3",
3701          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
3702TESTINST4("smlsd  r0, r1, r2, r3",
3703          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
3704TESTINST4("smlsd  r0, r1, r2, r3",
3705          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
3706TESTINST4("smlsd  r0, r1, r2, r3",
3707          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
3708TESTINST4("smlsd  r0, r1, r2, r3",
3709          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
3710TESTINST4("smlsd  r0, r1, r2, r3",
3711          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
3712TESTINST4("smlsd  r0, r1, r2, r3",
3713          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
3714TESTINST4("smlsd  r0, r1, r2, r3",
3715          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
3716TESTINST4("smlsd  r0, r1, r2, r3",
3717          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
3718TESTINST4("smlsd  r0, r1, r2, r3",
3719          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
3720TESTINST4("smlsd  r0, r1, r2, r3",
3721          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
3722TESTINST4("smlsd  r0, r1, r2, r3",
3723          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
3724TESTINST4("smlsd  r0, r1, r2, r3",
3725          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
3726TESTINST4("smlsd  r0, r1, r2, r3",
3727          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
3728TESTINST4("smlsd  r0, r1, r2, r3",
3729          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
3730TESTINST4("smlsd  r0, r1, r2, r3",
3731          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
3732TESTINST4("smlsd  r0, r1, r2, r3",
3733          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
3734TESTINST4("smlsd  r0, r1, r2, r3",
3735          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
3736TESTINST4("smlsd  r0, r1, r2, r3",
3737          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
3738TESTINST4("smlsd  r0, r1, r2, r3",
3739          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
3740TESTINST4("smlsd  r0, r1, r2, r3",
3741          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
3742TESTINST4("smlsd  r0, r1, r2, r3",
3743          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
3744TESTINST4("smlsd  r0, r1, r2, r3",
3745          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
3746TESTINST4("smlsd  r0, r1, r2, r3",
3747          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
3748TESTINST4("smlsd  r0, r1, r2, r3",
3749          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
3750TESTINST4("smlsd  r0, r1, r2, r3",
3751          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
3752TESTINST4("smlsd  r0, r1, r2, r3",
3753          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
3754TESTINST4("smlsd  r0, r1, r2, r3",
3755          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
3756TESTINST4("smlsd  r0, r1, r2, r3",
3757          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
3758
3759  printf("----------------- SMLSDX ----------------- \n");
3760  TESTINST4("smlsdx  r0, r1, r2, r3",
3761                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
3762  TESTINST4("smlsdx  r0, r1, r2, r3",
3763                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
3764  TESTINST4("smlsdx  r0, r1, r2, r3",
3765                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
3766  TESTINST4("smlsdx  r0, r1, r2, r3",
3767                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
3768  TESTINST4("smlsdx  r0, r1, r2, r3",
3769                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
3770  TESTINST4("smlsdx  r0, r1, r2, r3",
3771                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
3772  TESTINST4("smlsdx  r0, r1, r2, r3",
3773                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
3774TESTINST4("smlsdx  r0, r1, r2, r3",
3775          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
3776TESTINST4("smlsdx  r0, r1, r2, r3",
3777          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
3778TESTINST4("smlsdx  r0, r1, r2, r3",
3779          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
3780
3781
3782  printf("----------------- SMUSD ----------------- \n");
3783  TESTINST3("smusd r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
3784  TESTINST3("smusd r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
3785  TESTINST3("smusd r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
3786  TESTINST3("smusd r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
3787  TESTINST3("smusd r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
3788  TESTINST3("smusd r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
3789  TESTINST3("smusd r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
3790TESTINST3("smusd r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
3791TESTINST3("smusd r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
3792TESTINST3("smusd r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
3793TESTINST3("smusd r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
3794TESTINST3("smusd r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
3795TESTINST3("smusd r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
3796TESTINST3("smusd r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
3797TESTINST3("smusd r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
3798TESTINST3("smusd r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
3799TESTINST3("smusd r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
3800TESTINST3("smusd r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
3801TESTINST3("smusd r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
3802TESTINST3("smusd r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
3803TESTINST3("smusd r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
3804TESTINST3("smusd r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
3805TESTINST3("smusd r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
3806TESTINST3("smusd r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
3807TESTINST3("smusd r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
3808TESTINST3("smusd r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
3809TESTINST3("smusd r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
3810TESTINST3("smusd r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
3811TESTINST3("smusd r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
3812TESTINST3("smusd r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
3813TESTINST3("smusd r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
3814TESTINST3("smusd r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
3815TESTINST3("smusd r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
3816TESTINST3("smusd r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
3817TESTINST3("smusd r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
3818TESTINST3("smusd r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
3819TESTINST3("smusd r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
3820TESTINST3("smusd r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
3821TESTINST3("smusd r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
3822TESTINST3("smusd r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
3823TESTINST3("smusd r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
3824TESTINST3("smusd r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
3825TESTINST3("smusd r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
3826TESTINST3("smusd r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
3827TESTINST3("smusd r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
3828TESTINST3("smusd r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
3829TESTINST3("smusd r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
3830TESTINST3("smusd r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
3831TESTINST3("smusd r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
3832TESTINST3("smusd r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
3833TESTINST3("smusd r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
3834TESTINST3("smusd r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
3835TESTINST3("smusd r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
3836TESTINST3("smusd r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
3837TESTINST3("smusd r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
3838TESTINST3("smusd r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
3839TESTINST3("smusd r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
3840  printf("----------------- SMUSDX ---------------- \n");
3841  TESTINST3("smusdx r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
3842  TESTINST3("smusdx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
3843  TESTINST3("smusdx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
3844  TESTINST3("smusdx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
3845  TESTINST3("smusdx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
3846  TESTINST3("smusdx r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
3847  TESTINST3("smusdx r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
3848TESTINST3("smusdx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
3849TESTINST3("smusdx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
3850TESTINST3("smusdx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
3851TESTINST3("smusdx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
3852TESTINST3("smusdx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
3853TESTINST3("smusdx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
3854TESTINST3("smusdx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
3855TESTINST3("smusdx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
3856TESTINST3("smusdx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
3857TESTINST3("smusdx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
3858TESTINST3("smusdx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
3859TESTINST3("smusdx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
3860TESTINST3("smusdx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
3861TESTINST3("smusdx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
3862TESTINST3("smusdx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
3863TESTINST3("smusdx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
3864TESTINST3("smusdx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
3865TESTINST3("smusdx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
3866TESTINST3("smusdx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
3867TESTINST3("smusdx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
3868TESTINST3("smusdx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
3869TESTINST3("smusdx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
3870TESTINST3("smusdx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
3871TESTINST3("smusdx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
3872TESTINST3("smusdx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
3873TESTINST3("smusdx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
3874TESTINST3("smusdx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
3875TESTINST3("smusdx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
3876TESTINST3("smusdx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
3877TESTINST3("smusdx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
3878TESTINST3("smusdx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
3879TESTINST3("smusdx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
3880TESTINST3("smusdx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
3881TESTINST3("smusdx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
3882TESTINST3("smusdx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
3883TESTINST3("smusdx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
3884TESTINST3("smusdx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
3885TESTINST3("smusdx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
3886TESTINST3("smusdx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
3887TESTINST3("smusdx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
3888TESTINST3("smusdx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
3889TESTINST3("smusdx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
3890TESTINST3("smusdx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
3891TESTINST3("smusdx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
3892TESTINST3("smusdx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
3893TESTINST3("smusdx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
3894TESTINST3("smusdx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
3895TESTINST3("smusdx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
3896TESTINST3("smusdx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
3897TESTINST3("smusdx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
3898
3899  printf("----------------- USAD8 ---------------- \n");
3900  TESTINST3("usad8 r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
3901  TESTINST3("usad8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
3902  TESTINST3("usad8 r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
3903  TESTINST3("usad8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
3904  TESTINST3("usad8 r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
3905  TESTINST3("usad8 r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
3906  TESTINST3("usad8 r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
3907TESTINST3("usad8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
3908TESTINST3("usad8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
3909TESTINST3("usad8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
3910TESTINST3("usad8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
3911TESTINST3("usad8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
3912TESTINST3("usad8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
3913TESTINST3("usad8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
3914TESTINST3("usad8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
3915TESTINST3("usad8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
3916TESTINST3("usad8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
3917TESTINST3("usad8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
3918TESTINST3("usad8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
3919TESTINST3("usad8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
3920TESTINST3("usad8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
3921TESTINST3("usad8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
3922TESTINST3("usad8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
3923TESTINST3("usad8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
3924TESTINST3("usad8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
3925TESTINST3("usad8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
3926TESTINST3("usad8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
3927TESTINST3("usad8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
3928TESTINST3("usad8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
3929TESTINST3("usad8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
3930TESTINST3("usad8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
3931TESTINST3("usad8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
3932TESTINST3("usad8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
3933TESTINST3("usad8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
3934TESTINST3("usad8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
3935TESTINST3("usad8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
3936TESTINST3("usad8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
3937TESTINST3("usad8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
3938TESTINST3("usad8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
3939TESTINST3("usad8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
3940TESTINST3("usad8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
3941TESTINST3("usad8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
3942TESTINST3("usad8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
3943TESTINST3("usad8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
3944TESTINST3("usad8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
3945TESTINST3("usad8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
3946TESTINST3("usad8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
3947TESTINST3("usad8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
3948TESTINST3("usad8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
3949TESTINST3("usad8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
3950TESTINST3("usad8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
3951TESTINST3("usad8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
3952TESTINST3("usad8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
3953TESTINST3("usad8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
3954TESTINST3("usad8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
3955TESTINST3("usad8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
3956TESTINST3("usad8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
3957
3958  printf("----------------- USADA8 ----------------- \n");
3959  TESTINST4("usada8  r0, r1, r2, r3",
3960                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
3961  TESTINST4("usada8  r0, r1, r2, r3",
3962                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
3963  TESTINST4("usada8  r0, r1, r2, r3",
3964                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
3965  TESTINST4("usada8  r0, r1, r2, r3",
3966                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
3967  TESTINST4("usada8  r0, r1, r2, r3",
3968                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
3969  TESTINST4("usada8  r0, r1, r2, r3",
3970                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
3971  TESTINST4("usada8  r0, r1, r2, r3",
3972                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
3973TESTINST4("usada8  r0, r1, r2, r3",
3974          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
3975TESTINST4("usada8  r0, r1, r2, r3",
3976          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
3977TESTINST4("usada8  r0, r1, r2, r3",
3978          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
3979TESTINST4("usada8  r0, r1, r2, r3",
3980          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
3981TESTINST4("usada8  r0, r1, r2, r3",
3982          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
3983TESTINST4("usada8  r0, r1, r2, r3",
3984          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
3985TESTINST4("usada8  r0, r1, r2, r3",
3986          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
3987TESTINST4("usada8  r0, r1, r2, r3",
3988          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
3989TESTINST4("usada8  r0, r1, r2, r3",
3990          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
3991TESTINST4("usada8  r0, r1, r2, r3",
3992          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
3993TESTINST4("usada8  r0, r1, r2, r3",
3994          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
3995TESTINST4("usada8  r0, r1, r2, r3",
3996          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
3997TESTINST4("usada8  r0, r1, r2, r3",
3998          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
3999TESTINST4("usada8  r0, r1, r2, r3",
4000          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
4001TESTINST4("usada8  r0, r1, r2, r3",
4002          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
4003TESTINST4("usada8  r0, r1, r2, r3",
4004          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
4005TESTINST4("usada8  r0, r1, r2, r3",
4006          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
4007TESTINST4("usada8  r0, r1, r2, r3",
4008          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
4009TESTINST4("usada8  r0, r1, r2, r3",
4010          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
4011TESTINST4("usada8  r0, r1, r2, r3",
4012          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
4013TESTINST4("usada8  r0, r1, r2, r3",
4014          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
4015TESTINST4("usada8  r0, r1, r2, r3",
4016          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
4017TESTINST4("usada8  r0, r1, r2, r3",
4018          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
4019TESTINST4("usada8  r0, r1, r2, r3",
4020          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
4021TESTINST4("usada8  r0, r1, r2, r3",
4022          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
4023TESTINST4("usada8  r0, r1, r2, r3",
4024          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
4025TESTINST4("usada8  r0, r1, r2, r3",
4026          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
4027TESTINST4("usada8  r0, r1, r2, r3",
4028          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
4029TESTINST4("usada8  r0, r1, r2, r3",
4030          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
4031TESTINST4("usada8  r0, r1, r2, r3",
4032          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
4033TESTINST4("usada8  r0, r1, r2, r3",
4034          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
4035TESTINST4("usada8  r0, r1, r2, r3",
4036          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
4037TESTINST4("usada8  r0, r1, r2, r3",
4038          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
4039TESTINST4("usada8  r0, r1, r2, r3",
4040          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
4041TESTINST4("usada8  r0, r1, r2, r3",
4042          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
4043TESTINST4("usada8  r0, r1, r2, r3",
4044          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
4045TESTINST4("usada8  r0, r1, r2, r3",
4046          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
4047TESTINST4("usada8  r0, r1, r2, r3",
4048          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
4049TESTINST4("usada8  r0, r1, r2, r3",
4050          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
4051TESTINST4("usada8  r0, r1, r2, r3",
4052          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
4053TESTINST4("usada8  r0, r1, r2, r3",
4054          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
4055TESTINST4("usada8  r0, r1, r2, r3",
4056          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
4057TESTINST4("usada8  r0, r1, r2, r3",
4058          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
4059TESTINST4("usada8  r0, r1, r2, r3",
4060          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
4061TESTINST4("usada8  r0, r1, r2, r3",
4062          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
4063TESTINST4("usada8  r0, r1, r2, r3",
4064          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
4065TESTINST4("usada8  r0, r1, r2, r3",
4066          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
4067TESTINST4("usada8  r0, r1, r2, r3",
4068          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
4069TESTINST4("usada8  r0, r1, r2, r3",
4070          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
4071TESTINST4("usada8  r0, r1, r2, r3",
4072          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
4073TESTINST4("usada8  r0, r1, r2, r3",
4074          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
4075
4076
4077
4078
4079/*
4080TESTINST3("theinsn", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
4081TESTINST3("theinsn", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
4082TESTINST3("theinsn", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
4083TESTINST3("theinsn", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
4084TESTINST3("theinsn", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
4085TESTINST3("theinsn", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
4086TESTINST3("theinsn", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
4087TESTINST3("theinsn", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
4088TESTINST3("theinsn", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
4089TESTINST3("theinsn", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
4090*/
4091
4092  return 0;
4093}
4094
4095/* How to compile:
4096   gcc -marm -O -g -Wall -mcpu=cortex-a8 -o test_arm_v6int v6int.c
4097*/
4098
4099#include <stdio.h>
4100
4101static int gen_cin(cin)
4102{
4103  int r = ((cin & 1) ? (1<<29) : 0);
4104  //r |= (1 << 31) | (1 << 30);
4105  return r;
4106}
4107
4108/* test macros to generate and output the result of a single instruction */
4109#define TESTINST2(instruction, RMval, RD, RM, carryin) \
4110{ \
4111  unsigned int out;   \
4112  unsigned int cpsr;  \
4113\
4114  __asm__ volatile(   \
4115    "msr  cpsr_fs, %3;"  \
4116    "mov " #RM ",%2;"         \
4117                /* set #RD to 0x55555555 so we can see which parts get overwritten */ \
4118                "mov " #RD ", #0x55" "\n\t" \
4119                "orr " #RD "," #RD "," #RD ", LSL #8" "\n\t"  \
4120                "orr " #RD "," #RD "," #RD ", LSL #16" "\n\t" \
4121    instruction ";"    \
4122    "mov %0," #RD ";"  \
4123    "mrs %1,cpsr;"     \
4124    : "=&r" (out), "=&r" (cpsr)  \
4125    : "r" (RMval), "r" (gen_cin(carryin))       \
4126    : #RD, #RM, "cc", "memory"   \
4127  ); \
4128  printf("%s :: rd 0x%08x rm 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \
4129    instruction, out, RMval,      \
4130    carryin ? 1 : 0,     \
4131    cpsr & 0xffff0000,            \
4132    ((1<<31) & cpsr) ? 'N' : ' ', \
4133    ((1<<30) & cpsr) ? 'Z' : ' ', \
4134    ((1<<29) & cpsr) ? 'C' : ' ', \
4135    ((1<<28) & cpsr) ? 'V' : ' ', \
4136    ((1<<27) & cpsr) ? 'Q' : ' ', \
4137    (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \
4138  ); \
4139}
4140
4141#define TESTINST3(instruction, RMval, RNval, RD, RM, RN, carryin) \
4142{ \
4143  unsigned int out;  \
4144  unsigned int cpsr; \
4145\
4146  __asm__ volatile(  \
4147    "msr  cpsr_fs, %4;"  \
4148    "mov " #RM ",%2;"  \
4149    "mov " #RN ",%3;"  \
4150    instruction ";"    \
4151    "mov %0," #RD ";"  \
4152    "mrs %1,cpsr;"     \
4153    : "=&r" (out), "=&r" (cpsr)               \
4154    : "r" (RMval), "r" (RNval), "r" (gen_cin(carryin))   \
4155    : #RD, #RM, #RN, "cc", "memory"           \
4156  ); \
4157  printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \
4158    instruction, out, RMval, RNval, \
4159    carryin ? 1 : 0,  \
4160    cpsr & 0xffff0000, \
4161    ((1<<31) & cpsr) ? 'N' : ' ', \
4162    ((1<<30) & cpsr) ? 'Z' : ' ', \
4163    ((1<<29) & cpsr) ? 'C' : ' ', \
4164    ((1<<28) & cpsr) ? 'V' : ' ', \
4165    ((1<<27) & cpsr) ? 'Q' : ' ', \
4166    (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \
4167  ); \
4168}
4169
4170#define TESTINST4(instruction, RMval, RNval, RSval, RD, RM, RN, RS, carryin) \
4171{ \
4172  unsigned int out;  \
4173  unsigned int cpsr; \
4174\
4175  __asm__ volatile( \
4176    "msr  cpsr_fs, %5;"  \
4177    "mov " #RM ",%2;"  \
4178    "mov " #RN ",%3;"  \
4179    "mov " #RS ",%4;"  \
4180    instruction ";"    \
4181    "mov %0," #RD ";"  \
4182    "mrs %1,cpsr;"     \
4183    : "=&r" (out), "=&r" (cpsr) \
4184    : "r" (RMval), "r" (RNval), "r" (RSval), "r" (gen_cin(carryin))  \
4185    : #RD, #RM, #RN, #RS, "cc", "memory" \
4186  ); \
4187  printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \
4188    instruction, out, RMval, RNval, RSval, \
4189    carryin ? 1 : 0,   \
4190    cpsr & 0xffff0000, \
4191    ((1<<31) & cpsr) ? 'N' : ' ', \
4192    ((1<<30) & cpsr) ? 'Z' : ' ', \
4193    ((1<<29) & cpsr) ? 'C' : ' ', \
4194    ((1<<28) & cpsr) ? 'V' : ' ', \
4195    ((1<<27) & cpsr) ? 'Q' : ' ', \
4196    (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \
4197  ); \
4198}
4199
4200#define TESTINST4_2OUT(instruction, RDval, RD2val, RMval, RSval, RD, RD2, RM, RS, carryin) \
4201{ \
4202  unsigned int out;  \
4203  unsigned int out2; \
4204  unsigned int cpsr; \
4205\
4206  __asm__ volatile(  \
4207    "msr  cpsr_fs, %7;"  \
4208    "mov " #RD ",%3;"  \
4209    "mov " #RD2 ",%4;" \
4210    "mov " #RM ",%5;"  \
4211    "mov " #RS ",%6;"  \
4212    instruction ";"    \
4213    "mov %0," #RD ";"  \
4214    "mov %1," #RD2 ";" \
4215    "mrs %2,cpsr;"     \
4216    : "=&r" (out), "=&r" (out2), "=&r" (cpsr)  \
4217    : "r" (RDval), "r" (RD2val), "r" (RMval), "r" (RSval), "r" (gen_cin(carryin)) \
4218    : #RD, #RD2, #RM, #RS, "cc", "memory"      \
4219  ); \
4220  printf("%s :: rd 0x%08x rd2 0x%08x, rm 0x%08x rs 0x%08x, carryin %d, cpsr 0x%08x %c%c%c%c%c ge[3:0]=%d%d%d%d\n", \
4221    instruction, out, out2, RMval, RSval, \
4222    carryin ? 1 : 0,   \
4223    cpsr & 0xffff0000, \
4224    ((1<<31) & cpsr) ? 'N' : ' ', \
4225    ((1<<30) & cpsr) ? 'Z' : ' ', \
4226    ((1<<29) & cpsr) ? 'C' : ' ', \
4227    ((1<<28) & cpsr) ? 'V' : ' ', \
4228    ((1<<27) & cpsr) ? 'Q' : ' ', \
4229    (cpsr >> 19) & 1, (cpsr >> 18) & 1, (cpsr >> 17) & 1, (cpsr >> 16) & 1 \
4230  ); \
4231}
4232
4233/* helpers */
4234#define TESTCARRY { int c = 0; for (c = 0; c < 2; c++) {
4235#define TESTCARRYEND }}
4236
4237
4238
4239
4240int main(int argc, char **argv)
4241{
4242  printf("MUL\n");
4243  TESTINST3("mul  r0, r1, r2", 0,          0,          r0, r1, r2, 0);
4244  TESTINST3("mul  r0, r1, r2", 0xffffffff, 0,          r0, r1, r2, 0);
4245  TESTINST3("mul  r0, r1, r2", 0,          0xffffffff, r0, r1, r2, 0);
4246  TESTINST3("mul  r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0);
4247  TESTINST3("mul  r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0);
4248  TESTINST3("mul  r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
4249
4250#if 0
4251  printf("MULS\n");
4252  TESTINST3("muls r0, r1, r2", 0, 0, r0, r1, r2, 0);
4253  TESTINST3("muls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0);
4254  TESTINST3("muls r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0);
4255  TESTINST3("muls r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0);
4256  TESTINST3("muls r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0);
4257  TESTINST3("muls r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
4258#endif
4259
4260  printf("MLA\n");
4261  TESTINST4("mla  r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0);
4262  TESTINST4("mla  r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0);
4263  TESTINST4("mla  r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0);
4264  TESTINST4("mla  r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
4265  TESTINST4("mla  r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
4266  TESTINST4("mla  r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
4267
4268#if 0
4269  printf("MLAS\n");
4270  TESTINST4("mlas r0, r1, r2, r3", 0,          0,          1, r0, r1, r2, r3, 0);
4271  TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0,          1, r0, r1, r2, r3, 0);
4272  TESTINST4("mlas r0, r1, r2, r3", 0,          0xffffffff, 1, r0, r1, r2, r3, 0);
4273  TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
4274  TESTINST4("mlas r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
4275  TESTINST4("mlas r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
4276#endif
4277
4278  printf("MLS\n");
4279  TESTINST4("mls  r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0);
4280  TESTINST4("mls  r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0);
4281  TESTINST4("mls  r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0);
4282  TESTINST4("mls  r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
4283  TESTINST4("mls  r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
4284  TESTINST4("mls  r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
4285
4286  printf("UMULL\n");
4287  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
4288  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
4289  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
4290  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
4291  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
4292  TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
4293#if 0
4294  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
4295  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
4296  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
4297  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
4298  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
4299  TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
4300#endif
4301  printf("SMULL\n");
4302  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
4303  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
4304  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
4305  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
4306  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
4307  TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
4308#if 0
4309  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
4310  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
4311  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
4312  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
4313  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
4314  TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
4315#endif
4316
4317  printf("UMLAL\n");
4318  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
4319  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
4320  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
4321  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
4322  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
4323  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
4324  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
4325  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
4326  TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
4327#if 0
4328  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
4329  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
4330  TESTINST4_2OUT("umlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
4331  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
4332  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
4333  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
4334  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
4335  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
4336  TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
4337#endif
4338
4339  printf("SMLAL\n");
4340  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
4341  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
4342  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
4343  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
4344  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
4345  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
4346  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
4347  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
4348  TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
4349#if 0
4350  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
4351  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
4352  TESTINST4_2OUT("smlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
4353  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
4354  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
4355  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
4356  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
4357  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
4358  TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
4359#endif
4360
4361  printf("CLZ\n");
4362  TESTCARRY
4363  TESTINST2("clz  r0, r1", 0, r0, r1, c);
4364  TESTINST2("clz  r0, r1", 1, r0, r1, c);
4365  TESTINST2("clz  r0, r1", 0x10, r0, r1, c);
4366  TESTINST2("clz  r0, r1", 0xffffffff, r0, r1, c);
4367  TESTCARRYEND
4368
4369  printf("extend instructions\n");
4370  TESTINST2("uxtb r0, r1", 0, r0, r1, 0);
4371  TESTINST2("uxtb r0, r1", 1, r0, r1, 0);
4372  TESTINST2("uxtb r0, r1", 0xff, r0, r1, 0);
4373  TESTINST2("uxtb r0, r1", 0xffffffff, r0, r1, 0);
4374  TESTINST2("sxtb r0, r1", 0, r0, r1, 0);
4375  TESTINST2("sxtb r0, r1", 1, r0, r1, 0);
4376  TESTINST2("sxtb r0, r1", 0xff, r0, r1, 0);
4377  TESTINST2("sxtb r0, r1", 0xffffffff, r0, r1, 0);
4378
4379  TESTINST2("uxth r0, r1", 0, r0, r1, 0);
4380  TESTINST2("uxth r0, r1", 1, r0, r1, 0);
4381  TESTINST2("uxth r0, r1", 0xffff, r0, r1, 0);
4382  TESTINST2("uxth r0, r1", 0xffffffff, r0, r1, 0);
4383  TESTINST2("sxth r0, r1", 0, r0, r1, 0);
4384  TESTINST2("sxth r0, r1", 1, r0, r1, 0);
4385  TESTINST2("sxth r0, r1", 0x7fff, r0, r1, 0);
4386  TESTINST2("sxth r0, r1", 0xffff, r0, r1, 0);
4387  TESTINST2("sxth r0, r1", 0x10ffff, r0, r1, 0);
4388  TESTINST2("sxth r0, r1", 0x107fff, r0, r1, 0);
4389  TESTINST2("sxth r0, r1", 0xffffffff, r0, r1, 0);
4390
4391  TESTINST2("uxtb r0, r1, ror #0", 0x000000ff, r0, r1, 0);
4392  TESTINST2("uxtb r0, r1, ror #8", 0x000000ff, r0, r1, 0);
4393  TESTINST2("uxtb r0, r1, ror #8", 0x0000ff00, r0, r1, 0);
4394  TESTINST2("uxtb r0, r1, ror #16", 0x00ff0000, r0, r1, 0);
4395  TESTINST2("uxtb r0, r1, ror #24", 0xff000000, r0, r1, 0);
4396
4397  TESTINST2("uxtb16 r0, r1", 0xffffffff, r0, r1, 0);
4398  TESTINST2("uxtb16 r0, r1, ror #16", 0x0000ffff, r0, r1, 0);
4399  TESTINST2("sxtb16 r0, r1", 0xffffffff, r0, r1, 0);
4400  TESTINST2("sxtb16 r0, r1", 0x00ff00ff, r0, r1, 0);
4401  TESTINST2("sxtb16 r0, r1", 0x007f007f, r0, r1, 0);
4402
4403  printf("------------ BFI ------------\n");
4404  /* bfi  rDst, rSrc, #lsb-in-dst, #number-of-bits-to-copy */
4405  TESTINST2("bfi  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
4406  TESTINST2("bfi  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
4407  TESTINST2("bfi  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
4408
4409  TESTINST2("bfi  r0, r1, #19, #11", 0xFFFFFFFF, r0, r1, 0);
4410  TESTINST2("bfi  r0, r1, #20, #11", 0xFFFFFFFF, r0, r1, 0);
4411  TESTINST2("bfi  r0, r1, #21, #11", 0xFFFFFFFF, r0, r1, 0);
4412
4413  TESTINST2("bfi  r0, r1, #0, #32", 0xFFFFFFFF, r0, r1, 0);
4414  TESTINST2("bfi  r0, r1, #1, #31", 0xFFFFFFFF, r0, r1, 0);
4415
4416  TESTINST2("bfi  r0, r1, #29, #3", 0xFFFFFFFF, r0, r1, 0);
4417  TESTINST2("bfi  r0, r1, #30, #2", 0xFFFFFFFF, r0, r1, 0);
4418  TESTINST2("bfi  r0, r1, #31, #1", 0xFFFFFFFF, r0, r1, 0);
4419
4420  printf("------------ BFC ------------\n");
4421  /* bfi  rDst, #lsb-in-dst, #number-of-bits-to-copy */
4422  TESTINST2("bfc  r0, #0, #11", 0xAAAAAAAA, r0, r1, 0);
4423  TESTINST2("bfc  r0, #1, #11", 0xAAAAAAAA, r0, r1, 0);
4424  TESTINST2("bfc  r0, #2, #11", 0xAAAAAAAA, r0, r1, 0);
4425
4426  TESTINST2("bfc  r0, #19, #11", 0xFFFFFFFF, r0, r1, 0);
4427  TESTINST2("bfc  r0, #20, #11", 0xFFFFFFFF, r0, r1, 0);
4428  TESTINST2("bfc  r0, #21, #11", 0xFFFFFFFF, r0, r1, 0);
4429
4430  TESTINST2("bfc  r0, #0, #32", 0xFFFFFFFF, r0, r1, 0);
4431  TESTINST2("bfc  r0, #1, #31", 0xFFFFFFFF, r0, r1, 0);
4432
4433  TESTINST2("bfc  r0, #29, #3", 0xFFFFFFFF, r0, r1, 0);
4434  TESTINST2("bfc  r0, #30, #2", 0xFFFFFFFF, r0, r1, 0);
4435  TESTINST2("bfc  r0, #31, #1", 0xFFFFFFFF, r0, r1, 0);
4436
4437  printf("------------ SBFX ------------\n");
4438  /* sbfx rDst, rSrc, #lsb, #width */
4439  TESTINST2("sbfx  r0, r1, #0, #1", 0x00000000, r0, r1, 0);
4440  TESTINST2("sbfx  r0, r1, #0, #1", 0x00000001, r0, r1, 0);
4441  TESTINST2("sbfx  r0, r1, #1, #1", 0x00000000, r0, r1, 0);
4442  TESTINST2("sbfx  r0, r1, #1, #1", 0x00000001, r0, r1, 0);
4443  TESTINST2("sbfx  r0, r1, #1, #1", 0x00000002, r0, r1, 0);
4444  TESTINST2("sbfx  r0, r1, #1, #1", 0x00000003, r0, r1, 0);
4445
4446  TESTINST2("sbfx  r0, r1, #0, #2", 0x00000000, r0, r1, 0);
4447  TESTINST2("sbfx  r0, r1, #0, #2", 0x00000001, r0, r1, 0);
4448  TESTINST2("sbfx  r0, r1, #1, #2", 0x00000000, r0, r1, 0);
4449  TESTINST2("sbfx  r0, r1, #1, #2", 0x00000001, r0, r1, 0);
4450  TESTINST2("sbfx  r0, r1, #1, #2", 0x00000002, r0, r1, 0);
4451  TESTINST2("sbfx  r0, r1, #1, #2", 0x00000003, r0, r1, 0);
4452
4453  TESTINST2("sbfx  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
4454  TESTINST2("sbfx  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
4455  TESTINST2("sbfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
4456  TESTINST2("sbfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
4457  TESTINST2("sbfx  r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0);
4458  TESTINST2("sbfx  r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0);
4459
4460  printf("------------ UBFX ------------\n");
4461  /* ubfx rDst, rSrc, #lsb, #width */
4462  TESTINST2("ubfx  r0, r1, #0, #1", 0x00000000, r0, r1, 0);
4463  TESTINST2("ubfx  r0, r1, #0, #1", 0x00000001, r0, r1, 0);
4464  TESTINST2("ubfx  r0, r1, #1, #1", 0x00000000, r0, r1, 0);
4465  TESTINST2("ubfx  r0, r1, #1, #1", 0x00000001, r0, r1, 0);
4466  TESTINST2("ubfx  r0, r1, #1, #1", 0x00000002, r0, r1, 0);
4467  TESTINST2("ubfx  r0, r1, #1, #1", 0x00000003, r0, r1, 0);
4468
4469  TESTINST2("ubfx  r0, r1, #0, #2", 0x00000000, r0, r1, 0);
4470  TESTINST2("ubfx  r0, r1, #0, #2", 0x00000001, r0, r1, 0);
4471  TESTINST2("ubfx  r0, r1, #1, #2", 0x00000000, r0, r1, 0);
4472  TESTINST2("ubfx  r0, r1, #1, #2", 0x00000001, r0, r1, 0);
4473  TESTINST2("ubfx  r0, r1, #1, #2", 0x00000002, r0, r1, 0);
4474  TESTINST2("ubfx  r0, r1, #1, #2", 0x00000003, r0, r1, 0);
4475
4476  TESTINST2("ubfx  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
4477  TESTINST2("ubfx  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
4478  TESTINST2("ubfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
4479  TESTINST2("ubfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
4480  TESTINST2("ubfx  r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0);
4481  TESTINST2("ubfx  r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0);
4482
4483  printf("------------ SMUL{B,T}{B,T} ------------\n");
4484  /* SMULbb rD, rN, rM */
4485  TESTINST3("smulbb r0, r1, r2", 0x00030000, 0x00040000,  r0, r1, r2, 0);
4486  TESTINST3("smulbb r0, r1, r2", 0x00030001, 0x00040002,  r0, r1, r2, 0);
4487  TESTINST3("smulbb r0, r1, r2", 0x00038001, 0x00047fff,  r0, r1, r2, 0);
4488  TESTINST3("smulbb r0, r1, r2", 0x00037fff, 0x00047fff,  r0, r1, r2, 0);
4489  TESTINST3("smulbb r0, r1, r2", 0x0003ffff, 0x0004ffff,  r0, r1, r2, 0);
4490TESTINST3("smulbb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
4491TESTINST3("smulbb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
4492TESTINST3("smulbb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
4493TESTINST3("smulbb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
4494TESTINST3("smulbb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
4495TESTINST3("smulbb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
4496TESTINST3("smulbb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
4497TESTINST3("smulbb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
4498TESTINST3("smulbb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
4499TESTINST3("smulbb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
4500TESTINST3("smulbb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
4501TESTINST3("smulbb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
4502TESTINST3("smulbb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
4503TESTINST3("smulbb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
4504TESTINST3("smulbb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
4505TESTINST3("smulbb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
4506TESTINST3("smulbb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
4507TESTINST3("smulbb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
4508TESTINST3("smulbb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
4509TESTINST3("smulbb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
4510TESTINST3("smulbb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
4511TESTINST3("smulbb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
4512TESTINST3("smulbb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
4513TESTINST3("smulbb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
4514TESTINST3("smulbb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
4515TESTINST3("smulbb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
4516TESTINST3("smulbb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
4517TESTINST3("smulbb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
4518TESTINST3("smulbb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
4519TESTINST3("smulbb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
4520TESTINST3("smulbb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
4521TESTINST3("smulbb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
4522TESTINST3("smulbb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
4523TESTINST3("smulbb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
4524TESTINST3("smulbb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
4525TESTINST3("smulbb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
4526TESTINST3("smulbb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
4527TESTINST3("smulbb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
4528TESTINST3("smulbb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
4529TESTINST3("smulbb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
4530TESTINST3("smulbb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
4531TESTINST3("smulbb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
4532TESTINST3("smulbb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
4533TESTINST3("smulbb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
4534TESTINST3("smulbb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
4535TESTINST3("smulbb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
4536TESTINST3("smulbb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
4537TESTINST3("smulbb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
4538TESTINST3("smulbb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
4539TESTINST3("smulbb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
4540  /* SMULtt rD, rN, rM */
4541  TESTINST3("smultt r0, r1, r2", 0x00000003, 0x00000004,  r0, r1, r2, 0);
4542  TESTINST3("smultt r0, r1, r2", 0x00010003, 0x00020004,  r0, r1, r2, 0);
4543  TESTINST3("smultt r0, r1, r2", 0x80010003, 0x7fff0004,  r0, r1, r2, 0);
4544  TESTINST3("smultt r0, r1, r2", 0x7fff0003, 0x7fff0004,  r0, r1, r2, 0);
4545  TESTINST3("smultt r0, r1, r2", 0xffff0003, 0xffff0004,  r0, r1, r2, 0);
4546TESTINST3("smultt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
4547TESTINST3("smultt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
4548TESTINST3("smultt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
4549TESTINST3("smultt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
4550TESTINST3("smultt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
4551TESTINST3("smultt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
4552TESTINST3("smultt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
4553TESTINST3("smultt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
4554TESTINST3("smultt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
4555TESTINST3("smultt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
4556TESTINST3("smultt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
4557TESTINST3("smultt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
4558TESTINST3("smultt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
4559TESTINST3("smultt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
4560TESTINST3("smultt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
4561TESTINST3("smultt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
4562TESTINST3("smultt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
4563TESTINST3("smultt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
4564TESTINST3("smultt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
4565TESTINST3("smultt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
4566TESTINST3("smultt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
4567TESTINST3("smultt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
4568TESTINST3("smultt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
4569TESTINST3("smultt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
4570TESTINST3("smultt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
4571TESTINST3("smultt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
4572TESTINST3("smultt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
4573TESTINST3("smultt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
4574TESTINST3("smultt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
4575TESTINST3("smultt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
4576TESTINST3("smultt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
4577TESTINST3("smultt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
4578TESTINST3("smultt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
4579TESTINST3("smultt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
4580TESTINST3("smultt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
4581TESTINST3("smultt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
4582TESTINST3("smultt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
4583TESTINST3("smultt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
4584TESTINST3("smultt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
4585TESTINST3("smultt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
4586TESTINST3("smultt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
4587TESTINST3("smultt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
4588TESTINST3("smultt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
4589TESTINST3("smultt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
4590TESTINST3("smultt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
4591TESTINST3("smultt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
4592TESTINST3("smultt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
4593TESTINST3("smultt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
4594TESTINST3("smultt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
4595TESTINST3("smultt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
4596  /* SMULtb rD, rN, rM */
4597  TESTINST3("smultb r0, r1, r2", 0x00000003, 0x00040000,  r0, r1, r2, 0);
4598  TESTINST3("smultb r0, r1, r2", 0x00010003, 0x00040002,  r0, r1, r2, 0);
4599  TESTINST3("smultb r0, r1, r2", 0x80010003, 0x00047fff,  r0, r1, r2, 0);
4600  TESTINST3("smultb r0, r1, r2", 0x7fff0003, 0x00047fff,  r0, r1, r2, 0);
4601  TESTINST3("smultb r0, r1, r2", 0xffff0003, 0x0004ffff,  r0, r1, r2, 0);
4602TESTINST3("smultb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
4603TESTINST3("smultb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
4604TESTINST3("smultb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
4605TESTINST3("smultb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
4606TESTINST3("smultb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
4607TESTINST3("smultb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
4608TESTINST3("smultb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
4609TESTINST3("smultb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
4610TESTINST3("smultb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
4611TESTINST3("smultb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
4612TESTINST3("smultb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
4613TESTINST3("smultb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
4614TESTINST3("smultb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
4615TESTINST3("smultb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
4616TESTINST3("smultb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
4617TESTINST3("smultb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
4618TESTINST3("smultb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
4619TESTINST3("smultb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
4620TESTINST3("smultb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
4621TESTINST3("smultb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
4622TESTINST3("smultb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
4623TESTINST3("smultb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
4624TESTINST3("smultb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
4625TESTINST3("smultb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
4626TESTINST3("smultb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
4627TESTINST3("smultb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
4628TESTINST3("smultb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
4629TESTINST3("smultb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
4630TESTINST3("smultb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
4631TESTINST3("smultb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
4632TESTINST3("smultb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
4633TESTINST3("smultb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
4634TESTINST3("smultb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
4635TESTINST3("smultb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
4636TESTINST3("smultb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
4637TESTINST3("smultb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
4638TESTINST3("smultb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
4639TESTINST3("smultb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
4640TESTINST3("smultb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
4641TESTINST3("smultb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
4642TESTINST3("smultb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
4643TESTINST3("smultb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
4644TESTINST3("smultb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
4645TESTINST3("smultb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
4646TESTINST3("smultb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
4647TESTINST3("smultb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
4648TESTINST3("smultb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
4649TESTINST3("smultb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
4650TESTINST3("smultb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
4651TESTINST3("smultb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
4652  /* SMULbt rD, rN, rM */
4653  TESTINST3("smulbt r0, r1, r2", 0x00030000, 0x00000004,  r0, r1, r2, 0);
4654  TESTINST3("smulbt r0, r1, r2", 0x00030001, 0x00020004,  r0, r1, r2, 0);
4655  TESTINST3("smulbt r0, r1, r2", 0x00038001, 0x7fff0004,  r0, r1, r2, 0);
4656  TESTINST3("smulbt r0, r1, r2", 0x00037fff, 0x7fff0004,  r0, r1, r2, 0);
4657  TESTINST3("smulbt r0, r1, r2", 0x0003ffff, 0xffff0004,  r0, r1, r2, 0);
4658TESTINST3("smulbt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
4659TESTINST3("smulbt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
4660TESTINST3("smulbt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
4661TESTINST3("smulbt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
4662TESTINST3("smulbt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
4663TESTINST3("smulbt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
4664TESTINST3("smulbt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
4665TESTINST3("smulbt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
4666TESTINST3("smulbt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
4667TESTINST3("smulbt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
4668TESTINST3("smulbt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
4669TESTINST3("smulbt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
4670TESTINST3("smulbt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
4671TESTINST3("smulbt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
4672TESTINST3("smulbt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
4673TESTINST3("smulbt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
4674TESTINST3("smulbt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
4675TESTINST3("smulbt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
4676TESTINST3("smulbt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
4677TESTINST3("smulbt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
4678TESTINST3("smulbt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
4679TESTINST3("smulbt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
4680TESTINST3("smulbt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
4681TESTINST3("smulbt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
4682TESTINST3("smulbt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
4683TESTINST3("smulbt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
4684TESTINST3("smulbt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
4685TESTINST3("smulbt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
4686TESTINST3("smulbt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
4687TESTINST3("smulbt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
4688TESTINST3("smulbt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
4689TESTINST3("smulbt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
4690TESTINST3("smulbt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
4691TESTINST3("smulbt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
4692TESTINST3("smulbt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
4693TESTINST3("smulbt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
4694TESTINST3("smulbt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
4695TESTINST3("smulbt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
4696TESTINST3("smulbt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
4697TESTINST3("smulbt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
4698TESTINST3("smulbt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
4699TESTINST3("smulbt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
4700TESTINST3("smulbt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
4701TESTINST3("smulbt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
4702TESTINST3("smulbt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
4703TESTINST3("smulbt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
4704TESTINST3("smulbt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
4705TESTINST3("smulbt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
4706TESTINST3("smulbt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
4707TESTINST3("smulbt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
4708
4709  printf("-------------- SMULW{B,T} --------------\n");
4710  /* SMULWB rD, rN, rM : Rn x Rm[31..16] */
4711  TESTINST3("smulwb r0, r1, r2", 0x00000003, 0x00020004, r0, r1, r2, 0);
4712  TESTINST3("smulwb r0, r1, r2", 0x00010003, 0x47ff0004, r0, r1, r2, 0);
4713  TESTINST3("smulwb r0, r1, r2", 0x80010003, 0x7fff0004, r0, r1, r2, 0);
4714  TESTINST3("smulwb r0, r1, r2", 0x7fff0003, 0x7fff0004, r0, r1, r2, 0);
4715  TESTINST3("smulwb r0, r1, r2", 0xffff0003, 0xffff0004, r0, r1, r2, 0);
4716TESTINST3("smulwb r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
4717TESTINST3("smulwb r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
4718TESTINST3("smulwb r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
4719TESTINST3("smulwb r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
4720TESTINST3("smulwb r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
4721TESTINST3("smulwb r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
4722TESTINST3("smulwb r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
4723TESTINST3("smulwb r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
4724TESTINST3("smulwb r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
4725TESTINST3("smulwb r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
4726TESTINST3("smulwb r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
4727TESTINST3("smulwb r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
4728TESTINST3("smulwb r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
4729TESTINST3("smulwb r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
4730TESTINST3("smulwb r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
4731TESTINST3("smulwb r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
4732TESTINST3("smulwb r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
4733TESTINST3("smulwb r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
4734TESTINST3("smulwb r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
4735TESTINST3("smulwb r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
4736TESTINST3("smulwb r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
4737TESTINST3("smulwb r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
4738TESTINST3("smulwb r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
4739TESTINST3("smulwb r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
4740TESTINST3("smulwb r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
4741TESTINST3("smulwb r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
4742TESTINST3("smulwb r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
4743TESTINST3("smulwb r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
4744TESTINST3("smulwb r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
4745TESTINST3("smulwb r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
4746TESTINST3("smulwb r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
4747TESTINST3("smulwb r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
4748TESTINST3("smulwb r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
4749TESTINST3("smulwb r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
4750TESTINST3("smulwb r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
4751TESTINST3("smulwb r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
4752TESTINST3("smulwb r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
4753TESTINST3("smulwb r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
4754TESTINST3("smulwb r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
4755TESTINST3("smulwb r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
4756TESTINST3("smulwb r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
4757TESTINST3("smulwb r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
4758TESTINST3("smulwb r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
4759TESTINST3("smulwb r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
4760TESTINST3("smulwb r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
4761TESTINST3("smulwb r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
4762TESTINST3("smulwb r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
4763TESTINST3("smulwb r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
4764TESTINST3("smulwb r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
4765TESTINST3("smulwb r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
4766  /* SMULWT rD, rN, rM - Rn x Rm[15.. 0] */
4767  TESTINST3("smulwt r0, r1, r2", 0x00000003, 0x00040000, r0, r1, r2, 0);
4768  TESTINST3("smulwt r0, r1, r2", 0x00010003, 0x00040002, r0, r1, r2, 0);
4769  TESTINST3("smulwt r0, r1, r2", 0x80010003, 0x00047fff, r0, r1, r2, 0);
4770  TESTINST3("smulwt r0, r1, r2", 0x7fff0003, 0x00047fff, r0, r1, r2, 0);
4771  TESTINST3("smulwt r0, r1, r2", 0xffff0003, 0x0004ffff, r0, r1, r2, 0);
4772TESTINST3("smulwt r0, r1, r2", 0x2575feb2, 0xd2c4287c, r0, r1, r2, 0);
4773TESTINST3("smulwt r0, r1, r2", 0xfb412431, 0x4b90362d, r0, r1, r2, 0);
4774TESTINST3("smulwt r0, r1, r2", 0x004dfbe5, 0xe87927cc, r0, r1, r2, 0);
4775TESTINST3("smulwt r0, r1, r2", 0xf6a3fa3c, 0x083b3571, r0, r1, r2, 0);
4776TESTINST3("smulwt r0, r1, r2", 0xbf17fb9a, 0xb9743941, r0, r1, r2, 0);
4777TESTINST3("smulwt r0, r1, r2", 0x2c0bd024, 0xbce5f924, r0, r1, r2, 0);
4778TESTINST3("smulwt r0, r1, r2", 0x3e976e2e, 0xcc3c201c, r0, r1, r2, 0);
4779TESTINST3("smulwt r0, r1, r2", 0xb4bfb365, 0x1ebaf88e, r0, r1, r2, 0);
4780TESTINST3("smulwt r0, r1, r2", 0x288593c0, 0x722d5e20, r0, r1, r2, 0);
4781TESTINST3("smulwt r0, r1, r2", 0x4d7ff5b4, 0xa1d6f791, r0, r1, r2, 0);
4782TESTINST3("smulwt r0, r1, r2", 0x4557be13, 0x7b11bee7, r0, r1, r2, 0);
4783TESTINST3("smulwt r0, r1, r2", 0xadcf5772, 0xa5631488, r0, r1, r2, 0);
4784TESTINST3("smulwt r0, r1, r2", 0x989a7235, 0xb10bcc65, r0, r1, r2, 0);
4785TESTINST3("smulwt r0, r1, r2", 0x4d6f393a, 0x73f39fca, r0, r1, r2, 0);
4786TESTINST3("smulwt r0, r1, r2", 0x24a3291e, 0x5648e540, r0, r1, r2, 0);
4787TESTINST3("smulwt r0, r1, r2", 0xdd91eebf, 0xc54f79e6, r0, r1, r2, 0);
4788TESTINST3("smulwt r0, r1, r2", 0xf7ce2ec6, 0x5fc92974, r0, r1, r2, 0);
4789TESTINST3("smulwt r0, r1, r2", 0xbc1083e8, 0x7e08184e, r0, r1, r2, 0);
4790TESTINST3("smulwt r0, r1, r2", 0xa617cc31, 0x71c8315f, r0, r1, r2, 0);
4791TESTINST3("smulwt r0, r1, r2", 0xdfe1e8f0, 0x9493110e, r0, r1, r2, 0);
4792TESTINST3("smulwt r0, r1, r2", 0x6ef49020, 0xba8a7e0d, r0, r1, r2, 0);
4793TESTINST3("smulwt r0, r1, r2", 0x3dc4e36b, 0x21568e39, r0, r1, r2, 0);
4794TESTINST3("smulwt r0, r1, r2", 0x52db4a9d, 0x55fcc8cf, r0, r1, r2, 0);
4795TESTINST3("smulwt r0, r1, r2", 0x3564c76c, 0x14434a2a, r0, r1, r2, 0);
4796TESTINST3("smulwt r0, r1, r2", 0x27836b0c, 0x3c855ca8, r0, r1, r2, 0);
4797TESTINST3("smulwt r0, r1, r2", 0x62ff7c30, 0x30ece28e, r0, r1, r2, 0);
4798TESTINST3("smulwt r0, r1, r2", 0x40955fdf, 0x057b562c, r0, r1, r2, 0);
4799TESTINST3("smulwt r0, r1, r2", 0x3b34c270, 0x27e1475b, r0, r1, r2, 0);
4800TESTINST3("smulwt r0, r1, r2", 0x7fdcda96, 0xd05893a7, r0, r1, r2, 0);
4801TESTINST3("smulwt r0, r1, r2", 0xb6ab141d, 0x2dc43624, r0, r1, r2, 0);
4802TESTINST3("smulwt r0, r1, r2", 0x403d53cb, 0x5328d58c, r0, r1, r2, 0);
4803TESTINST3("smulwt r0, r1, r2", 0x21ef1aef, 0x87488a4a, r0, r1, r2, 0);
4804TESTINST3("smulwt r0, r1, r2", 0x31458a23, 0xbb246228, r0, r1, r2, 0);
4805TESTINST3("smulwt r0, r1, r2", 0x848af791, 0x339d8d88, r0, r1, r2, 0);
4806TESTINST3("smulwt r0, r1, r2", 0xda3bacdc, 0x70974249, r0, r1, r2, 0);
4807TESTINST3("smulwt r0, r1, r2", 0x649d5cbd, 0x8a8d4e7d, r0, r1, r2, 0);
4808TESTINST3("smulwt r0, r1, r2", 0xc0c8c881, 0xeb1b4335, r0, r1, r2, 0);
4809TESTINST3("smulwt r0, r1, r2", 0x7dd81a20, 0x0cd6b508, r0, r1, r2, 0);
4810TESTINST3("smulwt r0, r1, r2", 0x6892886c, 0x6731e282, r0, r1, r2, 0);
4811TESTINST3("smulwt r0, r1, r2", 0x112dcffc, 0xb6edf28f, r0, r1, r2, 0);
4812TESTINST3("smulwt r0, r1, r2", 0xabfabbe6, 0x4b4ec9ca, r0, r1, r2, 0);
4813TESTINST3("smulwt r0, r1, r2", 0xe52aabf8, 0xc1037fa4, r0, r1, r2, 0);
4814TESTINST3("smulwt r0, r1, r2", 0xf2f4df1f, 0xcb4ab48f, r0, r1, r2, 0);
4815TESTINST3("smulwt r0, r1, r2", 0x435f909a, 0xaf8f7e18, r0, r1, r2, 0);
4816TESTINST3("smulwt r0, r1, r2", 0x2106ba5f, 0x87df4510, r0, r1, r2, 0);
4817TESTINST3("smulwt r0, r1, r2", 0x246a6376, 0xabf4e8e1, r0, r1, r2, 0);
4818TESTINST3("smulwt r0, r1, r2", 0x1046a1a3, 0xf4c0eeac, r0, r1, r2, 0);
4819TESTINST3("smulwt r0, r1, r2", 0x638ca515, 0x006a54f2, r0, r1, r2, 0);
4820TESTINST3("smulwt r0, r1, r2", 0xf63e7a9d, 0x79f74493, r0, r1, r2, 0);
4821TESTINST3("smulwt r0, r1, r2", 0xbd6845cd, 0x9c09e313, r0, r1, r2, 0);
4822
4823  printf("------------ PKHBT / PKHTB ------------\n");
4824  /* PKHBT */
4825  TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x11223344, 0x55667788, r0,r1,r2, 0);
4826  TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x11223344, 0x55667788, r0,r1,r2, 0);
4827  TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x11223344, 0x55667788, r0,r1,r2, 0);
4828  TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x11223344, 0x55667788, r0,r1,r2, 0);
4829  TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x11223344, 0x55667788, r0,r1,r2, 0);
4830  TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x11223344, 0x55667788, r0,r1,r2, 0);
4831  TESTINST3("pkhbt r0, r1, r2, lsl #22", 0x11223344, 0x55667788, r0,r1,r2, 0);
4832  TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x11223344, 0x55667788, r0,r1,r2, 0);
4833TESTINST3("pkhbt r0, r1, r2", 0x50c28082, 0xc1553709, r0,r1,r2, 0);
4834TESTINST3("pkhbt r0, r1, r2", 0x17962e8f, 0x69ec0212, r0,r1,r2, 0);
4835TESTINST3("pkhbt r0, r1, r2", 0xc57243b7, 0x03fa9bb5, r0,r1,r2, 0);
4836TESTINST3("pkhbt r0, r1, r2", 0x7eb226ac, 0xf52e9fbf, r0,r1,r2, 0);
4837TESTINST3("pkhbt r0, r1, r2", 0xbce0f026, 0x7fcbe5a9, r0,r1,r2, 0);
4838TESTINST3("pkhbt r0, r1, r2", 0xa5757252, 0x2dd01366, r0,r1,r2, 0);
4839TESTINST3("pkhbt r0, r1, r2", 0xf4a477c1, 0x5e4b1cbf, r0,r1,r2, 0);
4840TESTINST3("pkhbt r0, r1, r2", 0x76723a21, 0x464a21cc, r0,r1,r2, 0);
4841TESTINST3("pkhbt r0, r1, r2", 0x74d01105, 0xe8108f1b, r0,r1,r2, 0);
4842TESTINST3("pkhbt r0, r1, r2", 0xc1273e2c, 0xcd90d604, r0,r1,r2, 0);
4843TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4844TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4845TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4846TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4847TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4848TESTINST3("pkhbt r0, r1, r2, lsl #8",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4849TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4850TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4851TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4852TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4853TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4854TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4855TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4856TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4857TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4858TESTINST3("pkhbt r0, r1, r2, lsl #8",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4859TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4860TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4861TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4862TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4863TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4864TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4865TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4866TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4867TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4868TESTINST3("pkhbt r0, r1, r2, lsl #8",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4869TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4870TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4871TESTINST3("pkhbt r0, r1, r2, lsl #24", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4872TESTINST3("pkhbt r0, r1, r2, lsl #31", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4873TESTINST3("pkhbt r0, r1, r2, lsl #0",  0xd5dc5407, 0xf87b961e, r0,r1,r2, 0);
4874TESTINST3("pkhbt r0, r1, r2, lsl #1",  0xd65db979, 0xc61b323b, r0,r1,r2, 0);
4875TESTINST3("pkhbt r0, r1, r2, lsl #2",  0xa3268abe, 0xed2cbf78, r0,r1,r2, 0);
4876TESTINST3("pkhbt r0, r1, r2, lsl #3",  0xbf73f0a5, 0x2fb714c9, r0,r1,r2, 0);
4877TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x281703ed, 0x925ef472, r0,r1,r2, 0);
4878TESTINST3("pkhbt r0, r1, r2, lsl #8",  0xeaa652c7, 0x137741f4, r0,r1,r2, 0);
4879TESTINST3("pkhbt r0, r1, r2, lsl #12", 0x71fbde8b, 0xdba5bd25, r0,r1,r2, 0);
4880TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x884c0ad8, 0xc00b821a, r0,r1,r2, 0);
4881TESTINST3("pkhbt r0, r1, r2, lsl #24", 0xe1bb8606, 0x58293969, r0,r1,r2, 0);
4882TESTINST3("pkhbt r0, r1, r2, lsl #31", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0);
4883TESTINST3("pkhbt r0, r1, r2, lsl #0",  0x40b094e2, 0x17913309, r0,r1,r2, 0);
4884TESTINST3("pkhbt r0, r1, r2, lsl #1",  0x5388b5cd, 0x86582032, r0,r1,r2, 0);
4885TESTINST3("pkhbt r0, r1, r2, lsl #2",  0x5de41558, 0xccfa1c7e, r0,r1,r2, 0);
4886TESTINST3("pkhbt r0, r1, r2, lsl #3",  0x23ba1b46, 0x4437983c, r0,r1,r2, 0);
4887TESTINST3("pkhbt r0, r1, r2, lsl #4",  0x48d06549, 0xa9085781, r0,r1,r2, 0);
4888TESTINST3("pkhbt r0, r1, r2, lsl #8",  0xc6b4ac58, 0xb2aead21, r0,r1,r2, 0);
4889TESTINST3("pkhbt r0, r1, r2, lsl #12", 0xc2bdf597, 0xdde1e6a4, r0,r1,r2, 0);
4890TESTINST3("pkhbt r0, r1, r2, lsl #16", 0x852e3a72, 0x157b0dea, r0,r1,r2, 0);
4891TESTINST3("pkhbt r0, r1, r2, lsl #24", 0xe7aa57b4, 0x1584bd74, r0,r1,r2, 0);
4892TESTINST3("pkhbt r0, r1, r2, lsl #31", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0);
4893  /* PKHTB */
4894  TESTINST3("pkhtb r0, r1, r2, asr #0",  0x11223344, 0x55667788, r0,r1,r2, 0);
4895  TESTINST3("pkhtb r0, r1, r2, asr #1",  0x11223344, 0x55667788, r0,r1,r2, 0);
4896  TESTINST3("pkhtb r0, r1, r2, asr #2",  0x11223344, 0x55667788, r0,r1,r2, 0);
4897  TESTINST3("pkhtb r0, r1, r2, asr #3",  0x11223344, 0x55667788, r0,r1,r2, 0);
4898  TESTINST3("pkhtb r0, r1, r2, asr #4",  0x11223344, 0x55667788, r0,r1,r2, 0);
4899  TESTINST3("pkhtb r0, r1, r2, asr #16", 0x11223344, 0x55667788, r0,r1,r2, 0);
4900  TESTINST3("pkhtb r0, r1, r2, asr #22", 0x11223344, 0x55667788, r0,r1,r2, 0);
4901  TESTINST3("pkhtb r0, r1, r2, asr #31", 0x11223344, 0x55667788, r0,r1,r2, 0);
4902TESTINST3("pkhtb r0, r1, r2", 0x50c28082, 0xc1553709, r0,r1,r2, 0);
4903TESTINST3("pkhtb r0, r1, r2", 0x17962e8f, 0x69ec0212, r0,r1,r2, 0);
4904TESTINST3("pkhtb r0, r1, r2", 0xc57243b7, 0x03fa9bb5, r0,r1,r2, 0);
4905TESTINST3("pkhtb r0, r1, r2", 0x7eb226ac, 0xf52e9fbf, r0,r1,r2, 0);
4906TESTINST3("pkhtb r0, r1, r2", 0xbce0f026, 0x7fcbe5a9, r0,r1,r2, 0);
4907TESTINST3("pkhtb r0, r1, r2", 0xa5757252, 0x2dd01366, r0,r1,r2, 0);
4908TESTINST3("pkhtb r0, r1, r2", 0xf4a477c1, 0x5e4b1cbf, r0,r1,r2, 0);
4909TESTINST3("pkhtb r0, r1, r2", 0x76723a21, 0x464a21cc, r0,r1,r2, 0);
4910TESTINST3("pkhtb r0, r1, r2", 0x74d01105, 0xe8108f1b, r0,r1,r2, 0);
4911TESTINST3("pkhtb r0, r1, r2", 0xc1273e2c, 0xcd90d604, r0,r1,r2, 0);
4912TESTINST3("pkhtb r0, r1, r2, asr #0",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4913TESTINST3("pkhtb r0, r1, r2, asr #1",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4914TESTINST3("pkhtb r0, r1, r2, asr #2",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4915TESTINST3("pkhtb r0, r1, r2, asr #3",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4916TESTINST3("pkhtb r0, r1, r2, asr #4",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4917TESTINST3("pkhtb r0, r1, r2, asr #8",  0x5f986e68, 0x35232047, r0,r1,r2, 0);
4918TESTINST3("pkhtb r0, r1, r2, asr #12", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4919TESTINST3("pkhtb r0, r1, r2, asr #16", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4920TESTINST3("pkhtb r0, r1, r2, asr #24", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4921TESTINST3("pkhtb r0, r1, r2, asr #31", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4922TESTINST3("pkhtb r0, r1, r2, asr #32", 0x5f986e68, 0x35232047, r0,r1,r2, 0);
4923TESTINST3("pkhtb r0, r1, r2, asr #0",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4924TESTINST3("pkhtb r0, r1, r2, asr #1",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4925TESTINST3("pkhtb r0, r1, r2, asr #2",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4926TESTINST3("pkhtb r0, r1, r2, asr #3",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4927TESTINST3("pkhtb r0, r1, r2, asr #4",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4928TESTINST3("pkhtb r0, r1, r2, asr #8",  0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4929TESTINST3("pkhtb r0, r1, r2, asr #12", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4930TESTINST3("pkhtb r0, r1, r2, asr #16", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4931TESTINST3("pkhtb r0, r1, r2, asr #24", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4932TESTINST3("pkhtb r0, r1, r2, asr #31", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4933TESTINST3("pkhtb r0, r1, r2, asr #32", 0x36f26261, 0x89d2ef86, r0,r1,r2, 0);
4934TESTINST3("pkhtb r0, r1, r2, asr #0",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4935TESTINST3("pkhtb r0, r1, r2, asr #1",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4936TESTINST3("pkhtb r0, r1, r2, asr #2",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4937TESTINST3("pkhtb r0, r1, r2, asr #3",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4938TESTINST3("pkhtb r0, r1, r2, asr #4",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4939TESTINST3("pkhtb r0, r1, r2, asr #8",  0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4940TESTINST3("pkhtb r0, r1, r2, asr #12", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4941TESTINST3("pkhtb r0, r1, r2, asr #16", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4942TESTINST3("pkhtb r0, r1, r2, asr #24", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4943TESTINST3("pkhtb r0, r1, r2, asr #31", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4944TESTINST3("pkhtb r0, r1, r2, asr #32", 0x216158cb, 0x57a50a01, r0,r1,r2, 0);
4945TESTINST3("pkhtb r0, r1, r2, asr #0",  0xd5dc5407, 0xf87b961e, r0,r1,r2, 0);
4946TESTINST3("pkhtb r0, r1, r2, asr #1",  0xd65db979, 0xc61b323b, r0,r1,r2, 0);
4947TESTINST3("pkhtb r0, r1, r2, asr #2",  0xa3268abe, 0xed2cbf78, r0,r1,r2, 0);
4948TESTINST3("pkhtb r0, r1, r2, asr #3",  0xbf73f0a5, 0x2fb714c9, r0,r1,r2, 0);
4949TESTINST3("pkhtb r0, r1, r2, asr #4",  0x281703ed, 0x925ef472, r0,r1,r2, 0);
4950TESTINST3("pkhtb r0, r1, r2, asr #8",  0xeaa652c7, 0x137741f4, r0,r1,r2, 0);
4951TESTINST3("pkhtb r0, r1, r2, asr #12", 0x71fbde8b, 0xdba5bd25, r0,r1,r2, 0);
4952TESTINST3("pkhtb r0, r1, r2, asr #16", 0x884c0ad8, 0xc00b821a, r0,r1,r2, 0);
4953TESTINST3("pkhtb r0, r1, r2, asr #24", 0xe1bb8606, 0x58293969, r0,r1,r2, 0);
4954TESTINST3("pkhtb r0, r1, r2, asr #31", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0);
4955TESTINST3("pkhtb r0, r1, r2, asr #32", 0xa3cfd624, 0x6077fb1f, r0,r1,r2, 0);
4956TESTINST3("pkhtb r0, r1, r2, asr #0",  0x40b094e2, 0x17913309, r0,r1,r2, 0);
4957TESTINST3("pkhtb r0, r1, r2, asr #1",  0x5388b5cd, 0x86582032, r0,r1,r2, 0);
4958TESTINST3("pkhtb r0, r1, r2, asr #2",  0x5de41558, 0xccfa1c7e, r0,r1,r2, 0);
4959TESTINST3("pkhtb r0, r1, r2, asr #3",  0x23ba1b46, 0x4437983c, r0,r1,r2, 0);
4960TESTINST3("pkhtb r0, r1, r2, asr #4",  0x48d06549, 0xa9085781, r0,r1,r2, 0);
4961TESTINST3("pkhtb r0, r1, r2, asr #8",  0xc6b4ac58, 0xb2aead21, r0,r1,r2, 0);
4962TESTINST3("pkhtb r0, r1, r2, asr #12", 0xc2bdf597, 0xdde1e6a4, r0,r1,r2, 0);
4963TESTINST3("pkhtb r0, r1, r2, asr #16", 0x852e3a72, 0x157b0dea, r0,r1,r2, 0);
4964TESTINST3("pkhtb r0, r1, r2, asr #24", 0xe7aa57b4, 0x1584bd74, r0,r1,r2, 0);
4965TESTINST3("pkhtb r0, r1, r2, asr #31", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0);
4966TESTINST3("pkhtb r0, r1, r2, asr #32", 0xd4b64d54, 0xc53aaba9, r0,r1,r2, 0);
4967
4968  printf("----------------- USAT ----------------- \n");
4969  TESTINST2("usat  r0, #0,  r1", 0x0123abcd, r0, r1, 0);
4970  TESTINST2("usat  r0, #1,  r1", 0x0123abcd, r0, r1, 0);
4971  TESTINST2("usat  r0, #5,  r1", 0x0123abcd, r0, r1, 0);
4972  TESTINST2("usat  r0, #8,  r1", 0x0123abcd, r0, r1, 0);
4973  TESTINST2("usat  r0, #11, r1", 0x11110000, r0, r1, 0);
4974  TESTINST2("usat  r0, #13, r1", 0x11110000, r0, r1, 0);
4975  TESTINST2("usat  r0, #15, r1", 0x11110000, r0, r1, 0);
4976TESTINST2("usat  r0, #0,  r1",          0xebbff82b, r0, r1, 0);
4977TESTINST2("usat  r0, #31, r1, lsl #0",  0x5f986e68, r0, r1, 0);
4978TESTINST2("usat  r0, #31, r1, lsl #0",  0xe7aa57b4, r0, r1, 0);
4979TESTINST2("usat  r0, #31, r1, lsl #0",  0x89d2ef86, r0, r1, 0);
4980TESTINST2("usat  r0, #31, r1, lsl #8",  0xc53aaba9, r0, r1, 0);
4981TESTINST2("usat  r0, #31, r1, lsl #8",  0x216158cb, r0, r1, 0);
4982TESTINST2("usat  r0, #31, r1, lsl #8",  0x3cd6cd94, r0, r1, 0);
4983TESTINST2("usat  r0, #0,  r1, lsl #0",  0xf87b961e, r0, r1, 0);
4984TESTINST2("usat  r0, #0,  r1, lsl #0",  0xc61b323b, r0, r1, 0);
4985TESTINST2("usat  r0, #0,  r1, lsl #0",  0xa3268abe, r0, r1, 0);
4986TESTINST2("usat  r0, #0,  r1, lsl #8",  0xbf73f0a5, r0, r1, 0);
4987TESTINST2("usat  r0, #0,  r1, lsl #8",  0x925ef472, r0, r1, 0);
4988TESTINST2("usat  r0, #0,  r1, lsl #8",  0x137741f4, r0, r1, 0);
4989TESTINST2("usat  r0, #24, r1, lsl #2",  0x50c28082, r0, r1, 0);
4990TESTINST2("usat  r0, #16, r1, lsl #3",  0x17962e8f, r0, r1, 0);
4991TESTINST2("usat  r0, #12, r1, lsl #4",  0xc57243b7, r0, r1, 0);
4992TESTINST2("usat  r0, #8,  r1, lsl #8",  0xf20fb90f, r0, r1, 0);
4993TESTINST2("usat  r0, #4,  r1, lsl #12", 0xbb151055, r0, r1, 0);
4994TESTINST2("usat  r0, #3,  r1, lsl #16", 0x957440d2, r0, r1, 0);
4995TESTINST2("usat  r0, #2,  r1, lsl #24", 0x728b7771, r0, r1, 0);
4996TESTINST2("usat  r0, #1,  r1, lsl #31", 0xf13c20f3, r0, r1, 0);
4997TESTINST2("usat  r0, #0,  r1",          0xebbff82b, r0, r1, 0);
4998TESTINST2("usat  r0, #31, r1, asr #0",  0x5f986e68, r0, r1, 0);
4999TESTINST2("usat  r0, #31, r1, asr #0",  0xe7aa57b4, r0, r1, 0);
5000TESTINST2("usat  r0, #31, r1, asr #0",  0x89d2ef86, r0, r1, 0);
5001TESTINST2("usat  r0, #31, r1, asr #8",  0xc53aaba9, r0, r1, 0);
5002TESTINST2("usat  r0, #31, r1, asr #8",  0x216158cb, r0, r1, 0);
5003TESTINST2("usat  r0, #31, r1, asr #8",  0x3cd6cd94, r0, r1, 0);
5004TESTINST2("usat  r0, #0,  r1, asr #0",  0xf87b961e, r0, r1, 0);
5005TESTINST2("usat  r0, #0,  r1, asr #0",  0xc61b323b, r0, r1, 0);
5006TESTINST2("usat  r0, #0,  r1, asr #0",  0xa3268abe, r0, r1, 0);
5007TESTINST2("usat  r0, #0,  r1, asr #8",  0xbf73f0a5, r0, r1, 0);
5008TESTINST2("usat  r0, #0,  r1, asr #8",  0x925ef472, r0, r1, 0);
5009TESTINST2("usat  r0, #0,  r1, asr #8",  0x137741f4, r0, r1, 0);
5010TESTINST2("usat  r0, #24, r1, asr #2",  0x50c28082, r0, r1, 0);
5011TESTINST2("usat  r0, #16, r1, asr #3",  0x17962e8f, r0, r1, 0);
5012TESTINST2("usat  r0, #12, r1, asr #4",  0xc57243b7, r0, r1, 0);
5013TESTINST2("usat  r0, #8,  r1, asr #8",  0xf20fb90f, r0, r1, 0);
5014TESTINST2("usat  r0, #4,  r1, asr #12", 0xbb151055, r0, r1, 0);
5015TESTINST2("usat  r0, #3,  r1, asr #16", 0x957440d2, r0, r1, 0);
5016TESTINST2("usat  r0, #2,  r1, asr #24", 0x728b7771, r0, r1, 0);
5017TESTINST2("usat  r0, #1,  r1, asr #31", 0xf13c20f3, r0, r1, 0);
5018TESTINST2("usat  r0, #0,  r1",          0xebbff82b, r0, r1, 0);
5019TESTINST2("usat  r0, #31, r1, asr #0",  0x5f986e68, r0, r1, 0);
5020TESTINST2("usat  r0, #31, r1, asr #0",  0xe7aa57b4, r0, r1, 0);
5021TESTINST2("usat  r0, #31, r1, asr #0",  0x89d2ef86, r0, r1, 0);
5022TESTINST2("usat  r0, #31, r1, asr #8",  0xc53aaba9, r0, r1, 0);
5023TESTINST2("usat  r0, #31, r1, asr #8",  0x216158cb, r0, r1, 0);
5024TESTINST2("usat  r0, #31, r1, asr #8",  0x3cd6cd94, r0, r1, 0);
5025TESTINST2("usat  r0, #0,  r1, asr #0",  0xf87b961e, r0, r1, 0);
5026TESTINST2("usat  r0, #0,  r1, asr #0",  0xc61b323b, r0, r1, 0);
5027TESTINST2("usat  r0, #0,  r1, asr #0",  0xa3268abe, r0, r1, 0);
5028TESTINST2("usat  r0, #0,  r1, asr #8",  0xbf73f0a5, r0, r1, 0);
5029TESTINST2("usat  r0, #0,  r1, asr #8",  0x925ef472, r0, r1, 0);
5030TESTINST2("usat  r0, #0,  r1, asr #8",  0x137741f4, r0, r1, 0);
5031TESTINST2("usat  r0, #24, r1, asr #2",  0x50c28082, r0, r1, 0);
5032TESTINST2("usat  r0, #16, r1, asr #3",  0x17962e8f, r0, r1, 0);
5033TESTINST2("usat  r0, #12, r1, asr #4",  0xc57243b7, r0, r1, 0);
5034TESTINST2("usat  r0, #8,  r1, asr #8",  0xf20fb90f, r0, r1, 0);
5035TESTINST2("usat  r0, #4,  r1, asr #12", 0xbb151055, r0, r1, 0);
5036TESTINST2("usat  r0, #3,  r1, asr #16", 0x957440d2, r0, r1, 0);
5037TESTINST2("usat  r0, #2,  r1, asr #24", 0x728b7771, r0, r1, 0);
5038TESTINST2("usat  r0, #1,  r1, asr #31", 0xf13c20f3, r0, r1, 0);
5039#ifndef __thumb__
5040TESTINST2("usat  r0, #0,  r1, asr #32", 0xa9085781, r0, r1, 0);
5041TESTINST2("usat  r0, #31, r1, asr #32", 0x40b094e2, r0, r1, 0);
5042TESTINST2("usat  r0, #31, r1, asr #32", 0x17913309, r0, r1, 0);
5043TESTINST2("usat  r0, #31, r1, asr #32", 0x5388b5cd, r0, r1, 0);
5044TESTINST2("usat  r0, #24, r1, asr #32", 0x86582032, r0, r1, 0);
5045TESTINST2("usat  r0, #16, r1, asr #32", 0x5de41558, r0, r1, 0);
5046TESTINST2("usat  r0, #12, r1, asr #32", 0xccfa1c7e, r0, r1, 0);
5047TESTINST2("usat  r0, #8,  r1, asr #32", 0x23ba1b46, r0, r1, 0);
5048TESTINST2("usat  r0, #4,  r1, asr #32", 0x4437983c, r0, r1, 0);
5049TESTINST2("usat  r0, #3,  r1, asr #32", 0x48d06549, r0, r1, 0);
5050TESTINST2("usat  r0, #2,  r1, asr #32", 0xa9085781, r0, r1, 0);
5051TESTINST2("usat  r0, #1,  r1, asr #32", 0xc6b4ac58, r0, r1, 0);
5052#endif
5053
5054  printf("------------ USAT16 sat_imm ------------ \n");
5055  TESTINST2("usat16  r0, #0,  r1", 0x0123abcd, r0, r1, 0);
5056  TESTINST2("usat16  r0, #1,  r1", 0xffcdabcd, r0, r1, 0);
5057  TESTINST2("usat16  r0, #5,  r1", 0x0123feff, r0, r1, 0);
5058  TESTINST2("usat16  r0, #8,  r1", 0x0123abcd, r0, r1, 0);
5059  TESTINST2("usat16  r0, #11, r1", 0x11110000, r0, r1, 0);
5060  TESTINST2("usat16  r0, #13, r1", 0x1111f111, r0, r1, 0);
5061  TESTINST2("usat16  r0, #15, r1", 0x00001111, r0, r1, 0);
5062TESTINST2("usat16  r0, #0,  r1", 0xebbff82b, r0, r1, 0);
5063TESTINST2("usat16  r0, #1,  r1", 0xebbff82b, r0, r1, 0);
5064TESTINST2("usat16  r0, #3,  r1", 0x50c28082, r0, r1, 0);
5065TESTINST2("usat16  r0, #5,  r1", 0x17962e8f, r0, r1, 0);
5066TESTINST2("usat16  r0, #8,  r1", 0xc57243b7, r0, r1, 0);
5067TESTINST2("usat16  r0, #10, r1", 0xf20fb90f, r0, r1, 0);
5068TESTINST2("usat16  r0, #11, r1", 0xbb151055, r0, r1, 0);
5069TESTINST2("usat16  r0, #13, r1", 0x957440d2, r0, r1, 0);
5070TESTINST2("usat16  r0, #14, r1", 0x728b7771, r0, r1, 0);
5071TESTINST2("usat16  r0, #15, r1", 0xf13c20f3, r0, r1, 0);
5072TESTINST2("usat16  r0, #0,  r1", 0x86398371, r0, r1, 0);
5073TESTINST2("usat16  r0, #1,  r1", 0x03d0fb78, r0, r1, 0);
5074TESTINST2("usat16  r0, #3,  r1", 0xd0d49b7c, r0, r1, 0);
5075TESTINST2("usat16  r0, #5,  r1", 0x76354a58, r0, r1, 0);
5076TESTINST2("usat16  r0, #8,  r1", 0x9fa45fb7, r0, r1, 0);
5077TESTINST2("usat16  r0, #10, r1", 0x7572bdec, r0, r1, 0);
5078TESTINST2("usat16  r0, #11, r1", 0xfea59eb6, r0, r1, 0);
5079TESTINST2("usat16  r0, #13, r1", 0xf2669090, r0, r1, 0);
5080TESTINST2("usat16  r0, #14, r1", 0xbc1ff573, r0, r1, 0);
5081TESTINST2("usat16  r0, #15, r1", 0x7eb226ac, r0, r1, 0);
5082TESTINST2("usat16  r0, #0,  r1", 0x22b65db1, r0, r1, 0);
5083TESTINST2("usat16  r0, #1,  r1", 0x776c41c7, r0, r1, 0);
5084TESTINST2("usat16  r0, #3,  r1", 0xe50dd77c, r0, r1, 0);
5085TESTINST2("usat16  r0, #5,  r1", 0xd6f9a698, r0, r1, 0);
5086TESTINST2("usat16  r0, #8,  r1", 0xeda5110c, r0, r1, 0);
5087TESTINST2("usat16  r0, #10, r1", 0x0be36f70, r0, r1, 0);
5088TESTINST2("usat16  r0, #11, r1", 0xd759eb72, r0, r1, 0);
5089TESTINST2("usat16  r0, #13, r1", 0xd9c4b1f4, r0, r1, 0);
5090TESTINST2("usat16  r0, #14, r1", 0xa29eb320, r0, r1, 0);
5091TESTINST2("usat16  r0, #15, r1", 0xcf1e4487, r0, r1, 0);
5092TESTINST2("usat16  r0, #0,  r1", 0x2eb68500, r0, r1, 0);
5093TESTINST2("usat16  r0, #1,  r1", 0xcdb7ed11, r0, r1, 0);
5094TESTINST2("usat16  r0, #3,  r1", 0x2eaea305, r0, r1, 0);
5095TESTINST2("usat16  r0, #5,  r1", 0x6ebd04d9, r0, r1, 0);
5096TESTINST2("usat16  r0, #8,  r1", 0xa5ec1aa8, r0, r1, 0);
5097TESTINST2("usat16  r0, #10, r1", 0x72f33509, r0, r1, 0);
5098TESTINST2("usat16  r0, #11, r1", 0xa3e6f759, r0, r1, 0);
5099TESTINST2("usat16  r0, #13, r1", 0xfaceab39, r0, r1, 0);
5100TESTINST2("usat16  r0, #14, r1", 0x2738f0ff, r0, r1, 0);
5101TESTINST2("usat16  r0, #15, r1", 0xe79fd570, r0, r1, 0);
5102TESTINST2("usat16  r0, #0,  r1", 0x55ea3e4e, r0, r1, 0);
5103TESTINST2("usat16  r0, #1,  r1", 0x2b62ba5a, r0, r1, 0);
5104TESTINST2("usat16  r0, #3,  r1", 0x9b41bfb1, r0, r1, 0);
5105TESTINST2("usat16  r0, #5,  r1", 0x557c7ba2, r0, r1, 0);
5106TESTINST2("usat16  r0, #8,  r1", 0x2973c051, r0, r1, 0);
5107TESTINST2("usat16  r0, #10, r1", 0x6a228b19, r0, r1, 0);
5108TESTINST2("usat16  r0, #11, r1", 0x0cdafabe, r0, r1, 0);
5109TESTINST2("usat16  r0, #13, r1", 0x50865114, r0, r1, 0);
5110TESTINST2("usat16  r0, #14, r1", 0xd83b849b, r0, r1, 0);
5111TESTINST2("usat16  r0, #15, r1", 0xca5e5605, r0, r1, 0);
5112
5113  printf("---------------- UADD16 ---------------- \n");
5114  TESTINST3("uadd16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
5115  TESTINST3("uadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
5116  TESTINST3("uadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
5117  TESTINST3("uadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
5118TESTINST3("uadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5119TESTINST3("uadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5120TESTINST3("uadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5121TESTINST3("uadd16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5122TESTINST3("uadd16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5123TESTINST3("uadd16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5124TESTINST3("uadd16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5125TESTINST3("uadd16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5126TESTINST3("uadd16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5127TESTINST3("uadd16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5128TESTINST3("uadd16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5129TESTINST3("uadd16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5130TESTINST3("uadd16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5131TESTINST3("uadd16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5132TESTINST3("uadd16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5133TESTINST3("uadd16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5134TESTINST3("uadd16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5135TESTINST3("uadd16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5136TESTINST3("uadd16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5137TESTINST3("uadd16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5138TESTINST3("uadd16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5139TESTINST3("uadd16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5140TESTINST3("uadd16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5141TESTINST3("uadd16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5142TESTINST3("uadd16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5143TESTINST3("uadd16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5144TESTINST3("uadd16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5145TESTINST3("uadd16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5146TESTINST3("uadd16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5147TESTINST3("uadd16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5148TESTINST3("uadd16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5149TESTINST3("uadd16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5150TESTINST3("uadd16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5151TESTINST3("uadd16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5152TESTINST3("uadd16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5153TESTINST3("uadd16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5154TESTINST3("uadd16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5155TESTINST3("uadd16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5156TESTINST3("uadd16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5157TESTINST3("uadd16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5158TESTINST3("uadd16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5159TESTINST3("uadd16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5160TESTINST3("uadd16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5161TESTINST3("uadd16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5162TESTINST3("uadd16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5163TESTINST3("uadd16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5164TESTINST3("uadd16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5165TESTINST3("uadd16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5166TESTINST3("uadd16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5167TESTINST3("uadd16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5168
5169  printf("---------------- USUB16 ---------------- \n");
5170  TESTINST3("usub16 r0, r1, r2", 0x04000022, 0x03000011, r0, r1, r2, 0);
5171  TESTINST3("usub16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
5172  TESTINST3("usub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
5173  TESTINST3("usub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
5174  TESTINST3("usub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
5175TESTINST3("usub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5176TESTINST3("usub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5177TESTINST3("usub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5178TESTINST3("usub16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5179TESTINST3("usub16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5180TESTINST3("usub16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5181TESTINST3("usub16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5182TESTINST3("usub16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5183TESTINST3("usub16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5184TESTINST3("usub16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5185TESTINST3("usub16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5186TESTINST3("usub16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5187TESTINST3("usub16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5188TESTINST3("usub16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5189TESTINST3("usub16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5190TESTINST3("usub16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5191TESTINST3("usub16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5192TESTINST3("usub16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5193TESTINST3("usub16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5194TESTINST3("usub16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5195TESTINST3("usub16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5196TESTINST3("usub16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5197TESTINST3("usub16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5198TESTINST3("usub16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5199TESTINST3("usub16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5200TESTINST3("usub16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5201TESTINST3("usub16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5202TESTINST3("usub16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5203TESTINST3("usub16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5204TESTINST3("usub16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5205TESTINST3("usub16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5206TESTINST3("usub16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5207TESTINST3("usub16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5208TESTINST3("usub16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5209TESTINST3("usub16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5210TESTINST3("usub16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5211TESTINST3("usub16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5212TESTINST3("usub16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5213TESTINST3("usub16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5214TESTINST3("usub16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5215TESTINST3("usub16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5216TESTINST3("usub16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5217TESTINST3("usub16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5218TESTINST3("usub16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5219TESTINST3("usub16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5220TESTINST3("usub16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5221TESTINST3("usub16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5222TESTINST3("usub16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5223TESTINST3("usub16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5224TESTINST3("usub16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5225
5226  printf("---------------- UADD8 ----------------- \n");
5227  TESTINST3("uadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
5228  TESTINST3("uadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
5229  TESTINST3("uadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
5230  TESTINST3("uadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
5231  TESTINST3("uadd8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0);
5232  TESTINST3("uadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
5233  TESTINST3("uadd8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0);
5234  TESTINST3("uadd8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0);
5235TESTINST3("uadd8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5236TESTINST3("uadd8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5237TESTINST3("uadd8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5238TESTINST3("uadd8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5239TESTINST3("uadd8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5240TESTINST3("uadd8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5241TESTINST3("uadd8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5242TESTINST3("uadd8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5243TESTINST3("uadd8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5244TESTINST3("uadd8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5245TESTINST3("uadd8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5246TESTINST3("uadd8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5247TESTINST3("uadd8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5248TESTINST3("uadd8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5249TESTINST3("uadd8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5250TESTINST3("uadd8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5251TESTINST3("uadd8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5252TESTINST3("uadd8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5253TESTINST3("uadd8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5254TESTINST3("uadd8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5255TESTINST3("uadd8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5256TESTINST3("uadd8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5257TESTINST3("uadd8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5258TESTINST3("uadd8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5259TESTINST3("uadd8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5260TESTINST3("uadd8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5261TESTINST3("uadd8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5262TESTINST3("uadd8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5263TESTINST3("uadd8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5264TESTINST3("uadd8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5265TESTINST3("uadd8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5266TESTINST3("uadd8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5267TESTINST3("uadd8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5268TESTINST3("uadd8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5269TESTINST3("uadd8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5270TESTINST3("uadd8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5271TESTINST3("uadd8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5272TESTINST3("uadd8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5273TESTINST3("uadd8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5274TESTINST3("uadd8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5275TESTINST3("uadd8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5276TESTINST3("uadd8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5277TESTINST3("uadd8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5278TESTINST3("uadd8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5279TESTINST3("uadd8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5280TESTINST3("uadd8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5281TESTINST3("uadd8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5282TESTINST3("uadd8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5283TESTINST3("uadd8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5284TESTINST3("uadd8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5285
5286  printf("---------------- USUB8 ----------------- \n");
5287  TESTINST3("usub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
5288  TESTINST3("usub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
5289  TESTINST3("usub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
5290  TESTINST3("usub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
5291  TESTINST3("usub8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0);
5292  TESTINST3("usub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
5293  TESTINST3("usub8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0);
5294  TESTINST3("usub8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0);
5295TESTINST3("usub8 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5296TESTINST3("usub8 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5297TESTINST3("usub8 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5298TESTINST3("usub8 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5299TESTINST3("usub8 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5300TESTINST3("usub8 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5301TESTINST3("usub8 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5302TESTINST3("usub8 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5303TESTINST3("usub8 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5304TESTINST3("usub8 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5305TESTINST3("usub8 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5306TESTINST3("usub8 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5307TESTINST3("usub8 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5308TESTINST3("usub8 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5309TESTINST3("usub8 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5310TESTINST3("usub8 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5311TESTINST3("usub8 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5312TESTINST3("usub8 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5313TESTINST3("usub8 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5314TESTINST3("usub8 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5315TESTINST3("usub8 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5316TESTINST3("usub8 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5317TESTINST3("usub8 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5318TESTINST3("usub8 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5319TESTINST3("usub8 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5320TESTINST3("usub8 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5321TESTINST3("usub8 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5322TESTINST3("usub8 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5323TESTINST3("usub8 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5324TESTINST3("usub8 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5325TESTINST3("usub8 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5326TESTINST3("usub8 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5327TESTINST3("usub8 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5328TESTINST3("usub8 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5329TESTINST3("usub8 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5330TESTINST3("usub8 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5331TESTINST3("usub8 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5332TESTINST3("usub8 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5333TESTINST3("usub8 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5334TESTINST3("usub8 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5335TESTINST3("usub8 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5336TESTINST3("usub8 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5337TESTINST3("usub8 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5338TESTINST3("usub8 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5339TESTINST3("usub8 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5340TESTINST3("usub8 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5341TESTINST3("usub8 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5342TESTINST3("usub8 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5343TESTINST3("usub8 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5344TESTINST3("usub8 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5345
5346  printf("---------------- QADD16 ---------------- \n");
5347  TESTINST3("qadd16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
5348  TESTINST3("qadd16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
5349  TESTINST3("qadd16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
5350  TESTINST3("qadd16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
5351TESTINST3("qadd16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5352TESTINST3("qadd16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5353TESTINST3("qadd16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5354TESTINST3("qadd16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5355TESTINST3("qadd16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5356TESTINST3("qadd16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5357TESTINST3("qadd16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5358TESTINST3("qadd16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5359TESTINST3("qadd16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5360TESTINST3("qadd16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5361TESTINST3("qadd16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5362TESTINST3("qadd16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5363TESTINST3("qadd16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5364TESTINST3("qadd16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5365TESTINST3("qadd16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5366TESTINST3("qadd16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5367TESTINST3("qadd16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5368TESTINST3("qadd16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5369TESTINST3("qadd16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5370TESTINST3("qadd16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5371TESTINST3("qadd16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5372TESTINST3("qadd16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5373TESTINST3("qadd16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5374TESTINST3("qadd16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5375TESTINST3("qadd16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5376TESTINST3("qadd16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5377TESTINST3("qadd16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5378TESTINST3("qadd16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5379TESTINST3("qadd16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5380TESTINST3("qadd16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5381TESTINST3("qadd16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5382TESTINST3("qadd16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5383TESTINST3("qadd16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5384TESTINST3("qadd16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5385TESTINST3("qadd16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5386TESTINST3("qadd16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5387TESTINST3("qadd16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5388TESTINST3("qadd16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5389TESTINST3("qadd16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5390TESTINST3("qadd16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5391TESTINST3("qadd16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5392TESTINST3("qadd16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5393TESTINST3("qadd16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5394TESTINST3("qadd16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5395TESTINST3("qadd16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5396TESTINST3("qadd16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5397TESTINST3("qadd16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5398TESTINST3("qadd16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5399TESTINST3("qadd16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5400TESTINST3("qadd16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5401
5402  printf("---------------- QSUB16 ---------------- \n");
5403  TESTINST3("qsub16 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
5404  TESTINST3("qsub16 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
5405  TESTINST3("qsub16 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
5406  TESTINST3("qsub16 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
5407TESTINST3("qsub16 r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5408TESTINST3("qsub16 r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5409TESTINST3("qsub16 r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5410TESTINST3("qsub16 r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5411TESTINST3("qsub16 r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5412TESTINST3("qsub16 r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5413TESTINST3("qsub16 r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5414TESTINST3("qsub16 r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5415TESTINST3("qsub16 r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5416TESTINST3("qsub16 r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5417TESTINST3("qsub16 r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5418TESTINST3("qsub16 r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5419TESTINST3("qsub16 r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5420TESTINST3("qsub16 r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5421TESTINST3("qsub16 r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5422TESTINST3("qsub16 r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5423TESTINST3("qsub16 r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5424TESTINST3("qsub16 r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5425TESTINST3("qsub16 r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5426TESTINST3("qsub16 r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5427TESTINST3("qsub16 r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5428TESTINST3("qsub16 r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5429TESTINST3("qsub16 r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5430TESTINST3("qsub16 r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5431TESTINST3("qsub16 r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5432TESTINST3("qsub16 r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5433TESTINST3("qsub16 r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5434TESTINST3("qsub16 r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5435TESTINST3("qsub16 r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5436TESTINST3("qsub16 r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5437TESTINST3("qsub16 r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5438TESTINST3("qsub16 r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5439TESTINST3("qsub16 r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5440TESTINST3("qsub16 r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5441TESTINST3("qsub16 r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5442TESTINST3("qsub16 r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5443TESTINST3("qsub16 r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5444TESTINST3("qsub16 r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5445TESTINST3("qsub16 r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5446TESTINST3("qsub16 r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5447TESTINST3("qsub16 r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5448TESTINST3("qsub16 r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5449TESTINST3("qsub16 r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5450TESTINST3("qsub16 r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5451TESTINST3("qsub16 r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5452TESTINST3("qsub16 r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5453TESTINST3("qsub16 r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5454TESTINST3("qsub16 r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5455TESTINST3("qsub16 r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5456TESTINST3("qsub16 r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5457
5458  printf("----------------- QSAX ----------------- \n");
5459  TESTINST3("qsax r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
5460  TESTINST3("qsax r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
5461  TESTINST3("qsax r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
5462  TESTINST3("qsax r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
5463  TESTINST3("qsax r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
5464  TESTINST3("qsax r0, r1, r2", 0x00030003, 0x00640064, r0, r1, r2, 0);
5465TESTINST3("qsax r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5466TESTINST3("qsax r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5467TESTINST3("qsax r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5468TESTINST3("qsax r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5469TESTINST3("qsax r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5470TESTINST3("qsax r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5471TESTINST3("qsax r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5472TESTINST3("qsax r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5473TESTINST3("qsax r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5474TESTINST3("qsax r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5475TESTINST3("qsax r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5476TESTINST3("qsax r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5477TESTINST3("qsax r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5478TESTINST3("qsax r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5479TESTINST3("qsax r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5480TESTINST3("qsax r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5481TESTINST3("qsax r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5482TESTINST3("qsax r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5483TESTINST3("qsax r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5484TESTINST3("qsax r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5485TESTINST3("qsax r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5486TESTINST3("qsax r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5487TESTINST3("qsax r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5488TESTINST3("qsax r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5489TESTINST3("qsax r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5490TESTINST3("qsax r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5491TESTINST3("qsax r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5492TESTINST3("qsax r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5493TESTINST3("qsax r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5494TESTINST3("qsax r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5495TESTINST3("qsax r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5496TESTINST3("qsax r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5497TESTINST3("qsax r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5498TESTINST3("qsax r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5499TESTINST3("qsax r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5500TESTINST3("qsax r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5501TESTINST3("qsax r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5502TESTINST3("qsax r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5503TESTINST3("qsax r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5504TESTINST3("qsax r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5505TESTINST3("qsax r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5506TESTINST3("qsax r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5507TESTINST3("qsax r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5508TESTINST3("qsax r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5509TESTINST3("qsax r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5510TESTINST3("qsax r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5511TESTINST3("qsax r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5512TESTINST3("qsax r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5513TESTINST3("qsax r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5514TESTINST3("qsax r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5515
5516  printf("----------------- QASX ----------------- \n");
5517  TESTINST3("qasx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
5518  TESTINST3("qasx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
5519  TESTINST3("qasx r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
5520  TESTINST3("qasx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
5521  TESTINST3("qasx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
5522  TESTINST3("qasx r0, r1, r2", 0x00030003, 0x00640064, r0, r1, r2, 0);
5523TESTINST3("qasx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5524TESTINST3("qasx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5525TESTINST3("qasx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5526TESTINST3("qasx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5527TESTINST3("qasx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5528TESTINST3("qasx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5529TESTINST3("qasx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5530TESTINST3("qasx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5531TESTINST3("qasx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5532TESTINST3("qasx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5533TESTINST3("qasx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5534TESTINST3("qasx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5535TESTINST3("qasx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5536TESTINST3("qasx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5537TESTINST3("qasx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5538TESTINST3("qasx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5539TESTINST3("qasx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5540TESTINST3("qasx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5541TESTINST3("qasx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5542TESTINST3("qasx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5543TESTINST3("qasx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5544TESTINST3("qasx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5545TESTINST3("qasx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5546TESTINST3("qasx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5547TESTINST3("qasx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5548TESTINST3("qasx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5549TESTINST3("qasx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5550TESTINST3("qasx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5551TESTINST3("qasx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5552TESTINST3("qasx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5553TESTINST3("qasx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5554TESTINST3("qasx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5555TESTINST3("qasx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5556TESTINST3("qasx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5557TESTINST3("qasx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5558TESTINST3("qasx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5559TESTINST3("qasx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5560TESTINST3("qasx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5561TESTINST3("qasx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5562TESTINST3("qasx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5563TESTINST3("qasx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5564TESTINST3("qasx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5565TESTINST3("qasx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5566TESTINST3("qasx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5567TESTINST3("qasx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5568TESTINST3("qasx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5569TESTINST3("qasx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5570TESTINST3("qasx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5571TESTINST3("qasx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5572TESTINST3("qasx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5573
5574  printf("----------------- SMUAD ----------------- \n");
5575  TESTINST3("smuad r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
5576  TESTINST3("smuad r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
5577  TESTINST3("smuad r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
5578  TESTINST3("smuad r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
5579  TESTINST3("smuad r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
5580  TESTINST3("smuad r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
5581  TESTINST3("smuad r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
5582TESTINST3("smuad r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5583TESTINST3("smuad r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5584TESTINST3("smuad r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5585TESTINST3("smuad r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5586TESTINST3("smuad r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5587TESTINST3("smuad r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5588TESTINST3("smuad r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5589TESTINST3("smuad r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5590TESTINST3("smuad r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5591TESTINST3("smuad r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5592TESTINST3("smuad r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5593TESTINST3("smuad r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5594TESTINST3("smuad r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5595TESTINST3("smuad r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5596TESTINST3("smuad r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5597TESTINST3("smuad r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5598TESTINST3("smuad r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5599TESTINST3("smuad r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5600TESTINST3("smuad r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5601TESTINST3("smuad r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5602TESTINST3("smuad r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5603TESTINST3("smuad r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5604TESTINST3("smuad r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5605TESTINST3("smuad r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5606TESTINST3("smuad r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5607TESTINST3("smuad r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5608TESTINST3("smuad r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5609TESTINST3("smuad r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5610TESTINST3("smuad r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5611TESTINST3("smuad r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5612TESTINST3("smuad r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5613TESTINST3("smuad r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5614TESTINST3("smuad r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5615TESTINST3("smuad r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5616TESTINST3("smuad r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5617TESTINST3("smuad r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5618TESTINST3("smuad r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5619TESTINST3("smuad r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5620TESTINST3("smuad r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5621TESTINST3("smuad r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5622TESTINST3("smuad r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5623TESTINST3("smuad r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5624TESTINST3("smuad r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5625TESTINST3("smuad r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5626TESTINST3("smuad r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5627TESTINST3("smuad r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5628TESTINST3("smuad r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5629TESTINST3("smuad r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5630TESTINST3("smuad r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5631TESTINST3("smuad r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5632  printf("----------------- SMUADX ---------------- \n");
5633  TESTINST3("smuadx r0, r1, r2", 0x80008000, 0x80008000, r0, r1, r2, 0);
5634  TESTINST3("smuadx r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
5635  TESTINST3("smuadx r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
5636  TESTINST3("smuadx r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
5637  TESTINST3("smuadx r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
5638  TESTINST3("smuadx r0, r1, r2", 0xffffffff, 0xfffc0001, r0, r1, r2, 0);
5639  TESTINST3("smuadx r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
5640TESTINST3("smuadx r0, r1, r2", 0xd83b849b, 0xca5e5605, r0, r1, r2, 0);
5641TESTINST3("smuadx r0, r1, r2", 0x0cdafabe, 0x50865114, r0, r1, r2, 0);
5642TESTINST3("smuadx r0, r1, r2", 0x2738f0ff, 0x6a228b19, r0, r1, r2, 0);
5643TESTINST3("smuadx r0, r1, r2", 0xfaceab39, 0x2973c051, r0, r1, r2, 0);
5644TESTINST3("smuadx r0, r1, r2", 0xa3e6f759, 0x557c7ba2, r0, r1, r2, 0);
5645TESTINST3("smuadx r0, r1, r2", 0x72f33509, 0x9b41bfb1, r0, r1, r2, 0);
5646TESTINST3("smuadx r0, r1, r2", 0xa5ec1aa8, 0x2b62ba5a, r0, r1, r2, 0);
5647TESTINST3("smuadx r0, r1, r2", 0x6ebd04d9, 0x55ea3e4e, r0, r1, r2, 0);
5648TESTINST3("smuadx r0, r1, r2", 0x2eaea305, 0xe79fd570, r0, r1, r2, 0);
5649TESTINST3("smuadx r0, r1, r2", 0x22b65db1, 0xcdb7ed11, r0, r1, r2, 0);
5650TESTINST3("smuadx r0, r1, r2", 0x776c41c7, 0x2eb68500, r0, r1, r2, 0);
5651TESTINST3("smuadx r0, r1, r2", 0xe50dd77c, 0xd6f9a698, r0, r1, r2, 0);
5652TESTINST3("smuadx r0, r1, r2", 0x0be36f70, 0xeda5110c, r0, r1, r2, 0);
5653TESTINST3("smuadx r0, r1, r2", 0xebbff82b, 0xd759eb72, r0, r1, r2, 0);
5654TESTINST3("smuadx r0, r1, r2", 0x50c28082, 0xd9c4b1f4, r0, r1, r2, 0);
5655TESTINST3("smuadx r0, r1, r2", 0x17962e8f, 0xa29eb320, r0, r1, r2, 0);
5656TESTINST3("smuadx r0, r1, r2", 0xc57243b7, 0xcf1e4487, r0, r1, r2, 0);
5657TESTINST3("smuadx r0, r1, r2", 0x7eb226ac, 0xf20fb90f, r0, r1, r2, 0);
5658TESTINST3("smuadx r0, r1, r2", 0xbce0f026, 0xbb151055, r0, r1, r2, 0);
5659TESTINST3("smuadx r0, r1, r2", 0xa5757252, 0x957440d2, r0, r1, r2, 0);
5660TESTINST3("smuadx r0, r1, r2", 0xf4a477c1, 0x728b7771, r0, r1, r2, 0);
5661TESTINST3("smuadx r0, r1, r2", 0x76723a21, 0xf13c20f3, r0, r1, r2, 0);
5662TESTINST3("smuadx r0, r1, r2", 0x74d01105, 0x86398371, r0, r1, r2, 0);
5663TESTINST3("smuadx r0, r1, r2", 0xc1273e2c, 0x03d0fb78, r0, r1, r2, 0);
5664TESTINST3("smuadx r0, r1, r2", 0xdd9b7653, 0xd0d49b7c, r0, r1, r2, 0);
5665TESTINST3("smuadx r0, r1, r2", 0xdde62fd1, 0x76354a58, r0, r1, r2, 0);
5666TESTINST3("smuadx r0, r1, r2", 0xc3fb4a96, 0x9fa45fb7, r0, r1, r2, 0);
5667TESTINST3("smuadx r0, r1, r2", 0xa1a10f56, 0x7572bdec, r0, r1, r2, 0);
5668TESTINST3("smuadx r0, r1, r2", 0x4b7d4fd9, 0xfea59eb6, r0, r1, r2, 0);
5669TESTINST3("smuadx r0, r1, r2", 0x9d0ddffc, 0xf2669090, r0, r1, r2, 0);
5670TESTINST3("smuadx r0, r1, r2", 0x4f82d17c, 0xbc1ff573, r0, r1, r2, 0);
5671TESTINST3("smuadx r0, r1, r2", 0x08215ca2, 0x345f67e6, r0, r1, r2, 0);
5672TESTINST3("smuadx r0, r1, r2", 0xf23595d0, 0x3f39d77e, r0, r1, r2, 0);
5673TESTINST3("smuadx r0, r1, r2", 0xf244c158, 0xfb2db55b, r0, r1, r2, 0);
5674TESTINST3("smuadx r0, r1, r2", 0x256bfdd6, 0x13aebedf, r0, r1, r2, 0);
5675TESTINST3("smuadx r0, r1, r2", 0xc02a0c05, 0x5b013000, r0, r1, r2, 0);
5676TESTINST3("smuadx r0, r1, r2", 0xee2fa46e, 0xed95b542, r0, r1, r2, 0);
5677TESTINST3("smuadx r0, r1, r2", 0x97a7da20, 0x60bb5ee8, r0, r1, r2, 0);
5678TESTINST3("smuadx r0, r1, r2", 0xa231d5e6, 0xd9000a64, r0, r1, r2, 0);
5679TESTINST3("smuadx r0, r1, r2", 0x10e1968a, 0x624f9467, r0, r1, r2, 0);
5680TESTINST3("smuadx r0, r1, r2", 0x0e089270, 0xa8c64d94, r0, r1, r2, 0);
5681TESTINST3("smuadx r0, r1, r2", 0x9e8e0185, 0x6b4f637a, r0, r1, r2, 0);
5682TESTINST3("smuadx r0, r1, r2", 0x3096f12e, 0x11f5f4b9, r0, r1, r2, 0);
5683TESTINST3("smuadx r0, r1, r2", 0xffc134df, 0x0b02eb0c, r0, r1, r2, 0);
5684TESTINST3("smuadx r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
5685TESTINST3("smuadx r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
5686TESTINST3("smuadx r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
5687TESTINST3("smuadx r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
5688TESTINST3("smuadx r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
5689TESTINST3("smuadx r0, r1, r2", 0xf808434e, 0xefeab836, r0, r1, r2, 0);
5690
5691  printf("----------------- SMLAD ----------------- \n");
5692  TESTINST4("smlad  r0, r1, r2, r3",
5693                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
5694  TESTINST4("smlad  r0, r1, r2, r3",
5695                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
5696  TESTINST4("smlad  r0, r1, r2, r3",
5697                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
5698  TESTINST4("smlad  r0, r1, r2, r3",
5699                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
5700  TESTINST4("smlad  r0, r1, r2, r3",
5701                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
5702  TESTINST4("smlad  r0, r1, r2, r3",
5703                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
5704TESTINST4("smlad  r0, r1, r2, r3",
5705          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
5706TESTINST4("smlad  r0, r1, r2, r3",
5707          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
5708TESTINST4("smlad  r0, r1, r2, r3",
5709          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
5710TESTINST4("smlad  r0, r1, r2, r3",
5711          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
5712TESTINST4("smlad  r0, r1, r2, r3",
5713          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
5714TESTINST4("smlad  r0, r1, r2, r3",
5715          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
5716TESTINST4("smlad  r0, r1, r2, r3",
5717          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
5718TESTINST4("smlad  r0, r1, r2, r3",
5719          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
5720TESTINST4("smlad  r0, r1, r2, r3",
5721          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
5722TESTINST4("smlad  r0, r1, r2, r3",
5723          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
5724TESTINST4("smlad  r0, r1, r2, r3",
5725          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
5726TESTINST4("smlad  r0, r1, r2, r3",
5727          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
5728TESTINST4("smlad  r0, r1, r2, r3",
5729          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
5730TESTINST4("smlad  r0, r1, r2, r3",
5731          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
5732TESTINST4("smlad  r0, r1, r2, r3",
5733          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
5734TESTINST4("smlad  r0, r1, r2, r3",
5735          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
5736TESTINST4("smlad  r0, r1, r2, r3",
5737          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
5738TESTINST4("smlad  r0, r1, r2, r3",
5739          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
5740TESTINST4("smlad  r0, r1, r2, r3",
5741          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
5742TESTINST4("smlad  r0, r1, r2, r3",
5743          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
5744TESTINST4("smlad  r0, r1, r2, r3",
5745          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
5746TESTINST4("smlad  r0, r1, r2, r3",
5747          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
5748TESTINST4("smlad  r0, r1, r2, r3",
5749          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
5750TESTINST4("smlad  r0, r1, r2, r3",
5751          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
5752TESTINST4("smlad  r0, r1, r2, r3",
5753          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
5754TESTINST4("smlad  r0, r1, r2, r3",
5755          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
5756TESTINST4("smlad  r0, r1, r2, r3",
5757          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
5758TESTINST4("smlad  r0, r1, r2, r3",
5759          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
5760TESTINST4("smlad  r0, r1, r2, r3",
5761          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
5762TESTINST4("smlad  r0, r1, r2, r3",
5763          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
5764TESTINST4("smlad  r0, r1, r2, r3",
5765          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
5766TESTINST4("smlad  r0, r1, r2, r3",
5767          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
5768TESTINST4("smlad  r0, r1, r2, r3",
5769          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
5770TESTINST4("smlad  r0, r1, r2, r3",
5771          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
5772TESTINST4("smlad  r0, r1, r2, r3",
5773          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
5774TESTINST4("smlad  r0, r1, r2, r3",
5775          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
5776TESTINST4("smlad  r0, r1, r2, r3",
5777          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
5778TESTINST4("smlad  r0, r1, r2, r3",
5779          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
5780TESTINST4("smlad  r0, r1, r2, r3",
5781          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
5782TESTINST4("smlad  r0, r1, r2, r3",
5783          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
5784TESTINST4("smlad  r0, r1, r2, r3",
5785          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
5786TESTINST4("smlad  r0, r1, r2, r3",
5787          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
5788TESTINST4("smlad  r0, r1, r2, r3",
5789          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
5790TESTINST4("smlad  r0, r1, r2, r3",
5791          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
5792TESTINST4("smlad  r0, r1, r2, r3",
5793          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
5794TESTINST4("smlad  r0, r1, r2, r3",
5795          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
5796TESTINST4("smlad  r0, r1, r2, r3",
5797          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
5798TESTINST4("smlad  r0, r1, r2, r3",
5799          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
5800TESTINST4("smlad  r0, r1, r2, r3",
5801          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
5802TESTINST4("smlad  r0, r1, r2, r3",
5803          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
5804TESTINST4("smlad  r0, r1, r2, r3",
5805          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
5806
5807  printf("------------ SMLABB, SMLATT, SMLATB, SMLABT ------------\n");
5808  /* smlabb rD, rN, rM, rA */
5809  TESTINST4("smlabb r0, r1, r2, r3",
5810            0x00030000, 0x00040000, 0x00000000, r0,r1,r2,r3, 0);
5811  TESTINST4("smlabb r0, r1, r2, r3",
5812            0x00030001, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0);
5813  TESTINST4("smlabb r0, r1, r2, r3",
5814            0x00038001, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0);
5815  TESTINST4("smlabb r0, r1, r2, r3",
5816            0x00037fff, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0);
5817  TESTINST4("smlabb r0, r1, r2, r3",
5818            0x0003ffff, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0);
5819  TESTINST4("smlabb r0, r1, r2, r3",
5820            0x0003fffc, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0);
5821TESTINST4("smlabb  r0, r1, r2, r3",
5822          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
5823TESTINST4("smlabb  r0, r1, r2, r3",
5824          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
5825TESTINST4("smlabb  r0, r1, r2, r3",
5826          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
5827TESTINST4("smlabb  r0, r1, r2, r3",
5828          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
5829TESTINST4("smlabb  r0, r1, r2, r3",
5830          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
5831TESTINST4("smlabb  r0, r1, r2, r3",
5832          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
5833TESTINST4("smlabb  r0, r1, r2, r3",
5834          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
5835TESTINST4("smlabb  r0, r1, r2, r3",
5836          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
5837TESTINST4("smlabb  r0, r1, r2, r3",
5838          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
5839TESTINST4("smlabb  r0, r1, r2, r3",
5840          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
5841TESTINST4("smlabb  r0, r1, r2, r3",
5842          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
5843TESTINST4("smlabb  r0, r1, r2, r3",
5844          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
5845TESTINST4("smlabb  r0, r1, r2, r3",
5846          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
5847TESTINST4("smlabb  r0, r1, r2, r3",
5848          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
5849TESTINST4("smlabb  r0, r1, r2, r3",
5850          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
5851TESTINST4("smlabb  r0, r1, r2, r3",
5852          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
5853TESTINST4("smlabb  r0, r1, r2, r3",
5854          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
5855TESTINST4("smlabb  r0, r1, r2, r3",
5856          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
5857TESTINST4("smlabb  r0, r1, r2, r3",
5858          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
5859TESTINST4("smlabb  r0, r1, r2, r3",
5860          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
5861TESTINST4("smlabb  r0, r1, r2, r3",
5862          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
5863TESTINST4("smlabb  r0, r1, r2, r3",
5864          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
5865TESTINST4("smlabb  r0, r1, r2, r3",
5866          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
5867TESTINST4("smlabb  r0, r1, r2, r3",
5868          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
5869TESTINST4("smlabb  r0, r1, r2, r3",
5870          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
5871TESTINST4("smlabb  r0, r1, r2, r3",
5872          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
5873TESTINST4("smlabb  r0, r1, r2, r3",
5874          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
5875TESTINST4("smlabb  r0, r1, r2, r3",
5876          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
5877TESTINST4("smlabb  r0, r1, r2, r3",
5878          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
5879TESTINST4("smlabb  r0, r1, r2, r3",
5880          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
5881TESTINST4("smlabb  r0, r1, r2, r3",
5882          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
5883TESTINST4("smlabb  r0, r1, r2, r3",
5884          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
5885TESTINST4("smlabb  r0, r1, r2, r3",
5886          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
5887TESTINST4("smlabb  r0, r1, r2, r3",
5888          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
5889TESTINST4("smlabb  r0, r1, r2, r3",
5890          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
5891TESTINST4("smlabb  r0, r1, r2, r3",
5892          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
5893TESTINST4("smlabb  r0, r1, r2, r3",
5894          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
5895TESTINST4("smlabb  r0, r1, r2, r3",
5896          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
5897TESTINST4("smlabb  r0, r1, r2, r3",
5898          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
5899TESTINST4("smlabb  r0, r1, r2, r3",
5900          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
5901TESTINST4("smlabb  r0, r1, r2, r3",
5902          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
5903TESTINST4("smlabb  r0, r1, r2, r3",
5904          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
5905TESTINST4("smlabb  r0, r1, r2, r3",
5906          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
5907TESTINST4("smlabb  r0, r1, r2, r3",
5908          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
5909TESTINST4("smlabb  r0, r1, r2, r3",
5910          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
5911TESTINST4("smlabb  r0, r1, r2, r3",
5912          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
5913TESTINST4("smlabb  r0, r1, r2, r3",
5914          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
5915TESTINST4("smlabb  r0, r1, r2, r3",
5916          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
5917TESTINST4("smlabb  r0, r1, r2, r3",
5918          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
5919TESTINST4("smlabb  r0, r1, r2, r3",
5920          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
5921TESTINST4("smlabb  r0, r1, r2, r3",
5922          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
5923  /* smlatt rD, rN, rM, rA */
5924  TESTINST4("smlatt r0, r1, r2, r3",
5925            0x00000003, 0x00000004, 0x00000000, r0,r1,r2,r3, 0);
5926  TESTINST4("smlatt r0, r1, r2, r3",
5927            0x00010003, 0x00020004, 0x00007fff, r0,r1,r2,r3, 0);
5928  TESTINST4("smlatt r0, r1, r2, r3",
5929            0x80010003, 0x7fff0004, 0x00005fff, r0,r1,r2,r3, 0);
5930  TESTINST4("smlatt r0, r1, r2, r3",
5931            0x7fff0003, 0x7fff0004, 0x00007fff, r0,r1,r2,r3, 0);
5932  TESTINST4("smlatt r0, r1, r2, r3",
5933            0xffff0003, 0xffff0004, 0x7fff7fff, r0,r1,r2,r3, 0);
5934  TESTINST4("smlatt r0, r1, r2, r3",
5935            0xfffc0003, 0xffff0004, 0xffffffff, r0,r1,r2,r3, 0);
5936TESTINST4("smlatt  r0, r1, r2, r3",
5937          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
5938TESTINST4("smlatt  r0, r1, r2, r3",
5939          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
5940TESTINST4("smlatt  r0, r1, r2, r3",
5941          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
5942TESTINST4("smlatt  r0, r1, r2, r3",
5943          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
5944TESTINST4("smlatt  r0, r1, r2, r3",
5945          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
5946TESTINST4("smlatt  r0, r1, r2, r3",
5947          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
5948TESTINST4("smlatt  r0, r1, r2, r3",
5949          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
5950TESTINST4("smlatt  r0, r1, r2, r3",
5951          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
5952TESTINST4("smlatt  r0, r1, r2, r3",
5953          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
5954TESTINST4("smlatt  r0, r1, r2, r3",
5955          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
5956TESTINST4("smlatt  r0, r1, r2, r3",
5957          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
5958TESTINST4("smlatt  r0, r1, r2, r3",
5959          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
5960TESTINST4("smlatt  r0, r1, r2, r3",
5961          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
5962TESTINST4("smlatt  r0, r1, r2, r3",
5963          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
5964TESTINST4("smlatt  r0, r1, r2, r3",
5965          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
5966TESTINST4("smlatt  r0, r1, r2, r3",
5967          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
5968TESTINST4("smlatt  r0, r1, r2, r3",
5969          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
5970TESTINST4("smlatt  r0, r1, r2, r3",
5971          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
5972TESTINST4("smlatt  r0, r1, r2, r3",
5973          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
5974TESTINST4("smlatt  r0, r1, r2, r3",
5975          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
5976TESTINST4("smlatt  r0, r1, r2, r3",
5977          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
5978TESTINST4("smlatt  r0, r1, r2, r3",
5979          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
5980TESTINST4("smlatt  r0, r1, r2, r3",
5981          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
5982TESTINST4("smlatt  r0, r1, r2, r3",
5983          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
5984TESTINST4("smlatt  r0, r1, r2, r3",
5985          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
5986TESTINST4("smlatt  r0, r1, r2, r3",
5987          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
5988TESTINST4("smlatt  r0, r1, r2, r3",
5989          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
5990TESTINST4("smlatt  r0, r1, r2, r3",
5991          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
5992TESTINST4("smlatt  r0, r1, r2, r3",
5993          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
5994TESTINST4("smlatt  r0, r1, r2, r3",
5995          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
5996TESTINST4("smlatt  r0, r1, r2, r3",
5997          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
5998TESTINST4("smlatt  r0, r1, r2, r3",
5999          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
6000TESTINST4("smlatt  r0, r1, r2, r3",
6001          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
6002TESTINST4("smlatt  r0, r1, r2, r3",
6003          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
6004TESTINST4("smlatt  r0, r1, r2, r3",
6005          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
6006TESTINST4("smlatt  r0, r1, r2, r3",
6007          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
6008TESTINST4("smlatt  r0, r1, r2, r3",
6009          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
6010TESTINST4("smlatt  r0, r1, r2, r3",
6011          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
6012TESTINST4("smlatt  r0, r1, r2, r3",
6013          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
6014TESTINST4("smlatt  r0, r1, r2, r3",
6015          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
6016TESTINST4("smlatt  r0, r1, r2, r3",
6017          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
6018TESTINST4("smlatt  r0, r1, r2, r3",
6019          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
6020TESTINST4("smlatt  r0, r1, r2, r3",
6021          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
6022TESTINST4("smlatt  r0, r1, r2, r3",
6023          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
6024TESTINST4("smlatt  r0, r1, r2, r3",
6025          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
6026TESTINST4("smlatt  r0, r1, r2, r3",
6027          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
6028TESTINST4("smlatt  r0, r1, r2, r3",
6029          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
6030TESTINST4("smlatt  r0, r1, r2, r3",
6031          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
6032TESTINST4("smlatt  r0, r1, r2, r3",
6033          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
6034TESTINST4("smlatt  r0, r1, r2, r3",
6035          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
6036TESTINST4("smlatt  r0, r1, r2, r3",
6037          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
6038  /* smlatb rD, rN, rM, rA */
6039  TESTINST4("smlatb r0, r1, r2, r3",
6040            0x00000003, 0x00040000, 0x00000000, r0,r1,r2,r3, 0);
6041  TESTINST4("smlatb r0, r1, r2, r3",
6042            0x00010003, 0x00040002, 0x00007fff, r0,r1,r2,r3, 0);
6043  TESTINST4("smlatb r0, r1, r2, r3",
6044            0x80010003, 0x00047fff, 0x00005fff, r0,r1,r2,r3, 0);
6045  TESTINST4("smlatb r0, r1, r2, r3",
6046            0x7fff0003, 0x00047fff, 0x00007fff, r0,r1,r2,r3, 0);
6047  TESTINST4("smlatb r0, r1, r2, r3",
6048            0xffff0003, 0x0004ffff, 0x7fff7fff, r0,r1,r2,r3, 0);
6049  TESTINST4("smlatb r0, r1, r2, r3",
6050            0xfffc0003, 0x0004ffff, 0xffffffff, r0,r1,r2,r3, 0);
6051TESTINST4("smlatb  r0, r1, r2, r3",
6052          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
6053TESTINST4("smlatb  r0, r1, r2, r3",
6054          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
6055TESTINST4("smlatb  r0, r1, r2, r3",
6056          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
6057TESTINST4("smlatb  r0, r1, r2, r3",
6058          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
6059TESTINST4("smlatb  r0, r1, r2, r3",
6060          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
6061TESTINST4("smlatb  r0, r1, r2, r3",
6062          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
6063TESTINST4("smlatb  r0, r1, r2, r3",
6064          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
6065TESTINST4("smlatb  r0, r1, r2, r3",
6066          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
6067TESTINST4("smlatb  r0, r1, r2, r3",
6068          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
6069TESTINST4("smlatb  r0, r1, r2, r3",
6070          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
6071TESTINST4("smlatb  r0, r1, r2, r3",
6072          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
6073TESTINST4("smlatb  r0, r1, r2, r3",
6074          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
6075TESTINST4("smlatb  r0, r1, r2, r3",
6076          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
6077TESTINST4("smlatb  r0, r1, r2, r3",
6078          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
6079TESTINST4("smlatb  r0, r1, r2, r3",
6080          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
6081TESTINST4("smlatb  r0, r1, r2, r3",
6082          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
6083TESTINST4("smlatb  r0, r1, r2, r3",
6084          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
6085TESTINST4("smlatb  r0, r1, r2, r3",
6086          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
6087TESTINST4("smlatb  r0, r1, r2, r3",
6088          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
6089TESTINST4("smlatb  r0, r1, r2, r3",
6090          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
6091TESTINST4("smlatb  r0, r1, r2, r3",
6092          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
6093TESTINST4("smlatb  r0, r1, r2, r3",
6094          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
6095TESTINST4("smlatb  r0, r1, r2, r3",
6096          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
6097TESTINST4("smlatb  r0, r1, r2, r3",
6098          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
6099TESTINST4("smlatb  r0, r1, r2, r3",
6100          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
6101TESTINST4("smlatb  r0, r1, r2, r3",
6102          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
6103TESTINST4("smlatb  r0, r1, r2, r3",
6104          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
6105TESTINST4("smlatb  r0, r1, r2, r3",
6106          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
6107TESTINST4("smlatb  r0, r1, r2, r3",
6108          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
6109TESTINST4("smlatb  r0, r1, r2, r3",
6110          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
6111TESTINST4("smlatb  r0, r1, r2, r3",
6112          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
6113TESTINST4("smlatb  r0, r1, r2, r3",
6114          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
6115TESTINST4("smlatb  r0, r1, r2, r3",
6116          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
6117TESTINST4("smlatb  r0, r1, r2, r3",
6118          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
6119TESTINST4("smlatb  r0, r1, r2, r3",
6120          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
6121TESTINST4("smlatb  r0, r1, r2, r3",
6122          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
6123TESTINST4("smlatb  r0, r1, r2, r3",
6124          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
6125TESTINST4("smlatb  r0, r1, r2, r3",
6126          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
6127TESTINST4("smlatb  r0, r1, r2, r3",
6128          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
6129TESTINST4("smlatb  r0, r1, r2, r3",
6130          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
6131TESTINST4("smlatb  r0, r1, r2, r3",
6132          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
6133TESTINST4("smlatb  r0, r1, r2, r3",
6134          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
6135TESTINST4("smlatb  r0, r1, r2, r3",
6136          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
6137TESTINST4("smlatb  r0, r1, r2, r3",
6138          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
6139TESTINST4("smlatb  r0, r1, r2, r3",
6140          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
6141TESTINST4("smlatb  r0, r1, r2, r3",
6142          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
6143TESTINST4("smlatb  r0, r1, r2, r3",
6144          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
6145TESTINST4("smlatb  r0, r1, r2, r3",
6146          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
6147TESTINST4("smlatb  r0, r1, r2, r3",
6148          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
6149TESTINST4("smlatb  r0, r1, r2, r3",
6150          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
6151TESTINST4("smlatb  r0, r1, r2, r3",
6152          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
6153  /* smlabt rD, rN, rM, rA */
6154  TESTINST4("smlabt r0, r1, r2, r3",
6155            0x00030000, 0x00000004, 0x00000000, r0,r1,r2,r3, 0);
6156  TESTINST4("smlabt r0, r1, r2, r3",
6157            0x00030001, 0x00020004, 0x00007fff, r0,r1,r2,r3, 0);
6158  TESTINST4("smlabt r0, r1, r2, r3",
6159            0x00038001, 0x7fff0004, 0x00005fff, r0,r1,r2,r3, 0);
6160  TESTINST4("smlabt r0, r1, r2, r3",
6161            0x00037fff, 0x7fff0004, 0x00007fff, r0,r1,r2,r3, 0);
6162  TESTINST4("smlabt r0, r1, r2, r3",
6163            0x0003ffff, 0xffff0004, 0x7fff7fff, r0,r1,r2,r3, 0);
6164  TESTINST4("smlabt r0, r1, r2, r3",
6165            0x0003fffc, 0xffff0004, 0xffffffff, r0,r1,r2,r3, 0);
6166TESTINST4("smlabt  r0, r1, r2, r3",
6167          0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
6168TESTINST4("smlabt  r0, r1, r2, r3",
6169          0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
6170TESTINST4("smlabt  r0, r1, r2, r3",
6171          0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
6172TESTINST4("smlabt  r0, r1, r2, r3",
6173          0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
6174TESTINST4("smlabt  r0, r1, r2, r3",
6175          0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
6176TESTINST4("smlabt  r0, r1, r2, r3",
6177          0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
6178TESTINST4("smlabt  r0, r1, r2, r3",
6179          0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
6180TESTINST4("smlabt  r0, r1, r2, r3",
6181          0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
6182TESTINST4("smlabt  r0, r1, r2, r3",
6183          0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
6184TESTINST4("smlabt  r0, r1, r2, r3",
6185          0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
6186TESTINST4("smlabt  r0, r1, r2, r3",
6187          0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
6188TESTINST4("smlabt  r0, r1, r2, r3",
6189          0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
6190TESTINST4("smlabt  r0, r1, r2, r3",
6191          0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
6192TESTINST4("smlabt  r0, r1, r2, r3",
6193          0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
6194TESTINST4("smlabt  r0, r1, r2, r3",
6195          0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
6196TESTINST4("smlabt  r0, r1, r2, r3",
6197          0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
6198TESTINST4("smlabt  r0, r1, r2, r3",
6199          0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
6200TESTINST4("smlabt  r0, r1, r2, r3",
6201          0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
6202TESTINST4("smlabt  r0, r1, r2, r3",
6203          0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
6204TESTINST4("smlabt  r0, r1, r2, r3",
6205          0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
6206TESTINST4("smlabt  r0, r1, r2, r3",
6207          0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
6208TESTINST4("smlabt  r0, r1, r2, r3",
6209          0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
6210TESTINST4("smlabt  r0, r1, r2, r3",
6211          0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
6212TESTINST4("smlabt  r0, r1, r2, r3",
6213          0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
6214TESTINST4("smlabt  r0, r1, r2, r3",
6215          0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
6216TESTINST4("smlabt  r0, r1, r2, r3",
6217          0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
6218TESTINST4("smlabt  r0, r1, r2, r3",
6219          0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
6220TESTINST4("smlabt  r0, r1, r2, r3",
6221          0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
6222TESTINST4("smlabt  r0, r1, r2, r3",
6223          0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
6224TESTINST4("smlabt  r0, r1, r2, r3",
6225          0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
6226TESTINST4("smlabt  r0, r1, r2, r3",
6227          0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
6228TESTINST4("smlabt  r0, r1, r2, r3",
6229          0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
6230TESTINST4("smlabt  r0, r1, r2, r3",
6231          0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
6232TESTINST4("smlabt  r0, r1, r2, r3",
6233          0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
6234TESTINST4("smlabt  r0, r1, r2, r3",
6235          0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
6236TESTINST4("smlabt  r0, r1, r2, r3",
6237          0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
6238TESTINST4("smlabt  r0, r1, r2, r3",
6239          0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
6240TESTINST4("smlabt  r0, r1, r2, r3",
6241          0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
6242TESTINST4("smlabt  r0, r1, r2, r3",
6243          0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
6244TESTINST4("smlabt  r0, r1, r2, r3",
6245          0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
6246TESTINST4("smlabt  r0, r1, r2, r3",
6247          0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
6248TESTINST4("smlabt  r0, r1, r2, r3",
6249          0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
6250TESTINST4("smlabt  r0, r1, r2, r3",
6251          0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
6252TESTINST4("smlabt  r0, r1, r2, r3",
6253          0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
6254TESTINST4("smlabt  r0, r1, r2, r3",
6255          0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
6256TESTINST4("smlabt  r0, r1, r2, r3",
6257          0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
6258TESTINST4("smlabt  r0, r1, r2, r3",
6259          0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
6260TESTINST4("smlabt  r0, r1, r2, r3",
6261          0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
6262TESTINST4("smlabt  r0, r1, r2, r3",
6263          0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
6264TESTINST4("smlabt  r0, r1, r2, r3",
6265          0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
6266TESTINST4("smlabt  r0, r1, r2, r3",
6267          0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
6268
6269  printf("------------ UQSUB8 -----------------------------------\n");
6270  TESTINST3("uqsub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
6271  TESTINST3("uqsub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
6272  TESTINST3("uqsub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
6273  TESTINST3("uqsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
6274  TESTINST3("uqsub8 r0, r1, r2", 0x00000318, 0xff00ff09, r0, r1, r2, 0);
6275  TESTINST3("uqsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
6276  TESTINST3("uqsub8 r0, r1, r2", 0x00020318, 0xff07ff09, r0, r1, r2, 0);
6277  TESTINST3("uqsub8 r0, r1, r2", 0xff07ff09, 0x00020318, r0, r1, r2, 0);
6278TESTINST3("uqsub8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
6279TESTINST3("uqsub8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
6280TESTINST3("uqsub8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
6281TESTINST3("uqsub8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
6282TESTINST3("uqsub8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
6283TESTINST3("uqsub8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
6284TESTINST3("uqsub8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
6285TESTINST3("uqsub8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
6286TESTINST3("uqsub8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
6287TESTINST3("uqsub8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
6288TESTINST3("uqsub8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
6289TESTINST3("uqsub8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
6290TESTINST3("uqsub8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
6291TESTINST3("uqsub8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
6292TESTINST3("uqsub8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
6293TESTINST3("uqsub8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
6294TESTINST3("uqsub8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
6295TESTINST3("uqsub8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
6296TESTINST3("uqsub8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
6297TESTINST3("uqsub8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
6298TESTINST3("uqsub8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
6299TESTINST3("uqsub8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
6300TESTINST3("uqsub8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
6301TESTINST3("uqsub8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
6302TESTINST3("uqsub8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
6303TESTINST3("uqsub8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
6304TESTINST3("uqsub8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
6305TESTINST3("uqsub8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
6306TESTINST3("uqsub8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
6307TESTINST3("uqsub8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
6308TESTINST3("uqsub8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
6309TESTINST3("uqsub8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
6310TESTINST3("uqsub8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
6311TESTINST3("uqsub8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
6312TESTINST3("uqsub8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
6313TESTINST3("uqsub8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
6314TESTINST3("uqsub8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
6315TESTINST3("uqsub8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
6316TESTINST3("uqsub8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
6317TESTINST3("uqsub8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
6318TESTINST3("uqsub8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
6319TESTINST3("uqsub8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6320TESTINST3("uqsub8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6321TESTINST3("uqsub8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6322TESTINST3("uqsub8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6323TESTINST3("uqsub8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6324TESTINST3("uqsub8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6325TESTINST3("uqsub8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6326TESTINST3("uqsub8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6327TESTINST3("uqsub8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6328TESTINST3("uqsub8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6329
6330  printf("------------ UQADD8 -----------------------------------\n");
6331  TESTINST3("uqadd8 r0, r1, r2", 0x0009ffff, 0x001800aa, r0, r1, r2, 0);
6332  TESTINST3("uqadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
6333  TESTINST3("uqadd8 r0, r1, r2", 0x00aa0018, 0xffff0009, r0, r1, r2, 0);
6334  TESTINST3("uqadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
6335  TESTINST3("uqadd8 r0, r1, r2", 0x0000aa18, 0xff00ff09, r0, r1, r2, 0);
6336  TESTINST3("uqadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
6337  TESTINST3("uqadd8 r0, r1, r2", 0xff9fefcc, 0xff9ffedd, r0, r1, r2, 0);
6338  TESTINST3("uqadd8 r0, r1, r2", 0xff07ff09, 0xaa020318, r0, r1, r2, 0);
6339TESTINST3("uqadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
6340TESTINST3("uqadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
6341TESTINST3("uqadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
6342TESTINST3("uqadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
6343TESTINST3("uqadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
6344TESTINST3("uqadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
6345TESTINST3("uqadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
6346TESTINST3("uqadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
6347TESTINST3("uqadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
6348TESTINST3("uqadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
6349TESTINST3("uqadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
6350TESTINST3("uqadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
6351TESTINST3("uqadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
6352TESTINST3("uqadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
6353TESTINST3("uqadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
6354TESTINST3("uqadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
6355TESTINST3("uqadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
6356TESTINST3("uqadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
6357TESTINST3("uqadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
6358TESTINST3("uqadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
6359TESTINST3("uqadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
6360TESTINST3("uqadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
6361TESTINST3("uqadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
6362TESTINST3("uqadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
6363TESTINST3("uqadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
6364TESTINST3("uqadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
6365TESTINST3("uqadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
6366TESTINST3("uqadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
6367TESTINST3("uqadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
6368TESTINST3("uqadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
6369TESTINST3("uqadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
6370TESTINST3("uqadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
6371TESTINST3("uqadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
6372TESTINST3("uqadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
6373TESTINST3("uqadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
6374TESTINST3("uqadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
6375TESTINST3("uqadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
6376TESTINST3("uqadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
6377TESTINST3("uqadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
6378TESTINST3("uqadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
6379TESTINST3("uqadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
6380TESTINST3("uqadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6381TESTINST3("uqadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6382TESTINST3("uqadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6383TESTINST3("uqadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6384TESTINST3("uqadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6385TESTINST3("uqadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6386TESTINST3("uqadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6387TESTINST3("uqadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6388TESTINST3("uqadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6389TESTINST3("uqadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6390
6391  printf("------------ SEL --------------------------------------\n");
6392  TESTINST3("sel r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
6393  TESTINST3("sel r0, r1, r2", 0x7fff7fff, 0x00010001, r0, r1, r2, 0);
6394  TESTINST3("sel r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
6395  TESTINST3("sel r0, r1, r2", 0x00640064, 0x00030003, r0, r1, r2, 0);
6396  TESTINST3("sel r0, r1, r2", 0xfffcffff, 0xffff0001, r0, r1, r2, 0);
6397  TESTINST3("sel r0, r1, r2", 0xfff70fff, 0x00030003, r0, r1, r2, 0);
6398TESTINST3("sel r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
6399TESTINST3("sel r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
6400TESTINST3("sel r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
6401TESTINST3("sel r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
6402TESTINST3("sel r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
6403TESTINST3("sel r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
6404TESTINST3("sel r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
6405TESTINST3("sel r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
6406TESTINST3("sel r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
6407TESTINST3("sel r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
6408TESTINST3("sel r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
6409TESTINST3("sel r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
6410TESTINST3("sel r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
6411TESTINST3("sel r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
6412TESTINST3("sel r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
6413TESTINST3("sel r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
6414TESTINST3("sel r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
6415TESTINST3("sel r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
6416TESTINST3("sel r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
6417TESTINST3("sel r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
6418TESTINST3("sel r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
6419TESTINST3("sel r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
6420TESTINST3("sel r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
6421TESTINST3("sel r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
6422TESTINST3("sel r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
6423TESTINST3("sel r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
6424TESTINST3("sel r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
6425TESTINST3("sel r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
6426TESTINST3("sel r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
6427TESTINST3("sel r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
6428TESTINST3("sel r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
6429TESTINST3("sel r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
6430TESTINST3("sel r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
6431TESTINST3("sel r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
6432TESTINST3("sel r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
6433TESTINST3("sel r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
6434TESTINST3("sel r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
6435TESTINST3("sel r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
6436TESTINST3("sel r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
6437TESTINST3("sel r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
6438TESTINST3("sel r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
6439TESTINST3("sel r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6440TESTINST3("sel r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6441TESTINST3("sel r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6442TESTINST3("sel r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6443TESTINST3("sel r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6444TESTINST3("sel r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6445TESTINST3("sel r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6446TESTINST3("sel r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6447TESTINST3("sel r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6448TESTINST3("sel r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6449
6450  printf("------------ QSUB8-------------------------------------\n");
6451  TESTINST3("qsub8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
6452  TESTINST3("qsub8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
6453  TESTINST3("qsub8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
6454  TESTINST3("qsub8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
6455  TESTINST3("qsub8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
6456  TESTINST3("qsub8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0);
6457  TESTINST3("qsub8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
6458  TESTINST3("qsub8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
6459TESTINST3("qsub8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
6460TESTINST3("qsub8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
6461TESTINST3("qsub8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
6462TESTINST3("qsub8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
6463TESTINST3("qsub8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
6464TESTINST3("qsub8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
6465TESTINST3("qsub8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
6466TESTINST3("qsub8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
6467TESTINST3("qsub8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
6468TESTINST3("qsub8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
6469TESTINST3("qsub8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
6470TESTINST3("qsub8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
6471TESTINST3("qsub8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
6472TESTINST3("qsub8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
6473TESTINST3("qsub8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
6474TESTINST3("qsub8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
6475TESTINST3("qsub8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
6476TESTINST3("qsub8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
6477TESTINST3("qsub8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
6478TESTINST3("qsub8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
6479TESTINST3("qsub8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
6480TESTINST3("qsub8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
6481TESTINST3("qsub8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
6482TESTINST3("qsub8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
6483TESTINST3("qsub8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
6484TESTINST3("qsub8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
6485TESTINST3("qsub8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
6486TESTINST3("qsub8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
6487TESTINST3("qsub8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
6488TESTINST3("qsub8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
6489TESTINST3("qsub8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
6490TESTINST3("qsub8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
6491TESTINST3("qsub8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
6492TESTINST3("qsub8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
6493TESTINST3("qsub8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
6494TESTINST3("qsub8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
6495TESTINST3("qsub8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
6496TESTINST3("qsub8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
6497TESTINST3("qsub8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
6498TESTINST3("qsub8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
6499TESTINST3("qsub8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
6500TESTINST3("qsub8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6501TESTINST3("qsub8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6502TESTINST3("qsub8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6503TESTINST3("qsub8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6504TESTINST3("qsub8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6505TESTINST3("qsub8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6506TESTINST3("qsub8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6507TESTINST3("qsub8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6508TESTINST3("qsub8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6509TESTINST3("qsub8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6510
6511  printf("------------ QADD8-------------------------------------\n");
6512  TESTINST3("qadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
6513  TESTINST3("qadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
6514  TESTINST3("qadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
6515  TESTINST3("qadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
6516  TESTINST3("qadd8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
6517  TESTINST3("qadd8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0);
6518  TESTINST3("qadd8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
6519  TESTINST3("qadd8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
6520TESTINST3("qadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
6521TESTINST3("qadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
6522TESTINST3("qadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
6523TESTINST3("qadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
6524TESTINST3("qadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
6525TESTINST3("qadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
6526TESTINST3("qadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
6527TESTINST3("qadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
6528TESTINST3("qadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
6529TESTINST3("qadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
6530TESTINST3("qadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
6531TESTINST3("qadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
6532TESTINST3("qadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
6533TESTINST3("qadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
6534TESTINST3("qadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
6535TESTINST3("qadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
6536TESTINST3("qadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
6537TESTINST3("qadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
6538TESTINST3("qadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
6539TESTINST3("qadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
6540TESTINST3("qadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
6541TESTINST3("qadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
6542TESTINST3("qadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
6543TESTINST3("qadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
6544TESTINST3("qadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
6545TESTINST3("qadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
6546TESTINST3("qadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
6547TESTINST3("qadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
6548TESTINST3("qadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
6549TESTINST3("qadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
6550TESTINST3("qadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
6551TESTINST3("qadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
6552TESTINST3("qadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
6553TESTINST3("qadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
6554TESTINST3("qadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
6555TESTINST3("qadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
6556TESTINST3("qadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
6557TESTINST3("qadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
6558TESTINST3("qadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
6559TESTINST3("qadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
6560TESTINST3("qadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
6561TESTINST3("qadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6562TESTINST3("qadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6563TESTINST3("qadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6564TESTINST3("qadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6565TESTINST3("qadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6566TESTINST3("qadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6567TESTINST3("qadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6568TESTINST3("qadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6569TESTINST3("qadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6570TESTINST3("qadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6571
6572  printf("------------ SHADD8 -----------------------------------\n");
6573  TESTINST3("shadd8 r0, r1, r2", 0x0009ffff, 0x00180003, r0, r1, r2, 0);
6574  TESTINST3("shadd8 r0, r1, r2", 0x00180003, 0x0009ffff, r0, r1, r2, 0);
6575  TESTINST3("shadd8 r0, r1, r2", 0x00030018, 0xffff0009, r0, r1, r2, 0);
6576  TESTINST3("shadd8 r0, r1, r2", 0xffff0009, 0x00030018, r0, r1, r2, 0);
6577  TESTINST3("shadd8 r0, r1, r2", 0x7fff7fff, 0x00000000, r0, r1, r2, 0);
6578  TESTINST3("shadd8 r0, r1, r2", 0x7fff00ff, 0x80017f01, r0, r1, r2, 0);
6579  TESTINST3("shadd8 r0, r1, r2", 0x80008000, 0x00000000, r0, r1, r2, 0);
6580  TESTINST3("shadd8 r0, r1, r2", 0x80008000, 0xffffffff, r0, r1, r2, 0);
6581TESTINST3("shadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
6582TESTINST3("shadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
6583TESTINST3("shadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
6584TESTINST3("shadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
6585TESTINST3("shadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
6586TESTINST3("shadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
6587TESTINST3("shadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
6588TESTINST3("shadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
6589TESTINST3("shadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
6590TESTINST3("shadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
6591TESTINST3("shadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
6592TESTINST3("shadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
6593TESTINST3("shadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
6594TESTINST3("shadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
6595TESTINST3("shadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
6596TESTINST3("shadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
6597TESTINST3("shadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
6598TESTINST3("shadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
6599TESTINST3("shadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
6600TESTINST3("shadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
6601TESTINST3("shadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
6602TESTINST3("shadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
6603TESTINST3("shadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
6604TESTINST3("shadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
6605TESTINST3("shadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
6606TESTINST3("shadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
6607TESTINST3("shadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
6608TESTINST3("shadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
6609TESTINST3("shadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
6610TESTINST3("shadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
6611TESTINST3("shadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
6612TESTINST3("shadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
6613TESTINST3("shadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
6614TESTINST3("shadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
6615TESTINST3("shadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
6616TESTINST3("shadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
6617TESTINST3("shadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
6618TESTINST3("shadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
6619TESTINST3("shadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
6620TESTINST3("shadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
6621TESTINST3("shadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
6622TESTINST3("shadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6623TESTINST3("shadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6624TESTINST3("shadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6625TESTINST3("shadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6626TESTINST3("shadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6627TESTINST3("shadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6628TESTINST3("shadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6629TESTINST3("shadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6630TESTINST3("shadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6631TESTINST3("shadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6632
6633  printf("----------------- SSAT ----------------- \n");
6634  TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x80008000, r0, r1, 0);
6635  TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x80008000, r0, r1, 0);
6636  TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x80008000, r0, r1, 0);
6637  TESTINST2("ssat  r0, #12, r1, ASR #16", 0x80008000, r0, r1, 0);
6638  TESTINST2("ssat  r0, #16, r1, LSL #12", 0xffff0009, r0, r1, 0);
6639  TESTINST2("ssat  r0, #18, r1, LSL #8",  0xffff0009, r0, r1, 0);
6640  TESTINST2("ssat  r0, #24, r1, ASR #6",  0xffff0009, r0, r1, 0);
6641  TESTINST2("ssat  r0, #31, r1, ASR #1",  0xffff0009, r0, r1, 0);
6642TESTINST2("ssat  r0, #1,   r1", 0x256bfdd6, r0, r1, 0);
6643TESTINST2("ssat  r0, #1,   r1", 0xc02a0c05, r0, r1, 0);
6644TESTINST2("ssat  r0, #1,   r1", 0xee2fa46e, r0, r1, 0);
6645TESTINST2("ssat  r0, #1,   r1", 0x97a7da20, r0, r1, 0);
6646TESTINST2("ssat  r0, #32,  r1", 0xa231d5e6, r0, r1, 0);
6647TESTINST2("ssat  r0, #32,  r1", 0x10e1968a, r0, r1, 0);
6648TESTINST2("ssat  r0, #32,  r1", 0x0e089270, r0, r1, 0);
6649TESTINST2("ssat  r0, #32,  r1", 0x9e8e0185, r0, r1, 0);
6650TESTINST2("ssat  r0, #32,  r1", 0x3096f12e, r0, r1, 0);
6651TESTINST2("ssat  r0, #32,  r1", 0xffc134df, r0, r1, 0);
6652TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x256bfdd6, r0, r1, 0);
6653TESTINST2("ssat  r0, #1,  r1, LSL #31", 0xc02a0c05, r0, r1, 0);
6654TESTINST2("ssat  r0, #1,  r1, LSL #31", 0xee2fa46e, r0, r1, 0);
6655TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x97a7da20, r0, r1, 0);
6656TESTINST2("ssat  r0, #1,  r1, LSL #31", 0xa231d5e6, r0, r1, 0);
6657TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x10e1968a, r0, r1, 0);
6658TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x0e089270, r0, r1, 0);
6659TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x9e8e0185, r0, r1, 0);
6660TESTINST2("ssat  r0, #1,  r1, LSL #31", 0x3096f12e, r0, r1, 0);
6661TESTINST2("ssat  r0, #1,  r1, LSL #31", 0xffc134df, r0, r1, 0);
6662TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x256bfdd6, r0, r1, 0);
6663TESTINST2("ssat  r0, #3,  r1, LSL #28", 0xc02a0c05, r0, r1, 0);
6664TESTINST2("ssat  r0, #3,  r1, LSL #28", 0xee2fa46e, r0, r1, 0);
6665TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x97a7da20, r0, r1, 0);
6666TESTINST2("ssat  r0, #3,  r1, LSL #28", 0xa231d5e6, r0, r1, 0);
6667TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x10e1968a, r0, r1, 0);
6668TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x0e089270, r0, r1, 0);
6669TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x9e8e0185, r0, r1, 0);
6670TESTINST2("ssat  r0, #3,  r1, LSL #28", 0x3096f12e, r0, r1, 0);
6671TESTINST2("ssat  r0, #3,  r1, LSL #28", 0xffc134df, r0, r1, 0);
6672TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x256bfdd6, r0, r1, 0);
6673TESTINST2("ssat  r0, #6,  r1, LSL #24", 0xc02a0c05, r0, r1, 0);
6674TESTINST2("ssat  r0, #6,  r1, LSL #24", 0xee2fa46e, r0, r1, 0);
6675TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x97a7da20, r0, r1, 0);
6676TESTINST2("ssat  r0, #6,  r1, LSL #24", 0xa231d5e6, r0, r1, 0);
6677TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x10e1968a, r0, r1, 0);
6678TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x0e089270, r0, r1, 0);
6679TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x9e8e0185, r0, r1, 0);
6680TESTINST2("ssat  r0, #6,  r1, LSL #24", 0x3096f12e, r0, r1, 0);
6681TESTINST2("ssat  r0, #6,  r1, LSL #24", 0xffc134df, r0, r1, 0);
6682TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x256bfdd6, r0, r1, 0);
6683TESTINST2("ssat  r0, #8,  r1, ASR #18", 0xc02a0c05, r0, r1, 0);
6684TESTINST2("ssat  r0, #8,  r1, ASR #18", 0xee2fa46e, r0, r1, 0);
6685TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x97a7da20, r0, r1, 0);
6686TESTINST2("ssat  r0, #8,  r1, ASR #18", 0xa231d5e6, r0, r1, 0);
6687TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x10e1968a, r0, r1, 0);
6688TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x0e089270, r0, r1, 0);
6689TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x9e8e0185, r0, r1, 0);
6690TESTINST2("ssat  r0, #8,  r1, ASR #18", 0x3096f12e, r0, r1, 0);
6691TESTINST2("ssat  r0, #8,  r1, ASR #18", 0xffc134df, r0, r1, 0);
6692TESTINST2("ssat  r0, #12, r1, ASR #16", 0x256bfdd6, r0, r1, 0);
6693TESTINST2("ssat  r0, #12, r1, ASR #16", 0xc02a0c05, r0, r1, 0);
6694TESTINST2("ssat  r0, #12, r1, ASR #16", 0xee2fa46e, r0, r1, 0);
6695TESTINST2("ssat  r0, #12, r1, ASR #16", 0x97a7da20, r0, r1, 0);
6696TESTINST2("ssat  r0, #12, r1, ASR #16", 0xa231d5e6, r0, r1, 0);
6697TESTINST2("ssat  r0, #12, r1, ASR #16", 0x10e1968a, r0, r1, 0);
6698TESTINST2("ssat  r0, #12, r1, ASR #16", 0x0e089270, r0, r1, 0);
6699TESTINST2("ssat  r0, #12, r1, ASR #16", 0x9e8e0185, r0, r1, 0);
6700TESTINST2("ssat  r0, #12, r1, ASR #16", 0x3096f12e, r0, r1, 0);
6701TESTINST2("ssat  r0, #12, r1, ASR #16", 0xffc134df, r0, r1, 0);
6702TESTINST2("ssat  r0, #16, r1, LSL #12", 0x256bfdd6, r0, r1, 0);
6703TESTINST2("ssat  r0, #16, r1, LSL #12", 0xc02a0c05, r0, r1, 0);
6704TESTINST2("ssat  r0, #16, r1, LSL #12", 0xee2fa46e, r0, r1, 0);
6705TESTINST2("ssat  r0, #16, r1, LSL #12", 0x97a7da20, r0, r1, 0);
6706TESTINST2("ssat  r0, #16, r1, LSL #12", 0xa231d5e6, r0, r1, 0);
6707TESTINST2("ssat  r0, #16, r1, LSL #12", 0x10e1968a, r0, r1, 0);
6708TESTINST2("ssat  r0, #16, r1, LSL #12", 0x0e089270, r0, r1, 0);
6709TESTINST2("ssat  r0, #16, r1, LSL #12", 0x9e8e0185, r0, r1, 0);
6710TESTINST2("ssat  r0, #16, r1, LSL #12", 0x3096f12e, r0, r1, 0);
6711TESTINST2("ssat  r0, #16, r1, LSL #12", 0xffc134df, r0, r1, 0);
6712TESTINST2("ssat  r0, #18, r1, LSL #8", 0x256bfdd6, r0, r1, 0);
6713TESTINST2("ssat  r0, #18, r1, LSL #8", 0xc02a0c05, r0, r1, 0);
6714TESTINST2("ssat  r0, #18, r1, LSL #8", 0xee2fa46e, r0, r1, 0);
6715TESTINST2("ssat  r0, #18, r1, LSL #8", 0x97a7da20, r0, r1, 0);
6716TESTINST2("ssat  r0, #18, r1, LSL #8", 0xa231d5e6, r0, r1, 0);
6717TESTINST2("ssat  r0, #18, r1, LSL #8", 0x10e1968a, r0, r1, 0);
6718TESTINST2("ssat  r0, #18, r1, LSL #8", 0x0e089270, r0, r1, 0);
6719TESTINST2("ssat  r0, #18, r1, LSL #8", 0x9e8e0185, r0, r1, 0);
6720TESTINST2("ssat  r0, #18, r1, LSL #8", 0x3096f12e, r0, r1, 0);
6721TESTINST2("ssat  r0, #18, r1, LSL #8", 0xffc134df, r0, r1, 0);
6722TESTINST2("ssat  r0, #24, r1, ASR #6", 0x256bfdd6, r0, r1, 0);
6723TESTINST2("ssat  r0, #24, r1, ASR #6", 0xc02a0c05, r0, r1, 0);
6724TESTINST2("ssat  r0, #24, r1, ASR #6", 0xee2fa46e, r0, r1, 0);
6725TESTINST2("ssat  r0, #24, r1, ASR #6", 0x97a7da20, r0, r1, 0);
6726TESTINST2("ssat  r0, #24, r1, ASR #6", 0xa231d5e6, r0, r1, 0);
6727TESTINST2("ssat  r0, #24, r1, ASR #6", 0x10e1968a, r0, r1, 0);
6728TESTINST2("ssat  r0, #24, r1, ASR #6", 0x0e089270, r0, r1, 0);
6729TESTINST2("ssat  r0, #24, r1, ASR #6", 0x9e8e0185, r0, r1, 0);
6730TESTINST2("ssat  r0, #24, r1, ASR #6", 0x3096f12e, r0, r1, 0);
6731TESTINST2("ssat  r0, #24, r1, ASR #6", 0xffc134df, r0, r1, 0);
6732TESTINST2("ssat  r0, #28, r1, ASR #3", 0x256bfdd6, r0, r1, 0);
6733TESTINST2("ssat  r0, #28, r1, ASR #3", 0xc02a0c05, r0, r1, 0);
6734TESTINST2("ssat  r0, #28, r1, ASR #3", 0xee2fa46e, r0, r1, 0);
6735TESTINST2("ssat  r0, #28, r1, ASR #3", 0x97a7da20, r0, r1, 0);
6736TESTINST2("ssat  r0, #28, r1, ASR #3", 0xa231d5e6, r0, r1, 0);
6737TESTINST2("ssat  r0, #28, r1, ASR #3", 0x10e1968a, r0, r1, 0);
6738TESTINST2("ssat  r0, #28, r1, ASR #3", 0x0e089270, r0, r1, 0);
6739TESTINST2("ssat  r0, #28, r1, ASR #3", 0x9e8e0185, r0, r1, 0);
6740TESTINST2("ssat  r0, #28, r1, ASR #3", 0x3096f12e, r0, r1, 0);
6741TESTINST2("ssat  r0, #28, r1, ASR #3", 0xffc134df, r0, r1, 0);
6742TESTINST2("ssat  r0, #31, r1, ASR #1", 0x256bfdd6, r0, r1, 0);
6743TESTINST2("ssat  r0, #31, r1, ASR #1", 0xc02a0c05, r0, r1, 0);
6744TESTINST2("ssat  r0, #31, r1, ASR #1", 0xee2fa46e, r0, r1, 0);
6745TESTINST2("ssat  r0, #31, r1, ASR #1", 0x97a7da20, r0, r1, 0);
6746TESTINST2("ssat  r0, #31, r1, ASR #1", 0xa231d5e6, r0, r1, 0);
6747TESTINST2("ssat  r0, #31, r1, ASR #1", 0x10e1968a, r0, r1, 0);
6748TESTINST2("ssat  r0, #31, r1, ASR #1", 0x0e089270, r0, r1, 0);
6749TESTINST2("ssat  r0, #31, r1, ASR #1", 0x9e8e0185, r0, r1, 0);
6750TESTINST2("ssat  r0, #31, r1, ASR #1", 0x3096f12e, r0, r1, 0);
6751TESTINST2("ssat  r0, #31, r1, ASR #1", 0xffc134df, r0, r1, 0);
6752#ifndef __thumb__
6753TESTINST2("ssat  r0, #1, r1, ASR #32", 0x256bfdd6, r0, r1, 0);
6754TESTINST2("ssat  r0, #1, r1, ASR #32", 0xc02a0c05, r0, r1, 0);
6755TESTINST2("ssat  r0, #1, r1, ASR #32", 0xee2fa46e, r0, r1, 0);
6756TESTINST2("ssat  r0, #1, r1, ASR #32", 0x97a7da20, r0, r1, 0);
6757TESTINST2("ssat  r0, #1, r1, ASR #32", 0xa231d5e6, r0, r1, 0);
6758TESTINST2("ssat  r0, #1, r1, ASR #32", 0x10e1968a, r0, r1, 0);
6759TESTINST2("ssat  r0, #1, r1, ASR #32", 0x0e089270, r0, r1, 0);
6760TESTINST2("ssat  r0, #1, r1, ASR #32", 0x9e8e0185, r0, r1, 0);
6761TESTINST2("ssat  r0, #1, r1, ASR #32", 0x3096f12e, r0, r1, 0);
6762TESTINST2("ssat  r0, #1, r1, ASR #32", 0xffc134df, r0, r1, 0);
6763TESTINST2("ssat  r0, #32, r1, ASR #32", 0x256bfdd6, r0, r1, 0);
6764TESTINST2("ssat  r0, #32, r1, ASR #32", 0xc02a0c05, r0, r1, 0);
6765TESTINST2("ssat  r0, #32, r1, ASR #32", 0xee2fa46e, r0, r1, 0);
6766TESTINST2("ssat  r0, #32, r1, ASR #32", 0x97a7da20, r0, r1, 0);
6767TESTINST2("ssat  r0, #32, r1, ASR #32", 0xa231d5e6, r0, r1, 0);
6768TESTINST2("ssat  r0, #32, r1, ASR #32", 0x10e1968a, r0, r1, 0);
6769TESTINST2("ssat  r0, #32, r1, ASR #32", 0x0e089270, r0, r1, 0);
6770TESTINST2("ssat  r0, #32, r1, ASR #32", 0x9e8e0185, r0, r1, 0);
6771TESTINST2("ssat  r0, #32, r1, ASR #32", 0x3096f12e, r0, r1, 0);
6772TESTINST2("ssat  r0, #32, r1, ASR #32", 0xffc134df, r0, r1, 0);
6773#endif
6774
6775  printf("---------------- SADD8 ----------------- \n");
6776  TESTINST3("sadd8 r0, r1, r2", 0x00f7ffff, 0x00e800fd, r0, r1, r2, 0);
6777  TESTINST3("sadd8 r0, r1, r2", 0x00e800fd, 0x00f7ffff, r0, r1, r2, 0);
6778  TESTINST3("sadd8 r0, r1, r2", 0x00fd00e8, 0xffff00f7, r0, r1, r2, 0);
6779  TESTINST3("sadd8 r0, r1, r2", 0xffff00f7, 0x00fd0018, r0, r1, r2, 0);
6780  TESTINST3("sadd8 r0, r1, r2", 0x0000fd18, 0xff00fff7, r0, r1, r2, 0);
6781  TESTINST3("sadd8 r0, r1, r2", 0xffff00f7, 0x00fd00e8, r0, r1, r2, 0);
6782  TESTINST3("sadd8 r0, r1, r2", 0x00fefd18, 0xff07fff7, r0, r1, r2, 0);
6783  TESTINST3("sadd8 r0, r1, r2", 0xff07fff7, 0x00fefde8, r0, r1, r2, 0);
6784TESTINST3("sadd8 r0, r1, r2", 0xb8035b5b, 0xce0ce1ed, r0, r1, r2, 0);
6785TESTINST3("sadd8 r0, r1, r2", 0x146275d8, 0xaae3433f, r0, r1, r2, 0);
6786TESTINST3("sadd8 r0, r1, r2", 0x2c07a5b4, 0x32fa0095, r0, r1, r2, 0);
6787TESTINST3("sadd8 r0, r1, r2", 0x8ed8287c, 0x02c90120, r0, r1, r2, 0);
6788TESTINST3("sadd8 r0, r1, r2", 0x29300837, 0x0b02c58a, r0, r1, r2, 0);
6789TESTINST3("sadd8 r0, r1, r2", 0xb0d20777, 0x3e2e1bd7, r0, r1, r2, 0);
6790TESTINST3("sadd8 r0, r1, r2", 0xd5fe2dc4, 0xdd914bf7, r0, r1, r2, 0);
6791TESTINST3("sadd8 r0, r1, r2", 0x1d66879f, 0xf2b64835, r0, r1, r2, 0);
6792TESTINST3("sadd8 r0, r1, r2", 0xae930a1a, 0x5ef1f1a8, r0, r1, r2, 0);
6793TESTINST3("sadd8 r0, r1, r2", 0x1ffe53d9, 0x815bb75b, r0, r1, r2, 0);
6794TESTINST3("sadd8 r0, r1, r2", 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, 0);
6795TESTINST3("sadd8 r0, r1, r2", 0x3dba1164, 0x3ada0280, r0, r1, r2, 0);
6796TESTINST3("sadd8 r0, r1, r2", 0xda4ba05b, 0x90f9833d, r0, r1, r2, 0);
6797TESTINST3("sadd8 r0, r1, r2", 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, 0);
6798TESTINST3("sadd8 r0, r1, r2", 0x81616d13, 0x51f31d95, r0, r1, r2, 0);
6799TESTINST3("sadd8 r0, r1, r2", 0x0849a0c2, 0x0872f25a, r0, r1, r2, 0);
6800TESTINST3("sadd8 r0, r1, r2", 0xf1e03d7e, 0x91edc21d, r0, r1, r2, 0);
6801TESTINST3("sadd8 r0, r1, r2", 0x6034078d, 0x181c436b, r0, r1, r2, 0);
6802TESTINST3("sadd8 r0, r1, r2", 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, 0);
6803TESTINST3("sadd8 r0, r1, r2", 0x3edad6b6, 0x82aceb7a, r0, r1, r2, 0);
6804TESTINST3("sadd8 r0, r1, r2", 0x0557c6fc, 0x6cc9bfa8, r0, r1, r2, 0);
6805TESTINST3("sadd8 r0, r1, r2", 0x7f808c15, 0x81874a02, r0, r1, r2, 0);
6806TESTINST3("sadd8 r0, r1, r2", 0x6b1422c7, 0x33921b00, r0, r1, r2, 0);
6807TESTINST3("sadd8 r0, r1, r2", 0x3ccad3f7, 0xd7ce1909, r0, r1, r2, 0);
6808TESTINST3("sadd8 r0, r1, r2", 0x3e435701, 0x85fbf196, r0, r1, r2, 0);
6809TESTINST3("sadd8 r0, r1, r2", 0xb4e16b6e, 0x6e13680a, r0, r1, r2, 0);
6810TESTINST3("sadd8 r0, r1, r2", 0x89436f88, 0x44858efc, r0, r1, r2, 0);
6811TESTINST3("sadd8 r0, r1, r2", 0x9002bc30, 0x390d2c2f, r0, r1, r2, 0);
6812TESTINST3("sadd8 r0, r1, r2", 0xbea121ab, 0x953ff6ec, r0, r1, r2, 0);
6813TESTINST3("sadd8 r0, r1, r2", 0x80657c40, 0x6ffed89f, r0, r1, r2, 0);
6814TESTINST3("sadd8 r0, r1, r2", 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, 0);
6815TESTINST3("sadd8 r0, r1, r2", 0x7795635d, 0x5e6e32dd, r0, r1, r2, 0);
6816TESTINST3("sadd8 r0, r1, r2", 0xe4999bf2, 0xec0c2f30, r0, r1, r2, 0);
6817TESTINST3("sadd8 r0, r1, r2", 0x5736ed46, 0x231348c0, r0, r1, r2, 0);
6818TESTINST3("sadd8 r0, r1, r2", 0x4f9ddd1b, 0x95bca5d8, r0, r1, r2, 0);
6819TESTINST3("sadd8 r0, r1, r2", 0x5765b203, 0xc1553709, r0, r1, r2, 0);
6820TESTINST3("sadd8 r0, r1, r2", 0x0112b30a, 0x69ec0212, r0, r1, r2, 0);
6821TESTINST3("sadd8 r0, r1, r2", 0x74bd0223, 0x03fa9bb5, r0, r1, r2, 0);
6822TESTINST3("sadd8 r0, r1, r2", 0x899d9192, 0xf52e9fbf, r0, r1, r2, 0);
6823TESTINST3("sadd8 r0, r1, r2", 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, 0);
6824TESTINST3("sadd8 r0, r1, r2", 0x64a365ef, 0x2dd01366, r0, r1, r2, 0);
6825TESTINST3("sadd8 r0, r1, r2", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6826TESTINST3("sadd8 r0, r1, r2", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6827TESTINST3("sadd8 r0, r1, r2", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6828TESTINST3("sadd8 r0, r1, r2", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6829TESTINST3("sadd8 r0, r1, r2", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6830TESTINST3("sadd8 r0, r1, r2", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6831TESTINST3("sadd8 r0, r1, r2", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6832TESTINST3("sadd8 r0, r1, r2", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6833TESTINST3("sadd8 r0, r1, r2", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6834TESTINST3("sadd8 r0, r1, r2", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6835
6836  printf("------------ SXTAB ------------\n");
6837  TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
6838  TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
6839  TESTINST3("sxtab r0, r1, r2, ROR #8",  0x31415927, 0x27182819, r0, r1, r2, 0);
6840  TESTINST3("sxtab r0, r1, r2, ROR #0",  0x31415927, 0x27182819, r0, r1, r2, 0);
6841
6842  TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0);
6843  TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0);
6844  TESTINST3("sxtab r0, r1, r2, ROR #8",  0x31415927, 0x27182899, r0, r1, r2, 0);
6845  TESTINST3("sxtab r0, r1, r2, ROR #0",  0x31415927, 0x27182899, r0, r1, r2, 0);
6846
6847TESTINST3("sxtab r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6848TESTINST3("sxtab r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6849TESTINST3("sxtab r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6850TESTINST3("sxtab r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6851TESTINST3("sxtab r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6852TESTINST3("sxtab r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6853TESTINST3("sxtab r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6854TESTINST3("sxtab r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6855TESTINST3("sxtab r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6856TESTINST3("sxtab r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6857
6858TESTINST3("sxtab r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6859TESTINST3("sxtab r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6860TESTINST3("sxtab r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6861TESTINST3("sxtab r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6862TESTINST3("sxtab r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6863TESTINST3("sxtab r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6864TESTINST3("sxtab r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6865TESTINST3("sxtab r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6866TESTINST3("sxtab r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6867TESTINST3("sxtab r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6868
6869TESTINST3("sxtab r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6870TESTINST3("sxtab r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6871TESTINST3("sxtab r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6872TESTINST3("sxtab r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6873TESTINST3("sxtab r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6874TESTINST3("sxtab r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6875TESTINST3("sxtab r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6876TESTINST3("sxtab r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6877TESTINST3("sxtab r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6878TESTINST3("sxtab r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6879
6880TESTINST3("sxtab r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6881TESTINST3("sxtab r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6882TESTINST3("sxtab r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6883TESTINST3("sxtab r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6884TESTINST3("sxtab r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6885TESTINST3("sxtab r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6886TESTINST3("sxtab r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6887TESTINST3("sxtab r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6888TESTINST3("sxtab r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6889TESTINST3("sxtab r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6890
6891  printf("------------ UXTAB ------------\n");
6892  TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
6893  TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
6894  TESTINST3("uxtab r0, r1, r2, ROR #8",  0x31415927, 0x27182819, r0, r1, r2, 0);
6895  TESTINST3("uxtab r0, r1, r2, ROR #0",  0x31415927, 0x27182819, r0, r1, r2, 0);
6896
6897  TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0);
6898  TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0);
6899  TESTINST3("uxtab r0, r1, r2, ROR #8",  0x31415927, 0x27182899, r0, r1, r2, 0);
6900  TESTINST3("uxtab r0, r1, r2, ROR #0",  0x31415927, 0x27182899, r0, r1, r2, 0);
6901
6902TESTINST3("uxtab r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6903TESTINST3("uxtab r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6904TESTINST3("uxtab r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6905TESTINST3("uxtab r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6906TESTINST3("uxtab r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6907TESTINST3("uxtab r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6908TESTINST3("uxtab r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6909TESTINST3("uxtab r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6910TESTINST3("uxtab r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6911TESTINST3("uxtab r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6912
6913TESTINST3("uxtab r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6914TESTINST3("uxtab r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6915TESTINST3("uxtab r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6916TESTINST3("uxtab r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6917TESTINST3("uxtab r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6918TESTINST3("uxtab r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6919TESTINST3("uxtab r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6920TESTINST3("uxtab r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6921TESTINST3("uxtab r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6922TESTINST3("uxtab r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6923
6924TESTINST3("uxtab r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6925TESTINST3("uxtab r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6926TESTINST3("uxtab r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6927TESTINST3("uxtab r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6928TESTINST3("uxtab r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6929TESTINST3("uxtab r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6930TESTINST3("uxtab r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6931TESTINST3("uxtab r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6932TESTINST3("uxtab r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6933TESTINST3("uxtab r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6934
6935TESTINST3("uxtab r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6936TESTINST3("uxtab r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6937TESTINST3("uxtab r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6938TESTINST3("uxtab r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6939TESTINST3("uxtab r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6940TESTINST3("uxtab r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6941TESTINST3("uxtab r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6942TESTINST3("uxtab r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6943TESTINST3("uxtab r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6944TESTINST3("uxtab r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6945
6946  printf("----------- UXTAB16 -----------\n");
6947  TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
6948  TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
6949  TESTINST3("uxtab16 r0, r1, r2, ROR #8",  0x31415927, 0x27182819, r0, r1, r2, 0);
6950  TESTINST3("uxtab16 r0, r1, r2, ROR #0",  0x31415927, 0x27182819, r0, r1, r2, 0);
6951
6952  TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182899, r0, r1, r2, 0);
6953  TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182899, r0, r1, r2, 0);
6954  TESTINST3("uxtab16 r0, r1, r2, ROR #8",  0x31415927, 0x27182899, r0, r1, r2, 0);
6955  TESTINST3("uxtab16 r0, r1, r2, ROR #0",  0x31415927, 0x27182899, r0, r1, r2, 0);
6956  TESTINST3("uxtab16 r0, r1, r2, ROR #0",  0x3141FFFF, 0x27182899, r0, r1, r2, 0);
6957
6958TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6959TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6960TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6961TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6962TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6963TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6964TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6965TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6966TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6967TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6968
6969TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6970TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6971TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6972TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6973TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6974TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6975TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6976TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6977TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6978TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6979
6980TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6981TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6982TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6983TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6984TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6985TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6986TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6987TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6988TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
6989TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
6990
6991TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
6992TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
6993TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
6994TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
6995TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
6996TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
6997TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
6998TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
6999TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7000TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7001
7002  printf("------------ SXTAH ------------\n");
7003  TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
7004  TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
7005  TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, r0, r1, r2, 0);
7006  TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, r0, r1, r2, 0);
7007
7008  TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, r0, r1, r2, 0);
7009  TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, r0, r1, r2, 0);
7010  TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, r0, r1, r2, 0);
7011  TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, r0, r1, r2, 0);
7012
7013TESTINST3("sxtah r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7014TESTINST3("sxtah r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7015TESTINST3("sxtah r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7016TESTINST3("sxtah r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7017TESTINST3("sxtah r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7018TESTINST3("sxtah r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7019TESTINST3("sxtah r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7020TESTINST3("sxtah r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7021TESTINST3("sxtah r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7022TESTINST3("sxtah r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7023
7024TESTINST3("sxtah r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7025TESTINST3("sxtah r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7026TESTINST3("sxtah r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7027TESTINST3("sxtah r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7028TESTINST3("sxtah r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7029TESTINST3("sxtah r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7030TESTINST3("sxtah r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7031TESTINST3("sxtah r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7032TESTINST3("sxtah r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7033TESTINST3("sxtah r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7034
7035TESTINST3("sxtah r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7036TESTINST3("sxtah r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7037TESTINST3("sxtah r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7038TESTINST3("sxtah r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7039TESTINST3("sxtah r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7040TESTINST3("sxtah r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7041TESTINST3("sxtah r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7042TESTINST3("sxtah r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7043TESTINST3("sxtah r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7044TESTINST3("sxtah r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7045
7046TESTINST3("sxtah r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7047TESTINST3("sxtah r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7048TESTINST3("sxtah r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7049TESTINST3("sxtah r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7050TESTINST3("sxtah r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7051TESTINST3("sxtah r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7052TESTINST3("sxtah r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7053TESTINST3("sxtah r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7054TESTINST3("sxtah r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7055TESTINST3("sxtah r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7056
7057  printf("------------ UXTAH ------------\n");
7058  TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819, r0, r1, r2, 0);
7059  TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819, r0, r1, r2, 0);
7060  TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819, r0, r1, r2, 0);
7061  TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819, r0, r1, r2, 0);
7062
7063  TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819, r0, r1, r2, 0);
7064  TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819, r0, r1, r2, 0);
7065  TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819, r0, r1, r2, 0);
7066  TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819, r0, r1, r2, 0);
7067
7068TESTINST3("uxtah r0, r1, r2, ROR #24", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7069TESTINST3("uxtah r0, r1, r2, ROR #24", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7070TESTINST3("uxtah r0, r1, r2, ROR #24", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7071TESTINST3("uxtah r0, r1, r2, ROR #24", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7072TESTINST3("uxtah r0, r1, r2, ROR #24", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7073TESTINST3("uxtah r0, r1, r2, ROR #24", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7074TESTINST3("uxtah r0, r1, r2, ROR #24", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7075TESTINST3("uxtah r0, r1, r2, ROR #24", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7076TESTINST3("uxtah r0, r1, r2, ROR #24", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7077TESTINST3("uxtah r0, r1, r2, ROR #24", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7078
7079TESTINST3("uxtah r0, r1, r2, ROR #16", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7080TESTINST3("uxtah r0, r1, r2, ROR #16", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7081TESTINST3("uxtah r0, r1, r2, ROR #16", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7082TESTINST3("uxtah r0, r1, r2, ROR #16", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7083TESTINST3("uxtah r0, r1, r2, ROR #16", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7084TESTINST3("uxtah r0, r1, r2, ROR #16", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7085TESTINST3("uxtah r0, r1, r2, ROR #16", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7086TESTINST3("uxtah r0, r1, r2, ROR #16", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7087TESTINST3("uxtah r0, r1, r2, ROR #16", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7088TESTINST3("uxtah r0, r1, r2, ROR #16", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7089
7090TESTINST3("uxtah r0, r1, r2, ROR #8", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7091TESTINST3("uxtah r0, r1, r2, ROR #8", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7092TESTINST3("uxtah r0, r1, r2, ROR #8", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7093TESTINST3("uxtah r0, r1, r2, ROR #8", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7094TESTINST3("uxtah r0, r1, r2, ROR #8", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7095TESTINST3("uxtah r0, r1, r2, ROR #8", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7096TESTINST3("uxtah r0, r1, r2, ROR #8", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7097TESTINST3("uxtah r0, r1, r2, ROR #8", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7098TESTINST3("uxtah r0, r1, r2, ROR #8", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7099TESTINST3("uxtah r0, r1, r2, ROR #8", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7100
7101TESTINST3("uxtah r0, r1, r2, ROR #0", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7102TESTINST3("uxtah r0, r1, r2, ROR #0", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7103TESTINST3("uxtah r0, r1, r2, ROR #0", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7104TESTINST3("uxtah r0, r1, r2, ROR #0", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7105TESTINST3("uxtah r0, r1, r2, ROR #0", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7106TESTINST3("uxtah r0, r1, r2, ROR #0", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7107TESTINST3("uxtah r0, r1, r2, ROR #0", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7108TESTINST3("uxtah r0, r1, r2, ROR #0", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7109TESTINST3("uxtah r0, r1, r2, ROR #0", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7110TESTINST3("uxtah r0, r1, r2, ROR #0", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7111
7112/*
7113TESTINST3("theinsn", 0xf7b0b13e, 0x5e4b1cbf, r0, r1, r2, 0);
7114TESTINST3("theinsn", 0x44de5ca9, 0x464a21cc, r0, r1, r2, 0);
7115TESTINST3("theinsn", 0x299da970, 0xe8108f1b, r0, r1, r2, 0);
7116TESTINST3("theinsn", 0xf5818cfb, 0xcd90d604, r0, r1, r2, 0);
7117TESTINST3("theinsn", 0xaa5e9444, 0x8217b7df, r0, r1, r2, 0);
7118TESTINST3("theinsn", 0xe60743c3, 0x7acb4de3, r0, r1, r2, 0);
7119TESTINST3("theinsn", 0x73c29060, 0x868e7c7d, r0, r1, r2, 0);
7120TESTINST3("theinsn", 0x5f77532e, 0x1d133d3d, r0, r1, r2, 0);
7121TESTINST3("theinsn", 0x4e5e0760, 0x8f6d3264, r0, r1, r2, 0);
7122TESTINST3("theinsn", 0x21ba2fb3, 0xde99ac2f, r0, r1, r2, 0);
7123*/
7124
7125  return 0;
7126}
7127