v6intThumb.c revision 775f1e8f0e3b2ee20bd410850a85d64380c1ed84
1
2/* How to compile:
3   gcc -O -g -Wall -mcpu=cortex-a8 -o v6intThumb none/tests/arm/v6intThumb.c
4*/
5
6#include <stdio.h>
7
8static int gen_cvin(int cvin)
9{
10  int r = ((cvin & 2) ? (1<<29) : 0) | ((cvin & 1) ? (1<<28) : 0);
11  r |= (1 << 31) | (1 << 30);
12  return r;
13}
14
15/* test macros to generate and output the result of a single instruction */
16
17
18// 1 registers in the insn, zero args: rD = op()
19#define TESTINST1(instruction, RD, cvin) \
20{ \
21	unsigned int out; \
22	unsigned int cpsr; \
23\
24	__asm__ volatile( \
25                "msr cpsr_f, %2;" \
26		instruction ";" \
27		"mov %0," #RD ";" \
28		"mrs %1,cpsr;" \
29		: "=&r" (out), "=&r" (cpsr) \
30		: "r" (gen_cvin(cvin))        \
31		: #RD, "cc", "memory" \
32	); \
33	printf("%s :: rd 0x%08x, c:v-in %d, cpsr 0x%08x %c%c%c%c\n", \
34		instruction, out, \
35		cvin, \
36		cpsr & 0xffff0000, \
37		((1<<31) & cpsr) ? 'N' : ' ', \
38		((1<<30) & cpsr) ? 'Z' : ' ', \
39		((1<<29) & cpsr) ? 'C' : ' ', \
40		((1<<28) & cpsr) ? 'V' : ' ' \
41		); \
42}
43
44
45
46// 1 registers in the insn, one args: rD = op(rD)
47#define TESTINST1x(instruction, RDval, RD, cvin)       \
48{ \
49	unsigned int out; \
50	unsigned int cpsr; \
51\
52	__asm__ volatile( \
53                "msr cpsr_f, %2;" \
54                "mov " #RD ",%3;" \
55		instruction ";" \
56		"mov %0," #RD ";" \
57		"mrs %1,cpsr;" \
58		: "=&r" (out), "=&r" (cpsr) \
59		: "r" (gen_cvin(cvin)), "r"(RDval) \
60		: #RD, "cc", "memory" \
61	); \
62	printf("%s :: rd 0x%08x, c:v-in %d, cpsr 0x%08x %c%c%c%c\n", \
63		instruction, out, \
64		cvin, \
65		cpsr & 0xffff0000, \
66		((1<<31) & cpsr) ? 'N' : ' ', \
67		((1<<30) & cpsr) ? 'Z' : ' ', \
68		((1<<29) & cpsr) ? 'C' : ' ', \
69		((1<<28) & cpsr) ? 'V' : ' ' \
70		); \
71}
72
73// 2 registers in the insn, one arg: rD = op(rM)
74#define TESTINST2(instruction, RMval, RD, RM, cvin) \
75{ \
76	unsigned int out; \
77	unsigned int cpsr; \
78\
79	__asm__ volatile( \
80                "msr cpsr_f, %3;" \
81		"mov " #RM ",%2;" \
82                /* set #RD to 0x55555555 so we can see which parts get overwritten */ \
83                "mov " #RD ", #0x55" "\n\t" \
84                "orr " #RD "," #RD "," #RD ", LSL #8" "\n\t" \
85                "orr " #RD "," #RD "," #RD ", LSL #16" "\n\t" \
86		instruction ";" \
87		"mov %0," #RD ";" \
88		"mrs %1,cpsr;" \
89		: "=&r" (out), "=&r" (cpsr) \
90		: "r" (RMval), "r" (gen_cvin(cvin))        \
91		: #RD, #RM, "cc", "memory" \
92	); \
93	printf("%s :: rd 0x%08x rm 0x%08x, c:v-in %d, cpsr 0x%08x %c%c%c%c\n", \
94		instruction, out, RMval, \
95		cvin, \
96		cpsr & 0xffff0000, \
97		((1<<31) & cpsr) ? 'N' : ' ', \
98		((1<<30) & cpsr) ? 'Z' : ' ', \
99		((1<<29) & cpsr) ? 'C' : ' ', \
100		((1<<28) & cpsr) ? 'V' : ' ' \
101		); \
102}
103
104
105// 2 registers in the insn, two args: rD = op(rD, rM)
106#define TESTINST2x(instruction, RDval, RMval, RD, RM, cvin)       \
107{ \
108	unsigned int out; \
109	unsigned int cpsr; \
110\
111	__asm__ volatile( \
112                "msr cpsr_f, %3;" \
113		"mov " #RM ",%2;" \
114                "mov " #RD ",%4;" \
115		instruction ";" \
116		"mov %0," #RD ";" \
117		"mrs %1,cpsr;" \
118		: "=&r" (out), "=&r" (cpsr) \
119		: "r" (RMval), "r" (gen_cvin(cvin)), "r"(RDval) \
120		: #RD, #RM, "cc", "memory" \
121	); \
122	printf("%s :: rd 0x%08x rm 0x%08x, c:v-in %d, cpsr 0x%08x %c%c%c%c\n", \
123		instruction, out, RMval, \
124		cvin, \
125		cpsr & 0xffff0000, \
126		((1<<31) & cpsr) ? 'N' : ' ', \
127		((1<<30) & cpsr) ? 'Z' : ' ', \
128		((1<<29) & cpsr) ? 'C' : ' ', \
129		((1<<28) & cpsr) ? 'V' : ' ' \
130		); \
131}
132
133
134
135#define TESTINST3(instruction, RMval, RNval, RD, RM, RN, cvin) \
136{ \
137	unsigned int out; \
138	unsigned int cpsr; \
139\
140	__asm__ volatile( \
141                "msr cpsr_f, %4;" \
142		"mov " #RM ",%2;" \
143		"mov " #RN ",%3;" \
144		instruction ";" \
145		"mov %0," #RD ";" \
146		"mrs %1,cpsr;" \
147		: "=&r" (out), "=&r" (cpsr) \
148		: "r" (RMval), "r" (RNval), "r" (gen_cvin(cvin))    \
149		: #RD, #RM, #RN, "cc", "memory" \
150	); \
151	printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x, c:v-in %d, cpsr 0x%08x %c%c%c%c\n", \
152		instruction, out, RMval, RNval, \
153		cvin, \
154		cpsr & 0xffff0000, \
155		((1<<31) & cpsr) ? 'N' : ' ', \
156		((1<<30) & cpsr) ? 'Z' : ' ', \
157		((1<<29) & cpsr) ? 'C' : ' ', \
158		((1<<28) & cpsr) ? 'V' : ' ' \
159		); \
160}
161
162#define TESTINST4(instruction, RMval, RNval, RSval, RD, RM, RN, RS, cvin) \
163{ \
164	unsigned int out; \
165	unsigned int cpsr; \
166\
167	__asm__ volatile( \
168                "msr cpsr_f, %5;" \
169		"mov " #RM ",%2;" \
170		"mov " #RN ",%3;" \
171		"mov " #RS ",%4;" \
172		instruction ";" \
173		"mov %0," #RD ";" \
174		"mrs %1,cpsr;" \
175		: "=&r" (out), "=&r" (cpsr) \
176		: "r" (RMval), "r" (RNval), "r" (RSval), "r" (gen_cvin(cvin)) \
177		: #RD, #RM, #RN, #RS, "cc", "memory" \
178	); \
179	printf("%s :: rd 0x%08x rm 0x%08x, rn 0x%08x rs 0x%08x, c:v-in %d, cpsr 0x%08x %c%c%c%c\n", \
180		instruction, out, RMval, RNval, RSval, \
181		cvin, \
182		cpsr & 0xffff0000, \
183		((1<<31) & cpsr) ? 'N' : ' ', \
184		((1<<30) & cpsr) ? 'Z' : ' ', \
185		((1<<29) & cpsr) ? 'C' : ' ', \
186		((1<<28) & cpsr) ? 'V' : ' ' \
187		); \
188}
189
190#define TESTINST4_2OUT(instruction, RDval, RD2val, RMval, RSval, RD, RD2, RM, RS, cvin) \
191{ \
192	unsigned int out; \
193	unsigned int out2; \
194	unsigned int cpsr; \
195\
196	__asm__ volatile( \
197                "msr cpsr_f, %7;" \
198		"mov " #RD ",%3;" \
199		"mov " #RD2 ",%4;" \
200		"mov " #RM ",%5;" \
201		"mov " #RS ",%6;" \
202		instruction ";" \
203		"mov %0," #RD ";" \
204		"mov %1," #RD2 ";" \
205		"mrs %2,cpsr;" \
206		: "=&r" (out), "=&r" (out2), "=&r" (cpsr) \
207		: "r" (RDval), "r" (RD2val), "r" (RMval), "r" (RSval), "r" (gen_cvin(cvin)) \
208		: #RD, #RD2, #RM, #RS, "cc", "memory" \
209	); \
210	printf("%s :: rd 0x%08x rd2 0x%08x, rm 0x%08x rs 0x%08x, c:v-in %d, cpsr 0x%08x %c%c%c%c\n", \
211		instruction, out, out2, RMval, RSval, \
212		cvin, \
213		cpsr & 0xffff0000, \
214		((1<<31) & cpsr) ? 'N' : ' ', \
215		((1<<30) & cpsr) ? 'Z' : ' ', \
216		((1<<29) & cpsr) ? 'C' : ' ', \
217		((1<<28) & cpsr) ? 'V' : ' ' \
218		); \
219}
220
221// Tests missalinged access via PC+$#imm
222#define TESTINSTPCMISSALING(instruction, RD, label, cvin) \
223{ \
224    unsigned int out; \
225    unsigned int cpsr; \
226    __asm__ volatile(\
227    ".align 4;" \
228    "msr cpsr_f, %2;" \
229    "mov " #RD ", #0;" \
230    ".align 2;" \
231    ".thumb;" \
232    ".syntax unified;" \
233    "nop;" \
234    instruction ";" \
235    "b .Lend" #label ";" \
236    ".align 4;" \
237    #label ": " \
238    ".word 0x8191881b;" \
239    ".word 0x18fe9c93;" \
240    ".word 0x00000000;" \
241    ".word 0x00000000;" \
242    ".Lend" #label ":" \
243    "mov %0, " #RD ";" \
244	"mrs %1,cpsr;" \
245  : "=&r" (out), "=&r" (cpsr) \
246  : "r" (gen_cvin(cvin)) \
247  ); \
248  printf("%s :: rd 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
249        instruction, out, \
250		cpsr & 0xffff0000, \
251		((1<<31) & cpsr) ? 'N' : ' ', \
252		((1<<30) & cpsr) ? 'Z' : ' ', \
253		((1<<29) & cpsr) ? 'C' : ' ', \
254		((1<<28) & cpsr) ? 'V' : ' ' \
255		); \
256}
257
258// this one uses d0, s0 and s2 (hardcoded)
259#define TESTINSTPCMISSALING_DWORDOUT(instruction, label, cvin) \
260{ \
261    unsigned int out; \
262    unsigned int out2; \
263    unsigned int cpsr; \
264    __asm__ volatile(\
265    ".align 4;" \
266    "msr cpsr_f, %3;" \
267    ".align 2;" \
268    ".thumb;" \
269    ".syntax unified;" \
270    "nop;" \
271    instruction ";" \
272    "b .Lend" #label ";" \
273    ".align 4;" \
274    #label ": " \
275    ".word 0x8191881b;" \
276    ".word 0x18fe9c93;" \
277    ".word 0x00000000;" \
278    ".word 0x00000000;" \
279    ".Lend" #label ":" \
280    "vmov %0, s0;" \
281    "vmov %1, s1;" \
282	"mrs %2,cpsr;" \
283  : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \
284  : "r" (gen_cvin(cvin)) \
285  ); \
286  printf("%s :: s0 0x%08x s1 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
287        instruction, out, out2, \
288		cpsr & 0xffff0000, \
289		((1<<31) & cpsr) ? 'N' : ' ', \
290		((1<<30) & cpsr) ? 'Z' : ' ', \
291		((1<<29) & cpsr) ? 'C' : ' ', \
292		((1<<28) & cpsr) ? 'V' : ' ' \
293		); \
294}
295
296#define TESTINSTPCMISSALING_2OUT(instruction, RD, RD2, label, cvin) \
297{ \
298    unsigned int out; \
299    unsigned int out2; \
300    unsigned int cpsr; \
301    __asm__ volatile(\
302    ".align 4;" \
303    "msr cpsr_f, %3;" \
304    "mov " #RD ", #0;" \
305    "mov " #RD2 ", #0;" \
306    ".align 2;" \
307    ".thumb;" \
308    ".syntax unified;" \
309    "nop;" \
310    instruction ";" \
311    "b .Lend" #label ";" \
312    ".align 4;" \
313    #label ": " \
314    ".word 0x8191881b;" \
315    ".word 0x18fe9c93;" \
316    ".word 0x00000000;" \
317    ".word 0x00000000;" \
318    ".Lend" #label ":" \
319    "mov %0, " #RD ";" \
320    "mov %1, " #RD2 ";" \
321	"mrs %2,cpsr;" \
322  : "=&r" (out), "=&r" (out2), "=&r" (cpsr) \
323  : "r" (gen_cvin(cvin)) \
324  ); \
325  printf("%s :: rd 0x%08x rd2 0x%08x, cpsr 0x%08x %c%c%c%c\n", \
326        instruction, out, out2, \
327		cpsr & 0xffff0000, \
328		((1<<31) & cpsr) ? 'N' : ' ', \
329		((1<<30) & cpsr) ? 'Z' : ' ', \
330		((1<<29) & cpsr) ? 'C' : ' ', \
331		((1<<28) & cpsr) ? 'V' : ' ' \
332		); \
333}
334
335/* helpers */
336#define NOCARRY { int cv = 0; {
337#define TESTCARRY { int cv = 0; for (cv = 0; cv < 4; cv++) {
338#define TESTCARRYEND }}
339
340////////////////////////////////////////////////////////////
341////////////////////////////////////////////////////////////
342///////////////////////////////////////////////////////////
343///////////////////////////////////////////////////////////
344
345static int old_main(void)
346{
347
348	printf("MOV\n");
349	TESTINST2("mov  r0, r1", 1, r0, r1, 0);
350	TESTINST2("cpy  r0, r1", 1, r0, r1, 0);
351	TESTINST2("mov  r0, #0", 0, r0, r1, 0);
352	TESTINST2("mov  r0, #1", 0, r0, r1, 0);
353	TESTCARRY
354	TESTINST2("movs r0, r1", 1, r0, r1, cv);
355	TESTINST2("movs r0, r1", 0, r0, r1, cv);
356	TESTINST2("movs r0, r1", 0x80000000, r0, r1, cv);
357	TESTINST2("movs r0, #0", 0, r0, r1, cv);
358	TESTINST2("movs r0, #1", 0, r0, r1, cv);
359	TESTCARRYEND
360
361	printf("MVN\n");
362	TESTINST2("mvn  r0, r1", 1, r0, r1, 0);
363	TESTCARRY
364	TESTINST2("mvns r0, r1", 1, r0, r1, cv);
365	TESTINST2("mvns r0, r1", 0, r0, r1, cv);
366	TESTINST2("mvns r0, r1", 0x80000000, r0, r1, cv);
367	TESTCARRYEND
368
369	printf("ADD\n");
370	TESTINST3("adds r0, r1, r2", 0, 0, r0, r1, r2, 0);
371	TESTINST3("adds r0, r1, r2", 0, 1, r0, r1, r2, 0);
372	TESTINST3("adds r0, r1, r2", 1, 0, r0, r1, r2, 0);
373	TESTINST3("adds r0, r1, r2", 1, 1, r0, r1, r2, 0);
374	TESTINST3("adds r0, r1, r2", 0, -1, r0, r1, r2, 0);
375	TESTINST3("adds r0, r1, r2", 1, -1, r0, r1, r2, 0);
376	TESTINST3("adds r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, 0);
377	TESTINST3("adds r0, r1, r2", 0x80000000, -1, r0, r1, r2, 0);
378	TESTINST3("adds r0, r1, r2", 0x80000000, 0, r0, r1, r2, 0);
379
380	printf("ADC\n");
381	TESTINST3("adcs r0, r1, r2", 0, 0, r0, r1, r2, 0);
382	TESTINST3("adcs r0, r1, r2", 0, 0, r0, r1, r2, 1);
383
384	printf("LSL\n");
385	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0);
386	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 1, r0, r1, r2, 0);
387	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 2, r0, r1, r2, 0);
388	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 31, r0, r1, r2, 0);
389	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 32, r0, r1, r2, 0);
390	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 33, r0, r1, r2, 0);
391	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 63, r0, r1, r2, 0);
392	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 64, r0, r1, r2, 0);
393	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 255, r0, r1, r2, 0);
394	TESTINST3("lsl  r0, r1, r2", 0xffffffff, 256, r0, r1, r2, 0);
395
396	TESTINST3("lsl  r0, r1, r2", 0x1, 0, r0, r1, r2, 0);
397	TESTINST3("lsl  r0, r1, r2", 0x1, 1, r0, r1, r2, 0);
398	TESTINST3("lsl  r0, r1, r2", 0x1, 31, r0, r1, r2, 0);
399	TESTINST3("lsl  r0, r1, r2", 0x2, 31, r0, r1, r2, 0);
400
401	printf("LSLS\n");
402	TESTCARRY
403	TESTINST3("lsls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, cv);
404	TESTINST3("lsls r0, r1, r2", 0xffffffff, 1, r0, r1, r2, cv);
405	TESTINST3("lsls r0, r1, r2", 0xffffffff, 2, r0, r1, r2, cv);
406	TESTINST3("lsls r0, r1, r2", 0xffffffff, 31, r0, r1, r2, cv);
407	TESTINST3("lsls r0, r1, r2", 0xffffffff, 32, r0, r1, r2, cv);
408	TESTINST3("lsls r0, r1, r2", 0xffffffff, 33, r0, r1, r2, cv);
409	TESTINST3("lsls r0, r1, r2", 0xffffffff, 63, r0, r1, r2, cv);
410	TESTINST3("lsls r0, r1, r2", 0xffffffff, 64, r0, r1, r2, cv);
411	TESTINST3("lsls r0, r1, r2", 0xffffffff, 255, r0, r1, r2, cv);
412	TESTINST3("lsls r0, r1, r2", 0xffffffff, 256, r0, r1, r2, cv);
413	TESTINST3("lsls r0, r1, r2", 0x1, 0, r0, r1, r2, cv);
414	TESTINST3("lsls r0, r1, r2", 0x1, 1, r0, r1, r2, cv);
415	TESTINST3("lsls r0, r1, r2", 0x1, 31, r0, r1, r2, cv);
416	TESTINST3("lsls r0, r1, r2", 0x2, 31, r0, r1, r2, cv);
417	TESTCARRYEND
418
419	printf("LSL immediate\n");
420	TESTCARRY
421	TESTINST2("lsl  r0, r1, #0", 0xffffffff, r0, r1, cv);
422	TESTINST2("lsl  r0, r1, #1", 0xffffffff, r0, r1, cv);
423	TESTINST2("lsl  r0, r1, #31", 0xffffffff, r0, r1, cv);
424	TESTINST2("lsl  r0, r1, #0", 0x1, r0, r1, cv);
425	TESTINST2("lsl  r0, r1, #1", 0x1, r0, r1, cv);
426	TESTINST2("lsl  r0, r1, #31", 0x1, r0, r1, cv);
427	TESTINST2("lsl  r0, r1, #31", 0x2, r0, r1, cv);
428	TESTCARRYEND
429
430	printf("LSLS immediate\n");
431	TESTCARRY
432	TESTINST2("lsls r0, r1, #0", 0xffffffff, r0, r1, cv);
433	TESTINST2("lsls r0, r1, #1", 0xffffffff, r0, r1, cv);
434	TESTINST2("lsls r0, r1, #31", 0xffffffff, r0, r1, cv);
435	TESTINST2("lsls r0, r1, #0", 0x1, r0, r1, cv);
436	TESTINST2("lsls r0, r1, #1", 0x1, r0, r1, cv);
437	TESTINST2("lsls r0, r1, #31", 0x1, r0, r1, cv);
438	TESTINST2("lsls r0, r1, #31", 0x2, r0, r1, cv);
439	TESTCARRYEND
440
441	printf("LSR\n");
442	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0);
443	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 1, r0, r1, r2, 0);
444	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 2, r0, r1, r2, 0);
445	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 31, r0, r1, r2, 0);
446	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 32, r0, r1, r2, 0);
447	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 33, r0, r1, r2, 0);
448	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 63, r0, r1, r2, 0);
449	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 64, r0, r1, r2, 0);
450	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 255, r0, r1, r2, 0);
451	TESTINST3("lsr  r0, r1, r2", 0xffffffff, 256, r0, r1, r2, 0);
452
453	printf("LSRS\n");
454	TESTCARRY
455	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 0, r0, r1, r2, cv);
456	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 1, r0, r1, r2, cv);
457	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 2, r0, r1, r2, cv);
458	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 31, r0, r1, r2, cv);
459	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 32, r0, r1, r2, cv);
460	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 33, r0, r1, r2, cv);
461	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 63, r0, r1, r2, cv);
462	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 64, r0, r1, r2, cv);
463	TESTINST3("lsrs r0, r1, r2", 0xffffffff, 255, r0, r1, r2, cv);
464	TESTCARRYEND
465
466	printf("LSR immediate\n");
467	TESTINST2("lsr  r0, r1, #0", 0xffffffff, r0, r1, 0);
468	TESTINST2("lsr  r0, r1, #1", 0xffffffff, r0, r1, 0);
469	TESTINST2("lsr  r0, r1, #31", 0xffffffff, r0, r1, 0);
470	TESTINST2("lsr  r0, r1, #32", 0xffffffff, r0, r1, 0);
471	TESTINST2("lsr  r0, r1, #16", 0x00010000, r0, r1, 0);
472	TESTINST2("lsr  r0, r1, #17", 0x00010000, r0, r1, 0);
473	TESTINST2("lsr  r0, r1, #18", 0x00010000, r0, r1, 0);
474
475	printf("LSRS immediate\n");
476	TESTCARRY
477	TESTINST2("lsrs r0, r1, #0", 0xffffffff, r0, r1, cv);
478	TESTINST2("lsrs r0, r1, #1", 0xffffffff, r0, r1, cv);
479	TESTINST2("lsrs r0, r1, #31", 0xffffffff, r0, r1, cv);
480	TESTINST2("lsrs r0, r1, #32", 0xffffffff, r0, r1, cv);
481	TESTINST2("lsrs r0, r1, #16", 0x00010000, r0, r1, cv);
482	TESTINST2("lsrs r0, r1, #17", 0x00010000, r0, r1, cv);
483	TESTINST2("lsrs r0, r1, #18", 0x00010000, r0, r1, cv);
484	TESTCARRYEND
485
486	printf("ASR\n");
487	TESTCARRY
488	TESTINST3("asr  r0, r1, r2", 0xffffffff, 0, r0, r1, r2, cv);
489	TESTINST3("asr  r0, r1, r2", 0xffffffff, 1, r0, r1, r2, cv);
490	TESTINST3("asr  r0, r1, r2", 0xffffffff, 2, r0, r1, r2, cv);
491	TESTINST3("asr  r0, r1, r2", 0xffffffff, 31, r0, r1, r2, cv);
492	TESTINST3("asr  r0, r1, r2", 0xffffffff, 32, r0, r1, r2, cv);
493	TESTINST3("asr  r0, r1, r2", 0xffffffff, 33, r0, r1, r2, cv);
494	TESTINST3("asr  r0, r1, r2", 0xffffffff, 63, r0, r1, r2, cv);
495	TESTINST3("asr  r0, r1, r2", 0xffffffff, 64, r0, r1, r2, cv);
496	TESTINST3("asr  r0, r1, r2", 0xffffffff, 255, r0, r1, r2, cv);
497	TESTINST3("asr  r0, r1, r2", 0xffffffff, 256, r0, r1, r2, cv);
498	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 0, r0, r1, r2, cv);
499	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, cv);
500	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 2, r0, r1, r2, cv);
501	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 31, r0, r1, r2, cv);
502	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 32, r0, r1, r2, cv);
503	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 33, r0, r1, r2, cv);
504	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 63, r0, r1, r2, cv);
505	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 64, r0, r1, r2, cv);
506	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 255, r0, r1, r2, cv);
507	TESTINST3("asr  r0, r1, r2", 0x7fffffff, 256, r0, r1, r2, cv);
508	TESTCARRYEND
509
510	printf("ASRS\n");
511	TESTCARRY
512	TESTINST3("asrs r0, r1, r2", 0xffffffff, 0, r0, r1, r2, cv);
513	TESTINST3("asrs r0, r1, r2", 0xffffffff, 1, r0, r1, r2, cv);
514	TESTINST3("asrs r0, r1, r2", 0xffffffff, 2, r0, r1, r2, cv);
515	TESTINST3("asrs r0, r1, r2", 0xffffffff, 31, r0, r1, r2, cv);
516	TESTINST3("asrs r0, r1, r2", 0xffffffff, 32, r0, r1, r2, cv);
517	TESTINST3("asrs r0, r1, r2", 0xffffffff, 33, r0, r1, r2, cv);
518	TESTINST3("asrs r0, r1, r2", 0xffffffff, 63, r0, r1, r2, cv);
519	TESTINST3("asrs r0, r1, r2", 0xffffffff, 64, r0, r1, r2, cv);
520	TESTINST3("asrs r0, r1, r2", 0xffffffff, 255, r0, r1, r2, cv);
521	TESTINST3("asrs r0, r1, r2", 0xffffffff, 256, r0, r1, r2, cv);
522	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 0, r0, r1, r2, cv);
523	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 1, r0, r1, r2, cv);
524	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 2, r0, r1, r2, cv);
525	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 31, r0, r1, r2, cv);
526	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 32, r0, r1, r2, cv);
527	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 33, r0, r1, r2, cv);
528	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 63, r0, r1, r2, cv);
529	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 64, r0, r1, r2, cv);
530	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 255, r0, r1, r2, cv);
531	TESTINST3("asrs r0, r1, r2", 0x7fffffff, 256, r0, r1, r2, cv);
532	TESTCARRYEND
533
534	TESTCARRY
535	TESTINST3("asrs r0, r1, r2", 0x8, 0, r0, r1, r2, cv);
536	TESTINST3("asrs r0, r1, r2", 0x8, 1, r0, r1, r2, cv);
537	TESTINST3("asrs r0, r1, r2", 0x8, 2, r0, r1, r2, cv);
538	TESTINST3("asrs r0, r1, r2", 0x8, 3, r0, r1, r2, cv);
539	TESTINST3("asrs r0, r1, r2", 0x8, 4, r0, r1, r2, cv);
540	TESTINST3("asrs r0, r1, r2", 0x8, 5, r0, r1, r2, cv);
541	TESTCARRYEND
542
543	TESTINST3("asrs r0, r1, r2", 0x80000001, 1, r0, r1, r2, 0);
544	TESTINST3("asrs r0, r1, r2", 0x80000001, 2, r0, r1, r2, 0);
545
546	printf("ASR immediate\n");
547	TESTINST2("asr  r0, r1, #0", 0xffffffff, r0, r1, 0);
548	TESTINST2("asr  r0, r1, #1", 0xffffffff, r0, r1, 0);
549	TESTINST2("asr  r0, r1, #31", 0xffffffff, r0, r1, 0);
550	TESTINST2("asr  r0, r1, #32", 0xffffffff, r0, r1, 0);
551	TESTINST2("asr  r0, r1, #0", 0x7fffffff, r0, r1, 0);
552	TESTINST2("asr  r0, r1, #1", 0x7fffffff, r0, r1, 0);
553	TESTINST2("asr  r0, r1, #31", 0x7fffffff, r0, r1, 0);
554	TESTINST2("asr  r0, r1, #32", 0x7fffffff, r0, r1, 0);
555	TESTINST2("asr  r0, r1, #16", 0x00010000, r0, r1, 0);
556	TESTINST2("asr  r0, r1, #17", 0x00010000, r0, r1, 0);
557	TESTINST2("asr  r0, r1, #18", 0x00010000, r0, r1, 0);
558
559	printf("ASRS immediate\n");
560	TESTCARRY
561	TESTINST2("asrs r0, r1, #0", 0xffffffff, r0, r1, cv);
562	TESTINST2("asrs r0, r1, #1", 0xffffffff, r0, r1, cv);
563	TESTINST2("asrs r0, r1, #31", 0xffffffff, r0, r1, cv);
564	TESTINST2("asrs r0, r1, #32", 0xffffffff, r0, r1, cv);
565	TESTINST2("asrs r0, r1, #0", 0x7fffffff, r0, r1, cv);
566	TESTINST2("asrs r0, r1, #1", 0x7fffffff, r0, r1, cv);
567	TESTINST2("asrs r0, r1, #31", 0x7fffffff, r0, r1, cv);
568	TESTINST2("asrs r0, r1, #32", 0x7fffffff, r0, r1, cv);
569	TESTINST2("asrs r0, r1, #16", 0x00010000, r0, r1, cv);
570	TESTINST2("asrs r0, r1, #17", 0x00010000, r0, r1, cv);
571	TESTINST2("asrs r0, r1, #18", 0x00010000, r0, r1, cv);
572	TESTCARRYEND
573
574    printf("literal access [PC+#imm]\n");
575    NOCARRY
576    // this should result in r1=0
577    TESTINSTPCMISSALING("adr.w r1, label_magic_adrw;and r1, r1, #0x3", r1, label_magic_adrw, cv);
578    // omitting LDC/LDC2
579    TESTINSTPCMISSALING("ldr r1, label_magic_ldr", r1, label_magic_ldr, cv);
580    TESTINSTPCMISSALING("ldrb r1, label_magic_ldrb", r1, label_magic_ldrb, cv);
581    TESTINSTPCMISSALING_2OUT("ldrd r0, r1, label_magic_ldrd", r0, r1, label_magic_ldrd, cv);
582    TESTINSTPCMISSALING("ldrh r1, label_magic_ldrh", r1, label_magic_ldrh, cv);
583    TESTINSTPCMISSALING("ldrsb r1, label_magic_ldrsb", r1, label_magic_ldrsb, cv);
584    TESTINSTPCMISSALING("ldrsh r1, label_magic_ldrsh", r1, label_magic_ldrsh, cv);
585    // omitting PLD/PLI
586    TESTINSTPCMISSALING_DWORDOUT("vldr d0, label_magic_vldr", label_magic_vldr, cv);
587
588
589    TESTCARRYEND
590
591#if 0
592	printf("ROR\n");
593	TESTCARRY
594	TESTINST3("ror  r0, r1, r2", 0x00088000, 0, r0, r1, r2, cv);
595	TESTINST3("ror  r0, r1, r2", 0x80088000, 1, r0, r1, r2, cv);
596	TESTINST3("ror  r0, r1, r2", 0x00088000, 1, r0, r1, r2, cv);
597	TESTINST3("ror  r0, r1, r2", 0x00088000, 2, r0, r1, r2, cv);
598	TESTINST3("ror  r0, r1, r2", 0x00088000, 31, r0, r1, r2, cv);
599	TESTINST3("ror  r0, r1, r2", 0x00088000, 32, r0, r1, r2, cv);
600	TESTINST3("ror  r0, r1, r2", 0x00088000, 33, r0, r1, r2, cv);
601	TESTINST3("ror  r0, r1, r2", 0x00088000, 63, r0, r1, r2, cv);
602	TESTINST3("ror  r0, r1, r2", 0x00088000, 64, r0, r1, r2, cv);
603	TESTINST3("ror  r0, r1, r2", 0x00088000, 255, r0, r1, r2, cv);
604	TESTINST3("ror  r0, r1, r2", 0x00088000, 256, r0, r1, r2, cv);
605	TESTINST3("ror  r0, r1, r2", 0x80088000, 256, r0, r1, r2, cv);
606	TESTINST3("ror  r0, r1, r2", 0x00088000, 257, r0, r1, r2, cv);
607	TESTCARRYEND
608
609	printf("RORS\n");
610	TESTCARRY
611	TESTINST3("rors r0, r1, r2", 0x00088000, 0, r0, r1, r2, cv);
612	TESTINST3("rors r0, r1, r2", 0x80088000, 0, r0, r1, r2, cv);
613	TESTINST3("rors r0, r1, r2", 0x00088000, 1, r0, r1, r2, cv);
614	TESTINST3("rors r0, r1, r2", 0x00088000, 2, r0, r1, r2, cv);
615	TESTINST3("rors r0, r1, r2", 0x00088000, 31, r0, r1, r2, cv);
616	TESTINST3("rors r0, r1, r2", 0x00088000, 32, r0, r1, r2, cv);
617	TESTINST3("rors r0, r1, r2", 0x00088000, 33, r0, r1, r2, cv);
618	TESTINST3("rors r0, r1, r2", 0x00088000, 63, r0, r1, r2, cv);
619	TESTINST3("rors r0, r1, r2", 0x00088000, 64, r0, r1, r2, cv);
620	TESTINST3("rors r0, r1, r2", 0x00088000, 255, r0, r1, r2, cv);
621	TESTINST3("rors r0, r1, r2", 0x00088000, 256, r0, r1, r2, cv);
622	TESTINST3("rors r0, r1, r2", 0x80088000, 256, r0, r1, r2, cv);
623	TESTINST3("rors r0, r1, r2", 0x00088000, 257, r0, r1, r2, cv);
624	TESTCARRYEND
625
626	printf("ROR immediate\n");
627	TESTCARRY
628	TESTINST2("ror  r0, r1, #0", 0x00088000, r0, r1, cv);
629	TESTINST2("ror  r0, r1, #1", 0x00088000, r0, r1, cv);
630	TESTINST2("ror  r0, r1, #31", 0x00088000, r0, r1, cv);
631	TESTINST2("ror  r0, r1, #16", 0x00010000, r0, r1, cv);
632	TESTINST2("ror  r0, r1, #17", 0x00010000, r0, r1, cv);
633	TESTINST2("ror  r0, r1, #18", 0x00010000, r0, r1, cv);
634	TESTCARRYEND
635
636	printf("RORS immediate\n");
637	TESTCARRY
638	TESTINST2("rors r0, r1, #0", 0x00088000, r0, r1, cv);
639	TESTINST2("rors r0, r1, #1", 0x00088000, r0, r1, cv);
640	TESTINST2("rors r0, r1, #31", 0x00088000, r0, r1, cv);
641	TESTINST2("rors r0, r1, #16", 0x00010000, r0, r1, cv);
642	TESTINST2("rors r0, r1, #17", 0x00010000, r0, r1, cv);
643	TESTINST2("rors r0, r1, #18", 0x00010000, r0, r1, cv);
644	TESTCARRYEND
645#endif
646#if 0
647	printf("shift with barrel shifter\n");
648	TESTCARRY
649	TESTINST4("add  r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, cv);
650	TESTINST4("add  r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, cv);
651	TESTINST4("add  r0, r1, r2, lsl r3", 0, 0xffffffff, 31, r0, r1, r2, r3, cv);
652	TESTINST4("add  r0, r1, r2, lsl r3", 0, 0xffffffff, 32, r0, r1, r2, r3, cv);
653	TESTINST4("add  r0, r1, r2, lsl r3", 0, 0xffffffff, 255, r0, r1, r2, r3, cv);
654	TESTINST4("add  r0, r1, r2, lsl r3", 0, 0xffffffff, 256, r0, r1, r2, r3, cv);
655	TESTINST4("add  r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, cv);
656	TESTINST4("add  r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, cv);
657	TESTINST4("add  r0, r1, r2, lsr r3", 0, 0xffffffff, 31, r0, r1, r2, r3, cv);
658	TESTINST4("add  r0, r1, r2, lsr r3", 0, 0xffffffff, 32, r0, r1, r2, r3, cv);
659	TESTINST4("add  r0, r1, r2, lsr r3", 0, 0xffffffff, 255, r0, r1, r2, r3, cv);
660	TESTINST4("add  r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, cv);
661	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x7fffffff, 0, r0, r1, r2, r3, cv);
662	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x7fffffff, 1, r0, r1, r2, r3, cv);
663	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x7fffffff, 31, r0, r1, r2, r3, cv);
664	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x7fffffff, 32, r0, r1, r2, r3, cv);
665	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x7fffffff, 255, r0, r1, r2, r3, cv);
666	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x7fffffff, 256, r0, r1, r2, r3, cv);
667	TESTINST4("add  r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, cv);
668	TESTCARRYEND
669
670	TESTCARRY
671	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x8, 0, r0, r1, r2, r3, cv);
672	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x8, 1, r0, r1, r2, r3, cv);
673	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x8, 2, r0, r1, r2, r3, cv);
674	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x8, 3, r0, r1, r2, r3, cv);
675	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x8, 4, r0, r1, r2, r3, cv);
676	TESTINST4("add  r0, r1, r2, asr r3", 0, 0x8, 5, r0, r1, r2, r3, cv);
677	TESTCARRYEND
678
679	TESTCARRY
680	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x00088000, 0, r0, r1, r2, r3, cv);
681	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x80088000, 0, r0, r1, r2, r3, cv);
682	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x00088000, 1, r0, r1, r2, r3, cv);
683	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x00088000, 31, r0, r1, r2, r3, cv);
684	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x00088000, 32, r0, r1, r2, r3, cv);
685	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x00088000, 255, r0, r1, r2, r3, cv);
686	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x00088000, 256, r0, r1, r2, r3, cv);
687	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x80088000, 256, r0, r1, r2, r3, cv);
688	TESTINST4("add  r0, r1, r2, ror r3", 0, 0x00088000, 257, r0, r1, r2, r3, cv);
689	TESTCARRYEND
690#endif
691#if 0
692	TESTCARRY
693	TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, cv);
694	TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, cv);
695	TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 31, r0, r1, r2, r3, cv);
696	TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 32, r0, r1, r2, r3, cv);
697	TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 255, r0, r1, r2, r3, cv);
698	TESTINST4("adds r0, r1, r2, lsl r3", 0, 0xffffffff, 256, r0, r1, r2, r3, cv);
699	TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, cv);
700	TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, cv);
701	TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 31, r0, r1, r2, r3, cv);
702	TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 32, r0, r1, r2, r3, cv);
703	TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 255, r0, r1, r2, r3, cv);
704	TESTINST4("adds r0, r1, r2, lsr r3", 0, 0xffffffff, 256, r0, r1, r2, r3, cv);
705
706	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 0, r0, r1, r2, r3, cv);
707	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x80088000, 0, r0, r1, r2, r3, cv);
708	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 1, r0, r1, r2, r3, cv);
709	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 31, r0, r1, r2, r3, cv);
710	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 32, r0, r1, r2, r3, cv);
711	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 255, r0, r1, r2, r3, cv);
712	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 256, r0, r1, r2, r3, cv);
713	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x80088000, 256, r0, r1, r2, r3, cv);
714	TESTINST4("adds r0, r1, r2, ror r3", 0, 0x00088000, 257, r0, r1, r2, r3, cv);
715	TESTCARRYEND
716#endif
717
718#if 0
719	TESTCARRY
720	TESTINST4("adcs r0, r1, r2, lsl r3", 0, 0xffffffff, 0, r0, r1, r2, r3, cv);
721	TESTINST4("adcs r0, r1, r2, lsr r3", 0, 0xffffffff, 0, r0, r1, r2, r3, cv);
722	TESTINST4("adcs r0, r1, r2, lsl r3", 0, 0xffffffff, 1, r0, r1, r2, r3, cv);
723	TESTINST4("adcs r0, r1, r2, lsr r3", 0, 0xffffffff, 1, r0, r1, r2, r3, cv);
724	TESTCARRYEND
725#endif
726
727	printf("MUL\n");
728	TESTINST3("mul  r0, r1, r2", 0, 0, r0, r1, r2, 0);
729	TESTINST3("mul  r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0);
730	TESTINST3("mul  r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0);
731	TESTINST3("mul  r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0);
732	TESTINST3("mul  r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0);
733	TESTINST3("mul  r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
734
735#if 0
736	printf("MULS\n");
737	TESTINST3("muls r0, r1, r2", 0, 0, r0, r1, r2, 0);
738	TESTINST3("muls r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0);
739	TESTINST3("muls r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0);
740	TESTINST3("muls r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0);
741	TESTINST3("muls r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0);
742	TESTINST3("muls r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
743#endif
744
745	printf("MLA\n");
746	TESTINST4("mla  r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0);
747	TESTINST4("mla  r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0);
748	TESTINST4("mla  r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0);
749	TESTINST4("mla  r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
750	TESTINST4("mla  r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
751	TESTINST4("mla  r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
752
753#if 0
754	printf("MLAS\n");
755	TESTINST4("mlas r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0);
756	TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0);
757	TESTINST4("mlas r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0);
758	TESTINST4("mlas r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
759	TESTINST4("mlas r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
760	TESTINST4("mlas r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
761#endif
762
763	printf("MLS\n");
764	TESTINST4("mls  r0, r1, r2, r3", 0, 0, 1, r0, r1, r2, r3, 0);
765	TESTINST4("mls  r0, r1, r2, r3", 0xffffffff, 0, 1, r0, r1, r2, r3, 0);
766	TESTINST4("mls  r0, r1, r2, r3", 0, 0xffffffff, 1, r0, r1, r2, r3, 0);
767	TESTINST4("mls  r0, r1, r2, r3", 0xffffffff, 0xffffffff, 1, r0, r1, r2, r3, 0);
768	TESTINST4("mls  r0, r1, r2, r3", 0x7fffffff, 0x7fffffff, 1, r0, r1, r2, r3, 0);
769	TESTINST4("mls  r0, r1, r2, r3", 0x0000ffff, 0x0000ffff, 1, r0, r1, r2, r3, 0);
770
771	printf("UMULL\n");
772	TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
773	TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
774	TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
775	TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
776	TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
777	TESTINST4_2OUT("umull  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
778#if 0
779	TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
780	TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
781	TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
782	TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
783	TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
784	TESTINST4_2OUT("umulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
785#endif
786	printf("SMULL\n");
787	TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
788	TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
789	TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
790	TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
791	TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
792	TESTINST4_2OUT("smull  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
793#if 0
794	TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
795	TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
796	TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
797	TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
798	TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
799	TESTINST4_2OUT("smulls r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
800#endif
801
802#if 0
803	printf("UMLAL\n");
804	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
805	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
806	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
807	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
808	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
809	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
810	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
811	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
812	TESTINST4_2OUT("umlal  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
813#endif
814#if 0
815	TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
816	TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
817	TESTINST4_2OUT("umlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
818	TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
819	TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
820	TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
821	TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
822	TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
823	TESTINST4_2OUT("umlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
824#endif
825#if 0
826	printf("SMLAL\n");
827	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
828	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
829	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
830	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
831	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
832	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
833	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
834	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
835	TESTINST4_2OUT("smlal  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
836#endif
837#if 0
838	TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
839	TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
840	TESTINST4_2OUT("smlals r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
841	TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
842	TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
843	TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
844	TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
845	TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
846	TESTINST4_2OUT("smlals r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
847#endif
848
849	printf("SMLALD\n");
850	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
851	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
852	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
853	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
854	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
855	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
856	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
857	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
858	TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
859        TESTINST4_2OUT("smlald  r0, r1, r2, r3", 0xfff4ffff, 0xff8fff3f, 0xfffff6ff, 0xfff9ffff, r0, r1, r2, r3, 0);
860
861	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
862	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
863	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
864	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
865	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
866	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
867	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
868	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
869	TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
870       TESTINST4_2OUT("smlaldx r0, r1, r2, r3", 0xfff4ffff, 0xff8fff3f, 0xfffff6ff, 0xfff9ffff, r0, r1, r2, r3, 0);
871
872	printf("SMLSLD\n");
873	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
874	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
875	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
876	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
877	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
878	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
879	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
880	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
881	TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
882        TESTINST4_2OUT("smlsld  r0, r1, r2, r3", 0xfff4ffff, 0xff8fff3f, 0xfffff6ff, 0xfff9ffff, r0, r1, r2, r3, 0);
883	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
884	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
885	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
886	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
887	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
888	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
889	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
890	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
891	TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
892        TESTINST4_2OUT("smlsldx r0, r1, r2, r3", 0xfff4ffff, 0xff8fff3f, 0xfffff6ff, 0xfff9ffff, r0, r1, r2, r3, 0);
893
894	printf("CLZ\n");
895	TESTCARRY
896	TESTINST2("clz  r0, r1", 0, r0, r1, cv);
897	TESTINST2("clz  r0, r1", 1, r0, r1, cv);
898	TESTINST2("clz  r0, r1", 0x10, r0, r1, cv);
899	TESTINST2("clz  r0, r1", 0xffffffff, r0, r1, cv);
900	TESTCARRYEND
901
902	printf("extend instructions\n");
903	TESTINST2("uxtb r0, r1", 0, r0, r1, 0);
904	TESTINST2("uxtb r0, r1", 1, r0, r1, 0);
905	TESTINST2("uxtb r0, r1", 0xff, r0, r1, 0);
906	TESTINST2("uxtb r0, r1", 0xffffffff, r0, r1, 0);
907	TESTINST2("sxtb r0, r1", 0, r0, r1, 0);
908	TESTINST2("sxtb r0, r1", 1, r0, r1, 0);
909	TESTINST2("sxtb r0, r1", 0xff, r0, r1, 0);
910	TESTINST2("sxtb r0, r1", 0xffffffff, r0, r1, 0);
911
912	TESTINST2("uxth r0, r1", 0, r0, r1, 0);
913	TESTINST2("uxth r0, r1", 1, r0, r1, 0);
914	TESTINST2("uxth r0, r1", 0xffff, r0, r1, 0);
915	TESTINST2("uxth r0, r1", 0xffffffff, r0, r1, 0);
916	TESTINST2("sxth r0, r1", 0, r0, r1, 0);
917	TESTINST2("sxth r0, r1", 1, r0, r1, 0);
918	TESTINST2("sxth r0, r1", 0x7fff, r0, r1, 0);
919	TESTINST2("sxth r0, r1", 0xffff, r0, r1, 0);
920	TESTINST2("sxth r0, r1", 0x10ffff, r0, r1, 0);
921	TESTINST2("sxth r0, r1", 0x107fff, r0, r1, 0);
922	TESTINST2("sxth r0, r1", 0xffffffff, r0, r1, 0);
923
924	TESTINST2("uxtb r0, r1, ror #0", 0x000000ff, r0, r1, 0);
925	TESTINST2("uxtb r0, r1, ror #8", 0x000000ff, r0, r1, 0);
926	TESTINST2("uxtb r0, r1, ror #8", 0x0000ff00, r0, r1, 0);
927	TESTINST2("uxtb r0, r1, ror #16", 0x00ff0000, r0, r1, 0);
928	TESTINST2("uxtb r0, r1, ror #24", 0xff000000, r0, r1, 0);
929#if 0
930	TESTINST2("uxtb16 r0, r1", 0xffffffff, r0, r1, 0);
931	TESTINST2("uxtb16 r0, r1, ror #16", 0x0000ffff, r0, r1, 0);
932	TESTINST2("sxtb16 r0, r1", 0xffffffff, r0, r1, 0);
933	TESTINST2("sxtb16 r0, r1", 0x00ff00ff, r0, r1, 0);
934	TESTINST2("sxtb16 r0, r1", 0x007f007f, r0, r1, 0);
935#endif
936	printf("------------ BFI ------------\n");
937
938        /* bfi  rDst, rSrc, #lsb-in-dst, #number-of-bits-to-copy */
939	TESTINST2("bfi  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
940	TESTINST2("bfi  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
941	TESTINST2("bfi  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
942
943	TESTINST2("bfi  r0, r1, #19, #11", 0xFFFFFFFF, r0, r1, 0);
944	TESTINST2("bfi  r0, r1, #20, #11", 0xFFFFFFFF, r0, r1, 0);
945	TESTINST2("bfi  r0, r1, #21, #11", 0xFFFFFFFF, r0, r1, 0);
946
947	TESTINST2("bfi  r0, r1, #0, #32", 0xFFFFFFFF, r0, r1, 0);
948	TESTINST2("bfi  r0, r1, #1, #31", 0xFFFFFFFF, r0, r1, 0);
949
950	TESTINST2("bfi  r0, r1, #29, #3", 0xFFFFFFFF, r0, r1, 0);
951	TESTINST2("bfi  r0, r1, #30, #2", 0xFFFFFFFF, r0, r1, 0);
952	TESTINST2("bfi  r0, r1, #31, #1", 0xFFFFFFFF, r0, r1, 0);
953
954	printf("------------ BFC ------------\n");
955
956        /* bfi  rDst, #lsb-in-dst, #number-of-bits-to-copy */
957	TESTINST2("bfc  r0, #0, #11", 0xAAAAAAAA, r0, r1, 0);
958	TESTINST2("bfc  r0, #1, #11", 0xAAAAAAAA, r0, r1, 0);
959	TESTINST2("bfc  r0, #2, #11", 0xAAAAAAAA, r0, r1, 0);
960
961	TESTINST2("bfc  r0, #19, #11", 0xFFFFFFFF, r0, r1, 0);
962	TESTINST2("bfc  r0, #20, #11", 0xFFFFFFFF, r0, r1, 0);
963	TESTINST2("bfc  r0, #21, #11", 0xFFFFFFFF, r0, r1, 0);
964
965	TESTINST2("bfc  r0, #0, #32", 0xFFFFFFFF, r0, r1, 0);
966	TESTINST2("bfc  r0, #1, #31", 0xFFFFFFFF, r0, r1, 0);
967
968	TESTINST2("bfc  r0, #29, #3", 0xFFFFFFFF, r0, r1, 0);
969	TESTINST2("bfc  r0, #30, #2", 0xFFFFFFFF, r0, r1, 0);
970	TESTINST2("bfc  r0, #31, #1", 0xFFFFFFFF, r0, r1, 0);
971
972	printf("------------ SBFX ------------\n");
973
974        /* sbfx rDst, rSrc, #lsb, #width */
975        TESTINST2("sbfx  r0, r1, #0, #1", 0x00000000, r0, r1, 0);
976        TESTINST2("sbfx  r0, r1, #0, #1", 0x00000001, r0, r1, 0);
977        TESTINST2("sbfx  r0, r1, #1, #1", 0x00000000, r0, r1, 0);
978        TESTINST2("sbfx  r0, r1, #1, #1", 0x00000001, r0, r1, 0);
979        TESTINST2("sbfx  r0, r1, #1, #1", 0x00000002, r0, r1, 0);
980        TESTINST2("sbfx  r0, r1, #1, #1", 0x00000003, r0, r1, 0);
981
982        TESTINST2("sbfx  r0, r1, #0, #2", 0x00000000, r0, r1, 0);
983        TESTINST2("sbfx  r0, r1, #0, #2", 0x00000001, r0, r1, 0);
984        TESTINST2("sbfx  r0, r1, #1, #2", 0x00000000, r0, r1, 0);
985        TESTINST2("sbfx  r0, r1, #1, #2", 0x00000001, r0, r1, 0);
986        TESTINST2("sbfx  r0, r1, #1, #2", 0x00000002, r0, r1, 0);
987        TESTINST2("sbfx  r0, r1, #1, #2", 0x00000003, r0, r1, 0);
988
989        TESTINST2("sbfx  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
990        TESTINST2("sbfx  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
991        TESTINST2("sbfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
992
993        TESTINST2("sbfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
994
995        TESTINST2("sbfx  r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0);
996        TESTINST2("sbfx  r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0);
997
998	printf("------------ UBFX ------------\n");
999
1000        /* ubfx rDst, rSrc, #lsb, #width */
1001        TESTINST2("ubfx  r0, r1, #0, #1", 0x00000000, r0, r1, 0);
1002        TESTINST2("ubfx  r0, r1, #0, #1", 0x00000001, r0, r1, 0);
1003        TESTINST2("ubfx  r0, r1, #1, #1", 0x00000000, r0, r1, 0);
1004        TESTINST2("ubfx  r0, r1, #1, #1", 0x00000001, r0, r1, 0);
1005        TESTINST2("ubfx  r0, r1, #1, #1", 0x00000002, r0, r1, 0);
1006        TESTINST2("ubfx  r0, r1, #1, #1", 0x00000003, r0, r1, 0);
1007
1008        TESTINST2("ubfx  r0, r1, #0, #2", 0x00000000, r0, r1, 0);
1009        TESTINST2("ubfx  r0, r1, #0, #2", 0x00000001, r0, r1, 0);
1010        TESTINST2("ubfx  r0, r1, #1, #2", 0x00000000, r0, r1, 0);
1011        TESTINST2("ubfx  r0, r1, #1, #2", 0x00000001, r0, r1, 0);
1012        TESTINST2("ubfx  r0, r1, #1, #2", 0x00000002, r0, r1, 0);
1013        TESTINST2("ubfx  r0, r1, #1, #2", 0x00000003, r0, r1, 0);
1014
1015        TESTINST2("ubfx  r0, r1, #0, #11", 0xAAAAAAAA, r0, r1, 0);
1016        TESTINST2("ubfx  r0, r1, #1, #11", 0xAAAAAAAA, r0, r1, 0);
1017        TESTINST2("ubfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
1018
1019        TESTINST2("ubfx  r0, r1, #2, #11", 0xAAAAAAAA, r0, r1, 0);
1020
1021        TESTINST2("ubfx  r0, r1, #31, #1", 0xAAAAAAAA, r0, r1, 0);
1022        TESTINST2("ubfx  r0, r1, #30, #2", 0xAAAAAAAA, r0, r1, 0);
1023
1024	printf("------------ SMULL{B,T}{B,T} ------------\n");
1025        /* SMULxx rD, rN, rM */
1026
1027	TESTINST3("smulbb r0, r1, r2", 0x00030000, 0x00040000,  r0, r1, r2, 0);
1028	TESTINST3("smulbb r0, r1, r2", 0x00030001, 0x00040002,  r0, r1, r2, 0);
1029	TESTINST3("smulbb r0, r1, r2", 0x00038001, 0x00047fff,  r0, r1, r2, 0);
1030	TESTINST3("smulbb r0, r1, r2", 0x00037fff, 0x00047fff,  r0, r1, r2, 0);
1031	TESTINST3("smulbb r0, r1, r2", 0x0003ffff, 0x0004ffff,  r0, r1, r2, 0);
1032
1033	printf("------------ SXTAB ------------\n");
1034        TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819,
1035                  r0, r1, r2, 0);
1036        TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819,
1037                  r0, r1, r2, 0);
1038        TESTINST3("sxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182819,
1039                  r0, r1, r2, 0);
1040        TESTINST3("sxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182819,
1041                  r0, r1, r2, 0);
1042
1043        TESTINST3("sxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899,
1044                  r0, r1, r2, 0);
1045        TESTINST3("sxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899,
1046                  r0, r1, r2, 0);
1047        TESTINST3("sxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182899,
1048                  r0, r1, r2, 0);
1049        TESTINST3("sxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182899,
1050                  r0, r1, r2, 0);
1051#if 0
1052	printf("------------ SXTAB16 ------------\n");
1053        TESTINST3("sxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182819,
1054                  r0, r1, r2, 0);
1055        TESTINST3("sxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182819,
1056                  r0, r1, r2, 0);
1057        TESTINST3("sxtab16 r0, r1, r2, ROR #8", 0x31415927, 0x27182819,
1058                  r0, r1, r2, 0);
1059        TESTINST3("sxtab16 r0, r1, r2, ROR #0", 0x31415927, 0x27182819,
1060                  r0, r1, r2, 0);
1061
1062        TESTINST3("sxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182899,
1063                  r0, r1, r2, 0);
1064        TESTINST3("sxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182899,
1065                  r0, r1, r2, 0);
1066        TESTINST3("sxtab16 r0, r1, r2, ROR #8", 0x31415927, 0x27182899,
1067                  r0, r1, r2, 0);
1068        TESTINST3("sxtab16 r0, r1, r2, ROR #0", 0x31415927, 0x27182899,
1069                  r0, r1, r2, 0);
1070#endif
1071	printf("------------ UXTAB ------------\n");
1072        TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182819,
1073                  r0, r1, r2, 0);
1074        TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182819,
1075                  r0, r1, r2, 0);
1076        TESTINST3("uxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182819,
1077                  r0, r1, r2, 0);
1078        TESTINST3("uxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182819,
1079                  r0, r1, r2, 0);
1080
1081        TESTINST3("uxtab r0, r1, r2, ROR #24", 0x31415927, 0x27182899,
1082                  r0, r1, r2, 0);
1083        TESTINST3("uxtab r0, r1, r2, ROR #16", 0x31415927, 0x27182899,
1084                  r0, r1, r2, 0);
1085        TESTINST3("uxtab r0, r1, r2, ROR #8", 0x31415927, 0x27182899,
1086                  r0, r1, r2, 0);
1087        TESTINST3("uxtab r0, r1, r2, ROR #0", 0x31415927, 0x27182899,
1088                  r0, r1, r2, 0);
1089#if 0
1090	printf("------------ UXTAB16 ------------\n");
1091        TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182819,
1092                  r0, r1, r2, 0);
1093        TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182819,
1094                  r0, r1, r2, 0);
1095        TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x31415927, 0x27182819,
1096                  r0, r1, r2, 0);
1097        TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x31415927, 0x27182819,
1098                  r0, r1, r2, 0);
1099
1100        TESTINST3("uxtab16 r0, r1, r2, ROR #24", 0x31415927, 0x27182899,
1101                  r0, r1, r2, 0);
1102        TESTINST3("uxtab16 r0, r1, r2, ROR #16", 0x31415927, 0x27182899,
1103                  r0, r1, r2, 0);
1104        TESTINST3("uxtab16 r0, r1, r2, ROR #8", 0x31415927, 0x27182899,
1105                  r0, r1, r2, 0);
1106        TESTINST3("uxtab16 r0, r1, r2, ROR #0", 0x31415927, 0x27182899,
1107                  r0, r1, r2, 0);
1108#endif
1109	printf("------------ SXTAH ------------\n");
1110        TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819,
1111                  r0, r1, r2, 0);
1112        TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819,
1113                  r0, r1, r2, 0);
1114        TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819,
1115                  r0, r1, r2, 0);
1116        TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819,
1117                  r0, r1, r2, 0);
1118
1119        TESTINST3("sxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819,
1120                  r0, r1, r2, 0);
1121        TESTINST3("sxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819,
1122                  r0, r1, r2, 0);
1123        TESTINST3("sxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819,
1124                  r0, r1, r2, 0);
1125        TESTINST3("sxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819,
1126                  r0, r1, r2, 0);
1127
1128	printf("------------ UXTAH ------------\n");
1129        TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27182819,
1130                  r0, r1, r2, 0);
1131        TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27182819,
1132                  r0, r1, r2, 0);
1133        TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27182819,
1134                  r0, r1, r2, 0);
1135        TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27182819,
1136                  r0, r1, r2, 0);
1137
1138        TESTINST3("uxtah r0, r1, r2, ROR #24", 0x31415927, 0x27189819,
1139                  r0, r1, r2, 0);
1140        TESTINST3("uxtah r0, r1, r2, ROR #16", 0x31415927, 0x27189819,
1141                  r0, r1, r2, 0);
1142        TESTINST3("uxtah r0, r1, r2, ROR #8 ", 0x31415927, 0x27189819,
1143                  r0, r1, r2, 0);
1144        TESTINST3("uxtah r0, r1, r2, ROR #0 ", 0x31415927, 0x27189819,
1145                  r0, r1, r2, 0);
1146#if 0
1147	printf("------------ PLD/PLDW (begin) ------------\n");
1148        /* These don't have any effect on the architected state, so,
1149           uh, there's no result values to check.  Just _do_ some of
1150           them and check Valgrind's instruction decoder eats them up
1151           without complaining. */
1152        { int alocal;
1153          printf("pld  reg +/- imm12  cases\n");
1154          __asm__ __volatile__( "pld [%0, #128]" : :/*in*/"r"(&alocal) );
1155          __asm__ __volatile__( "pld [%0, #-128]" : :/*in*/"r"(&alocal) );
1156          __asm__ __volatile__( "pld [r15, #-128]" : :/*in*/"r"(&alocal) );
1157
1158          // apparently pldw is v7 only
1159          //__asm__ __volatile__( "pldw [%0, #128]" : :/*in*/"r"(&alocal) );
1160          //__asm__ __volatile__( "pldw [%0, #-128]" : :/*in*/"r"(&alocal) );
1161          //__asm__ __volatile__( "pldw [r15, #128]" : :/*in*/"r"(&alocal) );
1162
1163          printf("pld  reg +/- shifted reg  cases\n");
1164          __asm__ __volatile__( "pld [%0, %1]" : : /*in*/"r"(&alocal), "r"(0) );
1165          __asm__ __volatile__( "pld [%0, %1, LSL #1]" : : /*in*/"r"(&alocal), "r"(0) );
1166#if 0
1167          __asm__ __volatile__( "pld [%0, %1, LSR #1]" : : /*in*/"r"(&alocal), "r"(0) );
1168          __asm__ __volatile__( "pld [%0, %1, ASR #1]" : : /*in*/"r"(&alocal), "r"(0) );
1169          __asm__ __volatile__( "pld [%0, %1, ROR #1]" : : /*in*/"r"(&alocal), "r"(0) );
1170          __asm__ __volatile__( "pld [%0, %1, RRX]" : : /*in*/"r"(&alocal), "r"(0) );
1171#endif
1172        }
1173	printf("------------ PLD/PLDW (done) ------------\n");
1174#endif
1175
1176	return 0;
1177}
1178
1179
1180////////////////////////////////////////////////////////////
1181////////////////////////////////////////////////////////////
1182///////////////////////////////////////////////////////////
1183///////////////////////////////////////////////////////////
1184
1185
1186int main ( void )
1187{
1188   // 16 bit instructions
1189
1190   printf("CMP-16 0x10a\n");
1191   TESTCARRY
1192   TESTINST3("cmp r3, r6", 0,          0,           r6/*fake*/, r3, r6, 0);
1193   TESTINST3("cmp r3, r6", 1,          0,           r6/*fake*/, r3, r6, 0);
1194   TESTINST3("cmp r3, r6", 0,          1,           r6/*fake*/, r3, r6, 0);
1195   TESTINST3("cmp r3, r6", -1,         0,           r6/*fake*/, r3, r6, 0);
1196   TESTINST3("cmp r3, r6", 0,          -1,          r6/*fake*/, r3, r6, 0);
1197   TESTINST3("cmp r3, r6", 0,          0x80000000,  r6/*fake*/, r3, r6, 0);
1198   TESTINST3("cmp r3, r6", 0x80000000, 0,           r6/*fake*/, r3, r6, 0);
1199   TESTCARRYEND
1200
1201   printf("CMN-16 0x10a\n");
1202   TESTCARRY
1203   TESTINST3("cmn r3, r6", 0,          0,           r6/*fake*/, r3, r6, 0);
1204   TESTINST3("cmn r3, r6", 1,          0,           r6/*fake*/, r3, r6, 0);
1205   TESTINST3("cmn r3, r6", 0,          1,           r6/*fake*/, r3, r6, 0);
1206   TESTINST3("cmn r3, r6", -1,         0,           r6/*fake*/, r3, r6, 0);
1207   TESTINST3("cmn r3, r6", 0,          -1,          r6/*fake*/, r3, r6, 0);
1208   TESTINST3("cmn r3, r6", 0,          0x80000000,  r6/*fake*/, r3, r6, 0);
1209   TESTINST3("cmn r3, r6", 0x80000000, 0,           r6/*fake*/, r3, r6, 0);
1210   TESTCARRYEND
1211
1212   printf("TST-16 0x108\n");
1213   TESTCARRY
1214   TESTINST3("tst r3, r6", 0,          0,           r6/*fake*/, r3, r6, cv);
1215   TESTINST3("tst r3, r6", 1,          0,           r6/*fake*/, r3, r6, cv);
1216   TESTINST3("tst r3, r6", 0,          1,           r6/*fake*/, r3, r6, cv);
1217   TESTINST3("tst r3, r6", 1,          1,           r6/*fake*/, r3, r6, cv);
1218   TESTINST3("tst r3, r6", -1,         0,           r6/*fake*/, r3, r6, cv);
1219   TESTINST3("tst r3, r6", 0,          -1,          r6/*fake*/, r3, r6, cv);
1220   TESTINST3("tst r3, r6", -1,         -1,          r6/*fake*/, r3, r6, cv);
1221   TESTCARRYEND
1222
1223   printf("NEGS-16 0x109\n");
1224   TESTINST2("negs r0, r1", 1, r0, r1, 0);
1225   TESTCARRY
1226   TESTINST2("negs r0, r1", 1, r0, r1, cv);
1227   TESTINST2("negs r0, r1", 0, r0, r1, cv);
1228   TESTINST2("negs r0, r1", 0x80000000, r0, r1, cv);
1229   TESTINST2("negs r0, r1", 0x80000001, r0, r1, cv);
1230   TESTINST2("negs r0, r1", 0xFFFFFFFF, r0, r1, cv);
1231   TESTINST2("negs r0, r1", 0x7FFFFFFF, r0, r1, cv);
1232   TESTCARRYEND
1233
1234   printf("MVNS-16 0x10F\n");
1235   TESTINST2("mvns r0, r1", 1, r0, r1, 0);
1236   TESTCARRY
1237   TESTINST2("mvns r0, r1", 1, r0, r1, cv);
1238   TESTINST2("mvns r0, r1", 0, r0, r1, cv);
1239   TESTINST2("mvns r0, r1", 0x80000000, r0, r1, cv);
1240   TESTINST2("mvns r0, r1", 0x80000001, r0, r1, cv);
1241   TESTINST2("mvns r0, r1", 0xFFFFFFFF, r0, r1, cv);
1242   TESTINST2("mvns r0, r1", 0x7FFFFFFF, r0, r1, cv);
1243   TESTCARRYEND
1244
1245   printf("ORRS-16 0x10C\n");
1246   TESTCARRY
1247   TESTINST2x("orrs r1, r2", 0x31415927, 0x27181728, r1, r2, cv);
1248   TESTINST2x("orrs r1, r2", 0x00000000, 0x00000000, r1, r2, cv);
1249   TESTINST2x("orrs r1, r2", 0x00000001, 0x00000000, r1, r2, cv);
1250   TESTINST2x("orrs r1, r2", 0x00000000, 0x00000001, r1, r2, cv);
1251   TESTINST2x("orrs r1, r2", 0x80000000, 0x00000000, r1, r2, cv);
1252   TESTINST2x("orrs r1, r2", 0x00000000, 0x80000000, r1, r2, cv);
1253   TESTINST2x("orrs r1, r2", 0x80000000, 0x80000000, r1, r2, cv);
1254   TESTCARRYEND
1255
1256   printf("ANDS-16 0x100\n");
1257   TESTCARRY
1258   TESTINST2x("ands r1, r2", 0x31415927, 0x27181728, r1, r2, cv);
1259   TESTINST2x("ands r1, r2", 0x00000000, 0x00000000, r1, r2, cv);
1260   TESTINST2x("ands r1, r2", 0x00000001, 0x00000000, r1, r2, cv);
1261   TESTINST2x("ands r1, r2", 0x00000000, 0x00000001, r1, r2, cv);
1262   TESTINST2x("ands r1, r2", 0x80000000, 0x00000000, r1, r2, cv);
1263   TESTINST2x("ands r1, r2", 0x00000000, 0x80000000, r1, r2, cv);
1264   TESTINST2x("ands r1, r2", 0x80000000, 0x80000000, r1, r2, cv);
1265   TESTCARRYEND
1266
1267   printf("EORS-16 0x101\n");
1268   TESTCARRY
1269   TESTINST2x("eors r1, r2", 0x31415927, 0x27181728, r1, r2, cv);
1270   TESTINST2x("eors r1, r2", 0x00000000, 0x00000000, r1, r2, cv);
1271   TESTINST2x("eors r1, r2", 0x00000001, 0x00000000, r1, r2, cv);
1272   TESTINST2x("eors r1, r2", 0x00000000, 0x00000001, r1, r2, cv);
1273   TESTINST2x("eors r1, r2", 0x80000000, 0x00000000, r1, r2, cv);
1274   TESTINST2x("eors r1, r2", 0x00000000, 0x80000000, r1, r2, cv);
1275   TESTINST2x("eors r1, r2", 0x80000000, 0x80000000, r1, r2, cv);
1276   TESTCARRYEND
1277
1278   printf("MULS-16 0x10d\n");
1279   TESTCARRY
1280   TESTINST2x("muls r1, r2", 0x31415927, 0x27181728, r1, r2, cv);
1281   TESTINST2x("muls r1, r2", 0x00000000, 0x00000000, r1, r2, cv);
1282   TESTINST2x("muls r1, r2", 0x00000001, 0x00000000, r1, r2, cv);
1283   TESTINST2x("muls r1, r2", 0x00000000, 0x00000001, r1, r2, cv);
1284   TESTINST2x("muls r1, r2", 0x80000000, 0x00000000, r1, r2, cv);
1285   TESTINST2x("muls r1, r2", 0x00000000, 0x80000000, r1, r2, cv);
1286   TESTINST2x("muls r1, r2", 0x80000000, 0x80000000, r1, r2, cv);
1287   TESTCARRYEND
1288
1289   printf("BICS-16 0x10E\n");
1290   TESTCARRY
1291   TESTINST2x("bics r1, r2", 0x31415927, 0x27181728, r1, r2, cv);
1292   TESTINST2x("bics r1, r2", 0x00000000, 0x00000000, r1, r2, cv);
1293   TESTINST2x("bics r1, r2", 0x00000001, 0x00000000, r1, r2, cv);
1294   TESTINST2x("bics r1, r2", 0x00000000, 0x00000001, r1, r2, cv);
1295   TESTINST2x("bics r1, r2", 0x80000000, 0x00000000, r1, r2, cv);
1296   TESTINST2x("bics r1, r2", 0x00000000, 0x80000000, r1, r2, cv);
1297   TESTINST2x("bics r1, r2", 0x80000000, 0x80000000, r1, r2, cv);
1298   TESTCARRYEND
1299
1300   printf("ADCS-16 0x105\n");
1301   TESTCARRY
1302   TESTINST2x("adcs r1, r2", 0x31415927, 0x27181728, r1, r2, cv);
1303   TESTINST2x("adcs r1, r2", 0x00000000, 0x00000000, r1, r2, cv);
1304   TESTINST2x("adcs r1, r2", 0x00000001, 0x00000000, r1, r2, cv);
1305   TESTINST2x("adcs r1, r2", 0x00000000, 0x00000001, r1, r2, cv);
1306   TESTINST2x("adcs r1, r2", 0x80000000, 0x00000000, r1, r2, cv);
1307   TESTINST2x("adcs r1, r2", 0x00000000, 0x80000000, r1, r2, cv);
1308   TESTINST2x("adcs r1, r2", 0x80000000, 0x80000000, r1, r2, cv);
1309   TESTCARRYEND
1310
1311   printf("SBCS-16 0x100\n");
1312   TESTCARRY
1313   TESTINST2x("sbcs r1, r2", 0x31415927, 0x27181728, r1, r2, cv);
1314   TESTINST2x("sbcs r1, r2", 0x00000000, 0x00000000, r1, r2, cv);
1315   TESTINST2x("sbcs r1, r2", 0x00000001, 0x00000000, r1, r2, cv);
1316   TESTINST2x("sbcs r1, r2", 0x00000000, 0x00000001, r1, r2, cv);
1317   TESTINST2x("sbcs r1, r2", 0x80000000, 0x00000000, r1, r2, cv);
1318   TESTINST2x("sbcs r1, r2", 0x00000000, 0x80000000, r1, r2, cv);
1319   TESTINST2x("sbcs r1, r2", 0x80000000, 0x80000000, r1, r2, cv);
1320   TESTCARRYEND
1321
1322   printf("UXTB-16 0x2CB\n");
1323   TESTCARRY
1324   TESTINST2("uxtb r1, r2", 0x31415927, r1, r2, cv);
1325   TESTINST2("uxtb r1, r2", 0x31415997, r1, r2, cv);
1326   TESTCARRYEND
1327
1328   printf("SXTB-16 0x2C9\n");
1329   TESTCARRY
1330   TESTINST2("sxtb r1, r2", 0x31415927, r1, r2, cv);
1331   TESTINST2("sxtb r1, r2", 0x31415997, r1, r2, cv);
1332   TESTCARRYEND
1333
1334   printf("UXTH-16 0x2CA\n");
1335   TESTCARRY
1336   TESTINST2("uxth r1, r2", 0x31415927, r1, r2, cv);
1337   TESTINST2("uxth r1, r2", 0x31419597, r1, r2, cv);
1338   TESTCARRYEND
1339
1340   printf("SXTH-16 0x2C8\n");
1341   TESTCARRY
1342   TESTINST2("sxth r1, r2", 0x31415927, r1, r2, cv);
1343   TESTINST2("sxth r1, r2", 0x31419597, r1, r2, cv);
1344   TESTCARRYEND
1345
1346   printf("LSLS-16 0x102\n");
1347   TESTCARRY
1348   TESTINST2x("lsls r1, r2", 0x31415927, 0x00000000, r1, r2, cv);
1349   TESTINST2x("lsls r1, r2", 0x31415927, 0x00000001, r1, r2, cv);
1350   TESTINST2x("lsls r1, r2", 0x31415927, 0x00000002, r1, r2, cv);
1351   TESTINST2x("lsls r1, r2", 0x31415927, 0x0000000F, r1, r2, cv);
1352   TESTINST2x("lsls r1, r2", 0x31415927, 0x00000010, r1, r2, cv);
1353   TESTINST2x("lsls r1, r2", 0x31415927, 0x0000001F, r1, r2, cv);
1354   TESTINST2x("lsls r1, r2", 0x31415927, 0x00000020, r1, r2, cv);
1355   TESTINST2x("lsls r1, r2", 0x31415927, 0x00000021, r1, r2, cv);
1356   TESTCARRYEND
1357
1358   printf("LSRS-16 0x103\n");
1359   TESTCARRY
1360   TESTINST2x("lsrs r1, r2", 0x31415927, 0x00000000, r1, r2, cv);
1361   TESTINST2x("lsrs r1, r2", 0x31415927, 0x00000001, r1, r2, cv);
1362   TESTINST2x("lsrs r1, r2", 0x31415927, 0x00000002, r1, r2, cv);
1363   TESTINST2x("lsrs r1, r2", 0x31415927, 0x0000000F, r1, r2, cv);
1364   TESTINST2x("lsrs r1, r2", 0x31415927, 0x00000010, r1, r2, cv);
1365   TESTINST2x("lsrs r1, r2", 0x31415927, 0x0000001F, r1, r2, cv);
1366   TESTINST2x("lsrs r1, r2", 0x31415927, 0x00000020, r1, r2, cv);
1367   TESTINST2x("lsrs r1, r2", 0x31415927, 0x00000021, r1, r2, cv);
1368   TESTCARRYEND
1369
1370   printf("ASRS-16 0x104\n");
1371   TESTCARRY
1372   TESTINST2x("asrs r1, r2", 0x31415927, 0x00000000, r1, r2, cv);
1373   TESTINST2x("asrs r1, r2", 0x91415927, 0x00000001, r1, r2, cv);
1374   TESTINST2x("asrs r1, r2", 0x31415927, 0x00000002, r1, r2, cv);
1375   TESTINST2x("asrs r1, r2", 0x91415927, 0x0000000F, r1, r2, cv);
1376   TESTINST2x("asrs r1, r2", 0x31415927, 0x00000010, r1, r2, cv);
1377   TESTINST2x("asrs r1, r2", 0x91415927, 0x0000001F, r1, r2, cv);
1378   TESTINST2x("asrs r1, r2", 0x31415927, 0x00000020, r1, r2, cv);
1379   TESTINST2x("asrs r1, r2", 0x91415927, 0x00000021, r1, r2, cv);
1380   TESTCARRYEND
1381
1382   printf("RORS-16 0x107\n");
1383   TESTCARRY
1384   TESTINST2x("rors r1, r2", 0x31415927, 0x00000000, r1, r2, cv);
1385   TESTINST2x("rors r1, r2", 0x31415927, 0x00000001, r1, r2, cv);
1386   TESTINST2x("rors r1, r2", 0x31415927, 0x00000002, r1, r2, cv);
1387   TESTINST2x("rors r1, r2", 0x31415927, 0x0000000F, r1, r2, cv);
1388   TESTINST2x("rors r1, r2", 0x31415927, 0x00000010, r1, r2, cv);
1389   TESTINST2x("rors r1, r2", 0x31415927, 0x0000001F, r1, r2, cv);
1390   TESTINST2x("rors r1, r2", 0x31415927, 0x00000020, r1, r2, cv);
1391   TESTINST2x("rors r1, r2", 0x31415927, 0x00000021, r1, r2, cv);
1392   TESTCARRYEND
1393
1394   printf("ADD(HI)-16\n");
1395   TESTCARRY
1396   TESTINST2x("add r5, r12", 0x31415927, 0x12345678, r5, r12, cv);
1397   TESTINST2x("add r4, r9 ", 0x31415927, 0x12345678, r4, r9,  cv);
1398   TESTCARRYEND
1399
1400   printf("CMP(HI)-16 0x10a\n");
1401   TESTCARRY
1402   TESTINST3("cmp r5, r12", 0,          0,           r12/*fake*/, r5, r12, 0);
1403   TESTINST3("cmp r5, r12", 1,          0,           r12/*fake*/, r5, r12, 0);
1404   TESTINST3("cmp r5, r12", 0,          1,           r12/*fake*/, r5, r12, 0);
1405   TESTINST3("cmp r5, r12", -1,         0,           r12/*fake*/, r5, r12, 0);
1406   TESTINST3("cmp r5, r12", 0,          -1,          r12/*fake*/, r5, r12, 0);
1407   TESTINST3("cmp r5, r12", 0,          0x80000000,  r12/*fake*/, r5, r12, 0);
1408   TESTINST3("cmp r5, r12", 0x80000000, 0,           r12/*fake*/, r5, r12, 0);
1409   TESTCARRYEND
1410
1411   printf("MOV(HI)-16\n");
1412   TESTCARRY
1413   TESTINST2x("mov r5, r12", 0x31415927, 0x12345678, r5, r12, cv);
1414   TESTINST2x("mov r4, r9 ", 0x31415927, 0x12345678, r4, r9,  cv);
1415   TESTCARRYEND
1416
1417   printf("ADDS-16 Rd, Rn, #imm3\n");
1418   TESTCARRY
1419   TESTINST2x("adds r1, r2, #1", 0x31415927, 0x27181728, r1, r2, cv);
1420   TESTINST2x("adds r1, r2, #7", 0x31415927, 0x97181728, r1, r2, cv);
1421   TESTCARRYEND
1422
1423   printf("ADDS-16 Rd, Rn, Rm\n");
1424   TESTCARRY
1425   TESTINST3("adds r1, r2, r3", 0x31415927, 0x27181728, r1, r2, r3, cv);
1426   TESTINST3("adds r1, r2, r3", 0x31415927, 0x97181728, r1, r2, r3, cv);
1427   TESTINST3("adds r1, r2, r3", 0,          0,          r1, r2, r3, cv);
1428   TESTINST3("adds r1, r2, r3", 1,          0,          r1, r2, r3, cv);
1429   TESTINST3("adds r1, r2, r3", 0,          1,          r1, r2, r3, cv);
1430   TESTINST3("adds r1, r2, r3", -1,         0,          r1, r2, r3, cv);
1431   TESTINST3("adds r1, r2, r3", 0,          -1,         r1, r2, r3, cv);
1432   TESTINST3("adds r1, r2, r3", 0,          0x80000000, r1, r2, r3, cv);
1433   TESTINST3("adds r1, r2, r3", 0x80000000, 0,          r1, r2, r3, cv);
1434   TESTINST3("adds r1, r2, r3", 0x80000000, 0x80000000, r1, r2, r3, cv);
1435   TESTINST3("adds r1, r2, r3", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
1436   TESTINST3("adds r1, r2, r3", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
1437   TESTINST3("adds r1, r2, r3", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
1438   TESTCARRYEND
1439
1440   printf("SUBS-16 Rd, Rn, Rm\n");
1441   TESTCARRY
1442   TESTINST3("subs r1, r2, r3", 0x31415927, 0x27181728, r1, r2, r3, cv);
1443   TESTINST3("subs r1, r2, r3", 0x31415927, 0x97181728, r1, r2, r3, cv);
1444   TESTINST3("subs r1, r2, r3", 0,          0,          r1, r2, r3, cv);
1445   TESTINST3("subs r1, r2, r3", 1,          0,          r1, r2, r3, cv);
1446   TESTINST3("subs r1, r2, r3", 0,          1,          r1, r2, r3, cv);
1447   TESTINST3("subs r1, r2, r3", -1,         0,          r1, r2, r3, cv);
1448   TESTINST3("subs r1, r2, r3", 0,          -1,         r1, r2, r3, cv);
1449   TESTINST3("subs r1, r2, r3", 0,          0x80000000, r1, r2, r3, cv);
1450   TESTINST3("subs r1, r2, r3", 0x80000000, 0,          r1, r2, r3, cv);
1451   TESTINST3("subs r1, r2, r3", 0x80000000, 0x80000000, r1, r2, r3, cv);
1452   TESTINST3("subs r1, r2, r3", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
1453   TESTINST3("subs r1, r2, r3", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
1454   TESTINST3("subs r1, r2, r3", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
1455   TESTCARRYEND
1456
1457   printf("ADDS-16 Rn, #uimm8\n");
1458   TESTCARRY
1459   TESTINST1x("adds r1, #0  ", 0x31415927, r1, cv);
1460   TESTINST1x("adds r1, #255", 0x31415927, r1, cv);
1461   TESTINST1x("adds r1, #0  ", 0x91415927, r1, cv);
1462   TESTINST1x("adds r1, #255", 0x91415927, r1, cv);
1463   TESTCARRYEND
1464
1465   printf("SUBS-16 Rn, #uimm8\n");
1466   TESTCARRY
1467   TESTINST1x("subs r1, #0  ", 0x31415927, r1, cv);
1468   TESTINST1x("subs r1, #255", 0x31415927, r1, cv);
1469   TESTINST1x("subs r1, #0  ", 0x91415927, r1, cv);
1470   TESTINST1x("subs r1, #255", 0x91415927, r1, cv);
1471   TESTCARRYEND
1472
1473   printf("CMP-16 Rn, #uimm8\n");
1474   TESTCARRY
1475   TESTINST1x("cmp r1, #0x80  ", 0x00000080, r1, cv);
1476   TESTINST1x("cmp r1, #0x7f  ", 0x00000080, r1, cv);
1477   TESTINST1x("cmp r1, #0x81  ", 0x00000080, r1, cv);
1478   TESTINST1x("cmp r1, #0x80  ", 0xffffff80, r1, cv);
1479   TESTINST1x("cmp r1, #0x7f  ", 0xffffff80, r1, cv);
1480   TESTINST1x("cmp r1, #0x81  ", 0xffffff80, r1, cv);
1481   TESTINST1x("cmp r1, #0x01  ", 0x80000000, r1, cv);
1482   TESTCARRYEND
1483
1484   printf("MOVS-16 Rn, #uimm8\n");
1485   TESTCARRY
1486   TESTINST1x("movs r1, #0   ", 0x31415927, r1, cv);
1487   TESTINST1x("movs r1, #0x7f", 0x31415927, r1, cv);
1488   TESTINST1x("movs r1, #0x80", 0x31415927, r1, cv);
1489   TESTINST1x("movs r1, #0x81", 0x31415927, r1, cv);
1490   TESTINST1x("movs r1, #0xff", 0x31415927, r1, cv);
1491   TESTCARRYEND
1492
1493   printf("LSLS-16 Rd, Rm, imm5\n");
1494   TESTCARRY
1495   TESTINST2("lsls r1, r2, #0   ", 0x31415927, r1, r2, cv);
1496   TESTINST2("lsls r1, r2, #1   ", 0x31415927, r1, r2, cv);
1497   TESTINST2("lsls r1, r2, #2   ", 0x31415927, r1, r2, cv);
1498   TESTINST2("lsls r1, r2, #0xF ", 0x31415927, r1, r2, cv);
1499   TESTINST2("lsls r1, r2, #0x10", 0x31415927, r1, r2, cv);
1500   TESTINST2("lsls r1, r2, #0x1F", 0x31415927, r1, r2, cv);
1501   TESTCARRYEND
1502
1503   printf("LSRS-16 Rd, Rm, imm5\n");
1504   TESTCARRY
1505   TESTINST2("lsrs r1, r2, #0   ", 0x31415927, r1, r2, cv);
1506   TESTINST2("lsrs r1, r2, #1   ", 0x31415927, r1, r2, cv);
1507   TESTINST2("lsrs r1, r2, #2   ", 0x31415927, r1, r2, cv);
1508   TESTINST2("lsrs r1, r2, #0xF ", 0x31415927, r1, r2, cv);
1509   TESTINST2("lsrs r1, r2, #0x10", 0x31415927, r1, r2, cv);
1510   TESTINST2("lsrs r1, r2, #0x1F", 0x31415927, r1, r2, cv);
1511   TESTCARRYEND
1512
1513   printf("ASRS-16 Rd, Rm, imm5\n");
1514   TESTCARRY
1515   TESTINST2("asrs r1, r2, #0   ", 0x31415927, r1, r2, cv);
1516   TESTINST2("asrs r1, r2, #1   ", 0x91415927, r1, r2, cv);
1517   TESTINST2("asrs r1, r2, #2   ", 0x31415927, r1, r2, cv);
1518   TESTINST2("asrs r1, r2, #0xF ", 0x91415927, r1, r2, cv);
1519   TESTINST2("asrs r1, r2, #0x10", 0x31415927, r1, r2, cv);
1520   TESTINST2("asrs r1, r2, #0x1F", 0x91415927, r1, r2, cv);
1521   TESTCARRYEND
1522
1523   // 32 bit instructions
1524
1525   printf("(T3) ADD{S}.W Rd, Rn, #constT [allegedly]\n");
1526   TESTCARRY
1527   TESTINST2("adds.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1528   TESTINST2("adds.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1529   TESTINST2("adds.w r1, r2, #255       ", 0,          r1, r2, cv);
1530   TESTINST2("adds.w r1, r2, #0         ", 1,          r1, r2, cv);
1531   TESTINST2("adds.w r1, r2, #1         ", 0,          r1, r2, cv);
1532   TESTINST2("adds.w r1, r2, #0         ", -1,         r1, r2, cv);
1533   TESTINST2("adds.w r1, r2, #-1        ", 0,          r1, r2, cv);
1534   TESTINST2("adds.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1535   TESTINST2("adds.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1536   TESTINST2("adds.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1537   TESTINST2("adds.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1538   TESTINST2("adds.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1539   TESTINST2("adds.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1540   TESTINST2("add.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1541   TESTINST2("add.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1542   TESTINST2("add.w  r1, r2, #255       ", 0,          r1, r2, cv);
1543   TESTINST2("add.w  r1, r2, #0         ", 1,          r1, r2, cv);
1544   TESTINST2("add.w  r1, r2, #1         ", 0,          r1, r2, cv);
1545   TESTINST2("add.w  r1, r2, #0         ", -1,         r1, r2, cv);
1546   TESTINST2("add.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1547   TESTINST2("add.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1548   TESTINST2("add.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1549   TESTINST2("add.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1550   TESTINST2("add.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1551   TESTINST2("add.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1552   TESTINST2("add.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1553   TESTCARRYEND
1554
1555   printf("(T4) ADDW Rd, Rn, #uimm12\n");
1556   TESTCARRY
1557   TESTINST2("addw r1, r2, #0x000", 0x31415927, r1, r2, cv);
1558   TESTINST2("addw r1, r2, #0x000", 0x91415927, r1, r2, cv);
1559   TESTINST2("addw r1, r2, #0xABC", 0x31415927, r1, r2, cv);
1560   TESTINST2("addw r1, r2, #0xABC", 0x91415927, r1, r2, cv);
1561   TESTINST2("addw r1, r2, #0xFFF", 0x31415927, r1, r2, cv);
1562   TESTINST2("addw r1, r2, #0xFFF", 0x91415927, r1, r2, cv);
1563   TESTCARRYEND
1564
1565   printf("(T3) CMP.W Rn, #constT [allegedly]\n");
1566   TESTCARRY
1567   TESTINST1x("cmp.w r1, #0xffffffff", 0x31415927, r1, cv);
1568   TESTINST1x("cmp.w r1, #0xee00ee00", 0x31415927, r1, cv);
1569   TESTINST1x("cmp.w r1, #255       ", 0,          r1, cv);
1570   TESTINST1x("cmp.w r1, #0         ", 1,          r1, cv);
1571   TESTINST1x("cmp.w r1, #1         ", 0,          r1, cv);
1572   TESTINST1x("cmp.w r1, #0         ", -1,         r1, cv);
1573   TESTINST1x("cmp.w r1, #-1        ", 0,          r1, cv);
1574   TESTINST1x("cmp.w r1, #0x80000000", 0,          r1, cv);
1575   TESTINST1x("cmp.w r1, #0         ", 0x80000000, r1, cv);
1576   TESTINST1x("cmp.w r1, #0x80000000", 0x80000000, r1, cv);
1577   TESTINST1x("cmp.w r1, #0x80000000", 0x7fffffff, r1, cv);
1578   TESTINST1x("cmp.w r1, #0xff000000", 0x80000000, r1, cv);
1579   TESTINST1x("cmp.w r1, #0x0dd00000", 0x7fffffff, r1, cv);
1580   TESTCARRYEND
1581
1582   printf("(T3) CMN.W Rn, #constT [allegedly]\n");
1583   TESTCARRY
1584   TESTINST1x("cmn.w r1, #0xffffffff", 0x31415927, r1, cv);
1585   TESTINST1x("cmn.w r1, #0xee00ee00", 0x31415927, r1, cv);
1586   TESTINST1x("cmn.w r1, #255       ", 0,          r1, cv);
1587   TESTINST1x("cmn.w r1, #0         ", 1,          r1, cv);
1588   TESTINST1x("cmn.w r1, #1         ", 0,          r1, cv);
1589   TESTINST1x("cmn.w r1, #0         ", -1,         r1, cv);
1590   TESTINST1x("cmn.w r1, #-1        ", 0,          r1, cv);
1591   TESTINST1x("cmn.w r1, #0x80000000", 0,          r1, cv);
1592   TESTINST1x("cmn.w r1, #0         ", 0x80000000, r1, cv);
1593   TESTINST1x("cmn.w r1, #0x80000000", 0x80000000, r1, cv);
1594   TESTINST1x("cmn.w r1, #0x80000000", 0x7fffffff, r1, cv);
1595   TESTINST1x("cmn.w r1, #0xff000000", 0x80000000, r1, cv);
1596   TESTINST1x("cmn.w r1, #0x0dd00000", 0x7fffffff, r1, cv);
1597   TESTCARRYEND
1598
1599   printf("(T3) TST.W Rn, #constT [allegedly]\n");
1600   TESTCARRY
1601   TESTINST1x("tst.w r1, #0xffffffff", 0x31415927, r1, cv);
1602   TESTINST1x("tst.w r1, #0xee00ee00", 0x31415927, r1, cv);
1603   TESTINST1x("tst.w r1, #255       ", 0,          r1, cv);
1604   TESTINST1x("tst.w r1, #0         ", 1,          r1, cv);
1605   TESTINST1x("tst.w r1, #1         ", 0,          r1, cv);
1606   TESTINST1x("tst.w r1, #0         ", -1,         r1, cv);
1607   TESTINST1x("tst.w r1, #-1        ", 0,          r1, cv);
1608   TESTINST1x("tst.w r1, #0x80000000", 0,          r1, cv);
1609   TESTINST1x("tst.w r1, #0         ", 0x80000000, r1, cv);
1610   TESTINST1x("tst.w r1, #0x80000000", 0x80000000, r1, cv);
1611   TESTINST1x("tst.w r1, #0x80000000", 0x7fffffff, r1, cv);
1612   TESTINST1x("tst.w r1, #0xff000000", 0x80000000, r1, cv);
1613   TESTINST1x("tst.w r1, #0x0dd00000", 0x7fffffff, r1, cv);
1614   TESTCARRYEND
1615
1616   printf("(T3) TEQ.W Rn, #constT [allegedly]\n");
1617   TESTCARRY
1618   TESTINST1x("teq.w r1, #0xffffffff", 0x31415927, r1, cv);
1619   TESTINST1x("teq.w r1, #0xee00ee00", 0x31415927, r1, cv);
1620   TESTINST1x("teq.w r1, #255       ", 0,          r1, cv);
1621   TESTINST1x("teq.w r1, #0         ", 1,          r1, cv);
1622   TESTINST1x("teq.w r1, #1         ", 0,          r1, cv);
1623   TESTINST1x("teq.w r1, #0         ", -1,         r1, cv);
1624   TESTINST1x("teq.w r1, #-1        ", 0,          r1, cv);
1625   TESTINST1x("teq.w r1, #0x80000000", 0,          r1, cv);
1626   TESTINST1x("teq.w r1, #0         ", 0x80000000, r1, cv);
1627   TESTINST1x("teq.w r1, #0x80000000", 0x80000000, r1, cv);
1628   TESTINST1x("teq.w r1, #0x80000000", 0x7fffffff, r1, cv);
1629   TESTINST1x("teq.w r1, #0xff000000", 0x80000000, r1, cv);
1630   TESTINST1x("teq.w r1, #0x0dd00000", 0x7fffffff, r1, cv);
1631   TESTCARRYEND
1632
1633   printf("(T3) SUB{S}.W Rd, Rn, #constT [allegedly]\n");
1634   TESTCARRY
1635   TESTINST2("subs.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1636   TESTINST2("subs.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1637   TESTINST2("subs.w r1, r2, #255       ", 0,          r1, r2, cv);
1638   TESTINST2("subs.w r1, r2, #0         ", 1,          r1, r2, cv);
1639   TESTINST2("subs.w r1, r2, #1         ", 0,          r1, r2, cv);
1640   TESTINST2("subs.w r1, r2, #0         ", -1,         r1, r2, cv);
1641   TESTINST2("subs.w r1, r2, #-1        ", 0,          r1, r2, cv);
1642   TESTINST2("subs.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1643   TESTINST2("subs.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1644   TESTINST2("subs.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1645   TESTINST2("subs.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1646   TESTINST2("subs.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1647   TESTINST2("subs.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1648   TESTINST2("sub.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1649   TESTINST2("sub.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1650   TESTINST2("sub.w  r1, r2, #255       ", 0,          r1, r2, cv);
1651   TESTINST2("sub.w  r1, r2, #0         ", 1,          r1, r2, cv);
1652   TESTINST2("sub.w  r1, r2, #1         ", 0,          r1, r2, cv);
1653   TESTINST2("sub.w  r1, r2, #0         ", -1,         r1, r2, cv);
1654   TESTINST2("sub.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1655   TESTINST2("sub.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1656   TESTINST2("sub.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1657   TESTINST2("sub.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1658   TESTINST2("sub.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1659   TESTINST2("sub.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1660   TESTINST2("sub.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1661   TESTCARRYEND
1662
1663   printf("(T4) SUBW Rd, Rn, #uimm12\n");
1664   TESTCARRY
1665   TESTINST2("subw r1, r2, #0x000", 0x31415927, r1, r2, cv);
1666   TESTINST2("subw r1, r2, #0x000", 0x91415927, r1, r2, cv);
1667   TESTINST2("subw r1, r2, #0xABC", 0x31415927, r1, r2, cv);
1668   TESTINST2("subw r1, r2, #0xABC", 0x91415927, r1, r2, cv);
1669   TESTINST2("subw r1, r2, #0xFFF", 0x31415927, r1, r2, cv);
1670   TESTINST2("subw r1, r2, #0xFFF", 0x91415927, r1, r2, cv);
1671   TESTCARRYEND
1672
1673   printf("(T3) RSB{S}.W Rd, Rn, #constT [allegedly]\n");
1674   TESTCARRY
1675   TESTINST2("rsbs.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1676   TESTINST2("rsbs.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1677   TESTINST2("rsbs.w r1, r2, #255       ", 0,          r1, r2, cv);
1678   TESTINST2("rsbs.w r1, r2, #0         ", 1,          r1, r2, cv);
1679   TESTINST2("rsbs.w r1, r2, #1         ", 0,          r1, r2, cv);
1680   TESTINST2("rsbs.w r1, r2, #0         ", -1,         r1, r2, cv);
1681   TESTINST2("rsbs.w r1, r2, #-1        ", 0,          r1, r2, cv);
1682   TESTINST2("rsbs.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1683   TESTINST2("rsbs.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1684   TESTINST2("rsbs.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1685   TESTINST2("rsbs.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1686   TESTINST2("rsbs.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1687   TESTINST2("rsbs.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1688   TESTINST2("rsb.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1689   TESTINST2("rsb.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1690   TESTINST2("rsb.w  r1, r2, #255       ", 0,          r1, r2, cv);
1691   TESTINST2("rsb.w  r1, r2, #0         ", 1,          r1, r2, cv);
1692   TESTINST2("rsb.w  r1, r2, #1         ", 0,          r1, r2, cv);
1693   TESTINST2("rsb.w  r1, r2, #0         ", -1,         r1, r2, cv);
1694   TESTINST2("rsb.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1695   TESTINST2("rsb.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1696   TESTINST2("rsb.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1697   TESTINST2("rsb.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1698   TESTINST2("rsb.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1699   TESTINST2("rsb.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1700   TESTINST2("rsb.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1701   TESTCARRYEND
1702
1703   printf("(T3) ADC{S}.W Rd, Rn, #constT [allegedly]\n");
1704   TESTCARRY
1705   TESTINST2("adcs.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1706   TESTINST2("adcs.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1707   TESTINST2("adcs.w r1, r2, #255       ", 0,          r1, r2, cv);
1708   TESTINST2("adcs.w r1, r2, #0         ", 1,          r1, r2, cv);
1709   TESTINST2("adcs.w r1, r2, #1         ", 0,          r1, r2, cv);
1710   TESTINST2("adcs.w r1, r2, #0         ", -1,         r1, r2, cv);
1711   TESTINST2("adcs.w r1, r2, #-1        ", 0,          r1, r2, cv);
1712   TESTINST2("adcs.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1713   TESTINST2("adcs.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1714   TESTINST2("adcs.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1715   TESTINST2("adcs.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1716   TESTINST2("adcs.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1717   TESTINST2("adcs.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1718   TESTINST2("adc.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1719   TESTINST2("adc.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1720   TESTINST2("adc.w  r1, r2, #255       ", 0,          r1, r2, cv);
1721   TESTINST2("adc.w  r1, r2, #0         ", 1,          r1, r2, cv);
1722   TESTINST2("adc.w  r1, r2, #1         ", 0,          r1, r2, cv);
1723   TESTINST2("adc.w  r1, r2, #0         ", -1,         r1, r2, cv);
1724   TESTINST2("adc.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1725   TESTINST2("adc.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1726   TESTINST2("adc.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1727   TESTINST2("adc.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1728   TESTINST2("adc.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1729   TESTINST2("adc.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1730   TESTINST2("adc.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1731   TESTCARRYEND
1732
1733   printf("(T3) SBC{S}.W Rd, Rn, #constT [allegedly]\n");
1734   TESTCARRY
1735   TESTINST2("sbcs.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1736   TESTINST2("sbcs.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1737   TESTINST2("sbcs.w r1, r2, #255       ", 0,          r1, r2, cv);
1738   TESTINST2("sbcs.w r1, r2, #0         ", 1,          r1, r2, cv);
1739   TESTINST2("sbcs.w r1, r2, #1         ", 0,          r1, r2, cv);
1740   TESTINST2("sbcs.w r1, r2, #0         ", -1,         r1, r2, cv);
1741   TESTINST2("sbcs.w r1, r2, #-1        ", 0,          r1, r2, cv);
1742   TESTINST2("sbcs.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1743   TESTINST2("sbcs.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1744   TESTINST2("sbcs.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1745   TESTINST2("sbcs.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1746   TESTINST2("sbcs.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1747   TESTINST2("sbcs.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1748   TESTINST2("sbc.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1749   TESTINST2("sbc.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1750   TESTINST2("sbc.w  r1, r2, #255       ", 0,          r1, r2, cv);
1751   TESTINST2("sbc.w  r1, r2, #0         ", 1,          r1, r2, cv);
1752   TESTINST2("sbc.w  r1, r2, #1         ", 0,          r1, r2, cv);
1753   TESTINST2("sbc.w  r1, r2, #0         ", -1,         r1, r2, cv);
1754   TESTINST2("sbc.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1755   TESTINST2("sbc.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1756   TESTINST2("sbc.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1757   TESTINST2("sbc.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1758   TESTINST2("sbc.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1759   TESTINST2("sbc.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1760   TESTINST2("sbc.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1761   TESTCARRYEND
1762
1763   printf("(T3) AND{S}.W Rd, Rn, #constT [allegedly]\n");
1764   TESTCARRY
1765   TESTINST2("ands.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1766   TESTINST2("ands.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1767   TESTINST2("ands.w r1, r2, #255       ", 0,          r1, r2, cv);
1768   TESTINST2("ands.w r1, r2, #0         ", 1,          r1, r2, cv);
1769   TESTINST2("ands.w r1, r2, #1         ", 0,          r1, r2, cv);
1770   TESTINST2("ands.w r1, r2, #0         ", -1,         r1, r2, cv);
1771   TESTINST2("ands.w r1, r2, #-1        ", 0,          r1, r2, cv);
1772   TESTINST2("ands.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1773   TESTINST2("ands.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1774   TESTINST2("ands.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1775   TESTINST2("ands.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1776   TESTINST2("ands.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1777   TESTINST2("ands.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1778   TESTINST2("and.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1779   TESTINST2("and.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1780   TESTINST2("and.w  r1, r2, #255       ", 0,          r1, r2, cv);
1781   TESTINST2("and.w  r1, r2, #0         ", 1,          r1, r2, cv);
1782   TESTINST2("and.w  r1, r2, #1         ", 0,          r1, r2, cv);
1783   TESTINST2("and.w  r1, r2, #0         ", -1,         r1, r2, cv);
1784   TESTINST2("and.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1785   TESTINST2("and.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1786   TESTINST2("and.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1787   TESTINST2("and.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1788   TESTINST2("and.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1789   TESTINST2("and.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1790   TESTINST2("and.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1791   TESTCARRYEND
1792
1793   printf("(T3) ORR{S}.W Rd, Rn, #constT [allegedly]\n");
1794   TESTCARRY
1795   TESTINST2("orrs.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1796   TESTINST2("orrs.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1797   TESTINST2("orrs.w r1, r2, #255       ", 0,          r1, r2, cv);
1798   TESTINST2("orrs.w r1, r2, #0         ", 1,          r1, r2, cv);
1799   TESTINST2("orrs.w r1, r2, #1         ", 0,          r1, r2, cv);
1800   TESTINST2("orrs.w r1, r2, #0         ", -1,         r1, r2, cv);
1801   TESTINST2("orrs.w r1, r2, #-1        ", 0,          r1, r2, cv);
1802   TESTINST2("orrs.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1803   TESTINST2("orrs.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1804   TESTINST2("orrs.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1805   TESTINST2("orrs.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1806   TESTINST2("orrs.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1807   TESTINST2("orrs.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1808   TESTINST2("orr.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1809   TESTINST2("orr.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1810   TESTINST2("orr.w  r1, r2, #255       ", 0,          r1, r2, cv);
1811   TESTINST2("orr.w  r1, r2, #0         ", 1,          r1, r2, cv);
1812   TESTINST2("orr.w  r1, r2, #1         ", 0,          r1, r2, cv);
1813   TESTINST2("orr.w  r1, r2, #0         ", -1,         r1, r2, cv);
1814   TESTINST2("orr.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1815   TESTINST2("orr.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1816   TESTINST2("orr.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1817   TESTINST2("orr.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1818   TESTINST2("orr.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1819   TESTINST2("orr.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1820   TESTINST2("orr.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1821   TESTCARRYEND
1822
1823   printf("(T3) EOR{S}.W Rd, Rn, #constT [allegedly]\n");
1824   TESTCARRY
1825   TESTINST2("eors.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1826   TESTINST2("eors.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1827   TESTINST2("eors.w r1, r2, #255       ", 0,          r1, r2, cv);
1828   TESTINST2("eors.w r1, r2, #0         ", 1,          r1, r2, cv);
1829   TESTINST2("eors.w r1, r2, #1         ", 0,          r1, r2, cv);
1830   TESTINST2("eors.w r1, r2, #0         ", -1,         r1, r2, cv);
1831   TESTINST2("eors.w r1, r2, #-1        ", 0,          r1, r2, cv);
1832   TESTINST2("eors.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1833   TESTINST2("eors.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1834   TESTINST2("eors.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1835   TESTINST2("eors.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1836   TESTINST2("eors.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1837   TESTINST2("eors.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1838   TESTINST2("eor.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1839   TESTINST2("eor.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1840   TESTINST2("eor.w  r1, r2, #255       ", 0,          r1, r2, cv);
1841   TESTINST2("eor.w  r1, r2, #0         ", 1,          r1, r2, cv);
1842   TESTINST2("eor.w  r1, r2, #1         ", 0,          r1, r2, cv);
1843   TESTINST2("eor.w  r1, r2, #0         ", -1,         r1, r2, cv);
1844   TESTINST2("eor.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1845   TESTINST2("eor.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1846   TESTINST2("eor.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1847   TESTINST2("eor.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1848   TESTINST2("eor.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1849   TESTINST2("eor.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1850   TESTINST2("eor.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1851   TESTCARRYEND
1852
1853   printf("(T3) BIC{S}.W Rd, Rn, #constT [allegedly]\n");
1854   TESTCARRY
1855   TESTINST2("bics.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1856   TESTINST2("bics.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1857   TESTINST2("bics.w r1, r2, #255       ", 0,          r1, r2, cv);
1858   TESTINST2("bics.w r1, r2, #0         ", 1,          r1, r2, cv);
1859   TESTINST2("bics.w r1, r2, #1         ", 0,          r1, r2, cv);
1860   TESTINST2("bics.w r1, r2, #0         ", -1,         r1, r2, cv);
1861   TESTINST2("bics.w r1, r2, #-1        ", 0,          r1, r2, cv);
1862   TESTINST2("bics.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1863   TESTINST2("bics.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1864   TESTINST2("bics.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1865   TESTINST2("bics.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1866   TESTINST2("bics.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1867   TESTINST2("bics.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1868   TESTINST2("bic.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1869   TESTINST2("bic.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1870   TESTINST2("bic.w  r1, r2, #255       ", 0,          r1, r2, cv);
1871   TESTINST2("bic.w  r1, r2, #0         ", 1,          r1, r2, cv);
1872   TESTINST2("bic.w  r1, r2, #1         ", 0,          r1, r2, cv);
1873   TESTINST2("bic.w  r1, r2, #0         ", -1,         r1, r2, cv);
1874   TESTINST2("bic.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1875   TESTINST2("bic.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1876   TESTINST2("bic.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1877   TESTINST2("bic.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1878   TESTINST2("bic.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1879   TESTINST2("bic.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1880   TESTINST2("bic.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1881   TESTCARRYEND
1882
1883   printf("(T3) ORN{S}.W Rd, Rn, #constT [allegedly]\n");
1884   TESTCARRY
1885   TESTINST2("orns.w r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1886   TESTINST2("orns.w r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1887   TESTINST2("orns.w r1, r2, #255       ", 0,          r1, r2, cv);
1888   TESTINST2("orns.w r1, r2, #0         ", 1,          r1, r2, cv);
1889   TESTINST2("orns.w r1, r2, #1         ", 0,          r1, r2, cv);
1890   TESTINST2("orns.w r1, r2, #0         ", -1,         r1, r2, cv);
1891   TESTINST2("orns.w r1, r2, #-1        ", 0,          r1, r2, cv);
1892   TESTINST2("orns.w r1, r2, #0x80000000", 0,          r1, r2, cv);
1893   TESTINST2("orns.w r1, r2, #0         ", 0x80000000, r1, r2, cv);
1894   TESTINST2("orns.w r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1895   TESTINST2("orns.w r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1896   TESTINST2("orns.w r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1897   TESTINST2("orns.w r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1898   TESTINST2("orn.w  r1, r2, #0xffffffff", 0x31415927, r1, r2, cv);
1899   TESTINST2("orn.w  r1, r2, #0xee00ee00", 0x31415927, r1, r2, cv);
1900   TESTINST2("orn.w  r1, r2, #255       ", 0,          r1, r2, cv);
1901   TESTINST2("orn.w  r1, r2, #0         ", 1,          r1, r2, cv);
1902   TESTINST2("orn.w  r1, r2, #1         ", 0,          r1, r2, cv);
1903   TESTINST2("orn.w  r1, r2, #0         ", -1,         r1, r2, cv);
1904   TESTINST2("orn.w  r1, r2, #-1        ", 0,          r1, r2, cv);
1905   TESTINST2("orn.w  r1, r2, #0x80000000", 0,          r1, r2, cv);
1906   TESTINST2("orn.w  r1, r2, #0         ", 0x80000000, r1, r2, cv);
1907   TESTINST2("orn.w  r1, r2, #0x80000000", 0x80000000, r1, r2, cv);
1908   TESTINST2("orn.w  r1, r2, #0x80000000", 0x7fffffff, r1, r2, cv);
1909   TESTINST2("orn.w  r1, r2, #0xff000000", 0x80000000, r1, r2, cv);
1910   TESTINST2("orn.w  r1, r2, #0x0dd00000", 0x7fffffff, r1, r2, cv);
1911   TESTCARRYEND
1912
1913   printf("ADD{S}.W Rd, Rn, Rm, {shift}\n");
1914   TESTCARRY
1915   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1916   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1917   TESTINST3("adds.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
1918   TESTINST3("adds.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
1919   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1920   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1921   TESTINST3("adds.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
1922   TESTINST3("adds.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
1923   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1924   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1925   TESTINST3("adds.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
1926   TESTINST3("adds.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
1927   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1928   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1929   TESTINST3("add.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
1930   TESTINST3("add.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
1931   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1932   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1933   TESTINST3("add.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
1934   TESTINST3("add.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
1935   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1936   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
1937   TESTINST3("add.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
1938   TESTINST3("add.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
1939   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1940   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1941   TESTINST3("adds.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
1942   TESTINST3("adds.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
1943   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1944   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1945   TESTINST3("adds.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
1946   TESTINST3("adds.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
1947   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1948   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1949   TESTINST3("adds.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
1950   TESTINST3("adds.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
1951   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1952   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1953   TESTINST3("add.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
1954   TESTINST3("add.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
1955   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1956   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1957   TESTINST3("add.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
1958   TESTINST3("add.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
1959   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1960   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
1961   TESTINST3("add.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
1962   TESTINST3("add.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
1963   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
1964   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
1965   TESTINST3("adds.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
1966   TESTINST3("adds.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
1967   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
1968   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
1969   TESTINST3("adds.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
1970   TESTINST3("adds.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
1971   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
1972   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
1973   TESTINST3("adds.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
1974   TESTINST3("adds.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
1975   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
1976   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
1977   TESTINST3("add.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
1978   TESTINST3("add.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
1979   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
1980   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
1981   TESTINST3("add.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
1982   TESTINST3("add.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
1983   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
1984   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
1985   TESTINST3("add.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
1986   TESTINST3("add.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
1987   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
1988   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
1989   TESTINST3("adds.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
1990   TESTINST3("adds.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
1991   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
1992   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
1993   TESTINST3("adds.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
1994   TESTINST3("adds.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
1995   TESTINST3("adds.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
1996   TESTINST3("adds.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
1997   TESTINST3("adds.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
1998   TESTINST3("adds.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
1999   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
2000   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
2001   TESTINST3("add.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
2002   TESTINST3("add.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
2003   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
2004   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
2005   TESTINST3("add.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
2006   TESTINST3("add.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
2007   TESTINST3("add.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
2008   TESTINST3("add.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
2009   TESTINST3("add.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
2010   TESTINST3("add.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
2011   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
2012   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
2013   TESTINST3("adds.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
2014   TESTINST3("adds.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
2015   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
2016   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
2017   TESTINST3("adds.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
2018   TESTINST3("adds.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
2019   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
2020   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
2021   TESTINST3("adds.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
2022   TESTINST3("adds.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
2023   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
2024   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
2025   TESTINST3("add.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
2026   TESTINST3("add.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
2027   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
2028   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
2029   TESTINST3("add.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
2030   TESTINST3("add.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
2031   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
2032   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
2033   TESTINST3("add.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
2034   TESTINST3("add.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
2035   TESTINST3("adds.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
2036   TESTINST3("adds.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
2037   TESTINST3("adds.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
2038   TESTINST3("adds.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
2039   TESTINST3("adds.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
2040   TESTINST3("adds.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
2041   TESTINST3("adds.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
2042   TESTINST3("adds.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
2043   TESTINST3("adds.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
2044   TESTINST3("adds.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
2045   TESTINST3("adds.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
2046   TESTINST3("adds.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
2047   TESTINST3("add.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
2048   TESTINST3("add.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
2049   TESTINST3("add.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
2050   TESTINST3("add.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
2051   TESTINST3("add.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
2052   TESTINST3("add.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
2053   TESTINST3("add.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
2054   TESTINST3("add.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
2055   TESTINST3("add.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
2056   TESTINST3("add.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
2057   TESTINST3("add.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
2058   TESTINST3("add.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
2059   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
2060   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
2061   TESTINST3("adds.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
2062   TESTINST3("adds.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
2063   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
2064   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
2065   TESTINST3("adds.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
2066   TESTINST3("adds.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
2067   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
2068   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
2069   TESTINST3("adds.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
2070   TESTINST3("adds.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
2071   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
2072   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
2073   TESTINST3("add.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
2074   TESTINST3("add.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
2075   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
2076   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
2077   TESTINST3("add.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
2078   TESTINST3("add.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
2079   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
2080   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
2081   TESTINST3("add.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
2082   TESTINST3("add.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
2083   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
2084   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
2085   TESTINST3("adds.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
2086   TESTINST3("adds.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
2087   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2088   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2089   TESTINST3("adds.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
2090   TESTINST3("adds.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
2091   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2092   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2093   TESTINST3("adds.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
2094   TESTINST3("adds.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
2095   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
2096   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
2097   TESTINST3("add.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
2098   TESTINST3("add.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
2099   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2100   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2101   TESTINST3("add.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
2102   TESTINST3("add.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
2103   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2104   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2105   TESTINST3("add.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
2106   TESTINST3("add.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
2107   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2108   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2109   TESTINST3("adds.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
2110   TESTINST3("adds.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
2111   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2112   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2113   TESTINST3("adds.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
2114   TESTINST3("adds.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
2115   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2116   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2117   TESTINST3("adds.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
2118   TESTINST3("adds.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
2119   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2120   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2121   TESTINST3("add.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
2122   TESTINST3("add.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
2123   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2124   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2125   TESTINST3("add.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
2126   TESTINST3("add.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
2127   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2128   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2129   TESTINST3("add.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
2130   TESTINST3("add.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
2131   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2132   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2133   TESTINST3("adds.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2134   TESTINST3("adds.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2135   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2136   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2137   TESTINST3("adds.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2138   TESTINST3("adds.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2139   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2140   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2141   TESTINST3("adds.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2142   TESTINST3("adds.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2143   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2144   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2145   TESTINST3("add.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2146   TESTINST3("add.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2147   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2148   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2149   TESTINST3("add.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2150   TESTINST3("add.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2151   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2152   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2153   TESTINST3("add.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2154   TESTINST3("add.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2155   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2156   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2157   TESTINST3("adds.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2158   TESTINST3("adds.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2159   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2160   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2161   TESTINST3("adds.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2162   TESTINST3("adds.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2163   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2164   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2165   TESTINST3("adds.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2166   TESTINST3("adds.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2167   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2168   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2169   TESTINST3("add.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2170   TESTINST3("add.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2171   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2172   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2173   TESTINST3("add.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2174   TESTINST3("add.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2175   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2176   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2177   TESTINST3("add.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2178   TESTINST3("add.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2179   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2180   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2181   TESTINST3("adds.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2182   TESTINST3("adds.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2183   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2184   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2185   TESTINST3("adds.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2186   TESTINST3("adds.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2187   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2188   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2189   TESTINST3("adds.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2190   TESTINST3("adds.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2191   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2192   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2193   TESTINST3("add.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2194   TESTINST3("add.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2195   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2196   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2197   TESTINST3("add.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2198   TESTINST3("add.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2199   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2200   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2201   TESTINST3("add.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2202   TESTINST3("add.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2203   TESTINST3("adds.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2204   TESTINST3("adds.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2205   TESTINST3("adds.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2206   TESTINST3("adds.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2207   TESTINST3("adds.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2208   TESTINST3("adds.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2209   TESTINST3("adds.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2210   TESTINST3("adds.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2211   TESTINST3("adds.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2212   TESTINST3("adds.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2213   TESTINST3("adds.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2214   TESTINST3("adds.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2215   TESTINST3("add.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2216   TESTINST3("add.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2217   TESTINST3("add.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2218   TESTINST3("add.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2219   TESTINST3("add.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2220   TESTINST3("add.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2221   TESTINST3("add.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2222   TESTINST3("add.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2223   TESTINST3("add.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2224   TESTINST3("add.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2225   TESTINST3("add.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2226   TESTINST3("add.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2227   TESTCARRYEND
2228
2229   printf("SUBB{S}.W Rd, Rn, Rm, {shift}\n");
2230   TESTCARRY
2231   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2232   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2233   TESTINST3("subs.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2234   TESTINST3("subs.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2235   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2236   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2237   TESTINST3("subs.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2238   TESTINST3("subs.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2239   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2240   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2241   TESTINST3("subs.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2242   TESTINST3("subs.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2243   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2244   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2245   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2246   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2247   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2248   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2249   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2250   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2251   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2252   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2253   TESTINST3("sub.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2254   TESTINST3("sub.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2255   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2256   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2257   TESTINST3("subs.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2258   TESTINST3("subs.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2259   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2260   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2261   TESTINST3("subs.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2262   TESTINST3("subs.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2263   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2264   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2265   TESTINST3("subs.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2266   TESTINST3("subs.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2267   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2268   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2269   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2270   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2271   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2272   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2273   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2274   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2275   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2276   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2277   TESTINST3("sub.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2278   TESTINST3("sub.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2279   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
2280   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
2281   TESTINST3("subs.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
2282   TESTINST3("subs.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
2283   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
2284   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
2285   TESTINST3("subs.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
2286   TESTINST3("subs.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
2287   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
2288   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
2289   TESTINST3("subs.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
2290   TESTINST3("subs.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
2291   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
2292   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
2293   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
2294   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
2295   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
2296   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
2297   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
2298   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
2299   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
2300   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
2301   TESTINST3("sub.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
2302   TESTINST3("sub.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
2303   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
2304   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
2305   TESTINST3("subs.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
2306   TESTINST3("subs.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
2307   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
2308   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
2309   TESTINST3("subs.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
2310   TESTINST3("subs.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
2311   TESTINST3("subs.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
2312   TESTINST3("subs.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
2313   TESTINST3("subs.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
2314   TESTINST3("subs.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
2315   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
2316   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
2317   TESTINST3("sub.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
2318   TESTINST3("sub.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
2319   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
2320   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
2321   TESTINST3("sub.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
2322   TESTINST3("sub.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
2323   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
2324   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
2325   TESTINST3("sub.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
2326   TESTINST3("sub.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
2327   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
2328   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
2329   TESTINST3("subs.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
2330   TESTINST3("subs.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
2331   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
2332   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
2333   TESTINST3("subs.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
2334   TESTINST3("subs.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
2335   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
2336   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
2337   TESTINST3("subs.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
2338   TESTINST3("subs.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
2339   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
2340   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
2341   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
2342   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
2343   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
2344   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
2345   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
2346   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
2347   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
2348   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
2349   TESTINST3("sub.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
2350   TESTINST3("sub.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
2351   TESTINST3("subs.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
2352   TESTINST3("subs.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
2353   TESTINST3("subs.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
2354   TESTINST3("subs.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
2355   TESTINST3("subs.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
2356   TESTINST3("subs.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
2357   TESTINST3("subs.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
2358   TESTINST3("subs.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
2359   TESTINST3("subs.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
2360   TESTINST3("subs.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
2361   TESTINST3("subs.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
2362   TESTINST3("subs.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
2363   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
2364   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
2365   TESTINST3("sub.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
2366   TESTINST3("sub.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
2367   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
2368   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
2369   TESTINST3("sub.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
2370   TESTINST3("sub.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
2371   TESTINST3("sub.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
2372   TESTINST3("sub.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
2373   TESTINST3("sub.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
2374   TESTINST3("sub.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
2375   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
2376   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
2377   TESTINST3("subs.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
2378   TESTINST3("subs.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
2379   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
2380   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
2381   TESTINST3("subs.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
2382   TESTINST3("subs.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
2383   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
2384   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
2385   TESTINST3("subs.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
2386   TESTINST3("subs.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
2387   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
2388   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
2389   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
2390   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
2391   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
2392   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
2393   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
2394   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
2395   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
2396   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
2397   TESTINST3("sub.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
2398   TESTINST3("sub.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
2399   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
2400   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
2401   TESTINST3("subs.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
2402   TESTINST3("subs.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
2403   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2404   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2405   TESTINST3("subs.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
2406   TESTINST3("subs.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
2407   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2408   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2409   TESTINST3("subs.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
2410   TESTINST3("subs.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
2411   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
2412   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
2413   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
2414   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
2415   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2416   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2417   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
2418   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
2419   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2420   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2421   TESTINST3("sub.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
2422   TESTINST3("sub.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
2423   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2424   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2425   TESTINST3("subs.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
2426   TESTINST3("subs.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
2427   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2428   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2429   TESTINST3("subs.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
2430   TESTINST3("subs.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
2431   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2432   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2433   TESTINST3("subs.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
2434   TESTINST3("subs.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
2435   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2436   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2437   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
2438   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
2439   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2440   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2441   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
2442   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
2443   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2444   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2445   TESTINST3("sub.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
2446   TESTINST3("sub.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
2447   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2448   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2449   TESTINST3("subs.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2450   TESTINST3("subs.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2451   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2452   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2453   TESTINST3("subs.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2454   TESTINST3("subs.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2455   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2456   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2457   TESTINST3("subs.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2458   TESTINST3("subs.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2459   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2460   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2461   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2462   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2463   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2464   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2465   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2466   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2467   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2468   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2469   TESTINST3("sub.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2470   TESTINST3("sub.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2471   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2472   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2473   TESTINST3("subs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2474   TESTINST3("subs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2475   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2476   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2477   TESTINST3("subs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2478   TESTINST3("subs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2479   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2480   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2481   TESTINST3("subs.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2482   TESTINST3("subs.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2483   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2484   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2485   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2486   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2487   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2488   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2489   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2490   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2491   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2492   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2493   TESTINST3("sub.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2494   TESTINST3("sub.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2495   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2496   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2497   TESTINST3("subs.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2498   TESTINST3("subs.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2499   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2500   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2501   TESTINST3("subs.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2502   TESTINST3("subs.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2503   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2504   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2505   TESTINST3("subs.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2506   TESTINST3("subs.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2507   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2508   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2509   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2510   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2511   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2512   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2513   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2514   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2515   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2516   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2517   TESTINST3("sub.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2518   TESTINST3("sub.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2519   TESTINST3("subs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2520   TESTINST3("subs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2521   TESTINST3("subs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2522   TESTINST3("subs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2523   TESTINST3("subs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2524   TESTINST3("subs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2525   TESTINST3("subs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2526   TESTINST3("subs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2527   TESTINST3("subs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2528   TESTINST3("subs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2529   TESTINST3("subs.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2530   TESTINST3("subs.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2531   TESTINST3("sub.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2532   TESTINST3("sub.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2533   TESTINST3("sub.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2534   TESTINST3("sub.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2535   TESTINST3("sub.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2536   TESTINST3("sub.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2537   TESTINST3("sub.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2538   TESTINST3("sub.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2539   TESTINST3("sub.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2540   TESTINST3("sub.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2541   TESTINST3("sub.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2542   TESTINST3("sub.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2543   TESTCARRYEND
2544
2545   printf("RSB{S}.W Rd, Rn, Rm, {shift}\n");
2546   TESTCARRY
2547   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2548   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2549   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2550   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2551   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2552   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2553   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2554   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2555   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2556   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2557   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2558   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2559   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2560   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2561   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2562   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2563   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2564   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2565   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2566   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2567   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2568   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2569   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2570   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2571   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2572   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2573   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2574   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2575   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2576   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2577   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2578   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2579   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2580   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2581   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2582   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2583   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2584   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2585   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2586   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2587   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2588   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2589   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2590   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2591   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2592   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2593   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2594   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2595   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
2596   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
2597   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
2598   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
2599   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
2600   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
2601   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
2602   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
2603   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
2604   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
2605   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
2606   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
2607   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
2608   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
2609   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
2610   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
2611   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
2612   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
2613   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
2614   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
2615   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
2616   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
2617   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
2618   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
2619   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
2620   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
2621   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
2622   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
2623   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
2624   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
2625   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
2626   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
2627   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
2628   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
2629   TESTINST3("rsbs.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
2630   TESTINST3("rsbs.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
2631   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
2632   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
2633   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
2634   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
2635   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
2636   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
2637   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
2638   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
2639   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
2640   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
2641   TESTINST3("rsb.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
2642   TESTINST3("rsb.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
2643   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
2644   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
2645   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
2646   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
2647   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
2648   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
2649   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
2650   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
2651   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
2652   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
2653   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
2654   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
2655   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
2656   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
2657   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
2658   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
2659   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
2660   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
2661   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
2662   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
2663   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
2664   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
2665   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
2666   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
2667   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
2668   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
2669   TESTINST3("rsbs.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
2670   TESTINST3("rsbs.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
2671   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
2672   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
2673   TESTINST3("rsbs.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
2674   TESTINST3("rsbs.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
2675   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
2676   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
2677   TESTINST3("rsbs.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
2678   TESTINST3("rsbs.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
2679   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
2680   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
2681   TESTINST3("rsb.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
2682   TESTINST3("rsb.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
2683   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
2684   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
2685   TESTINST3("rsb.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
2686   TESTINST3("rsb.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
2687   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
2688   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
2689   TESTINST3("rsb.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
2690   TESTINST3("rsb.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
2691   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
2692   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
2693   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
2694   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
2695   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
2696   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
2697   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
2698   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
2699   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
2700   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
2701   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
2702   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
2703   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
2704   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
2705   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
2706   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
2707   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
2708   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
2709   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
2710   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
2711   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
2712   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
2713   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
2714   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
2715   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
2716   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
2717   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
2718   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
2719   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2720   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2721   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
2722   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
2723   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2724   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2725   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
2726   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
2727   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
2728   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
2729   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
2730   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
2731   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2732   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2733   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
2734   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
2735   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
2736   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
2737   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
2738   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
2739   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2740   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2741   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
2742   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
2743   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2744   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2745   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
2746   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
2747   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2748   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2749   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
2750   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
2751   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2752   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2753   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
2754   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
2755   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2756   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2757   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
2758   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
2759   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
2760   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
2761   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
2762   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
2763   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2764   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2765   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2766   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2767   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2768   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2769   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2770   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2771   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2772   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2773   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2774   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2775   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2776   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2777   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2778   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2779   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2780   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2781   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2782   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2783   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2784   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
2785   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
2786   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
2787   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2788   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2789   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2790   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2791   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2792   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2793   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2794   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2795   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2796   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2797   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2798   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2799   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2800   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2801   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2802   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2803   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2804   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2805   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2806   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2807   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2808   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2809   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2810   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
2811   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2812   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2813   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2814   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2815   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2816   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2817   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2818   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2819   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2820   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2821   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2822   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2823   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2824   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2825   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2826   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2827   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2828   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2829   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2830   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2831   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2832   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2833   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2834   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
2835   TESTINST3("rsbs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2836   TESTINST3("rsbs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2837   TESTINST3("rsbs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2838   TESTINST3("rsbs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2839   TESTINST3("rsbs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2840   TESTINST3("rsbs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2841   TESTINST3("rsbs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2842   TESTINST3("rsbs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2843   TESTINST3("rsbs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2844   TESTINST3("rsbs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2845   TESTINST3("rsbs.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2846   TESTINST3("rsbs.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2847   TESTINST3("rsb.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2848   TESTINST3("rsb.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2849   TESTINST3("rsb.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2850   TESTINST3("rsb.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2851   TESTINST3("rsb.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2852   TESTINST3("rsb.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2853   TESTINST3("rsb.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2854   TESTINST3("rsb.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2855   TESTINST3("rsb.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2856   TESTINST3("rsb.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2857   TESTINST3("rsb.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2858   TESTINST3("rsb.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
2859   TESTCARRYEND
2860
2861   printf("ADC{S}.W Rd, Rn, Rm, {shift}\n");
2862   TESTCARRY
2863   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2864   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2865   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2866   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2867   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2868   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2869   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2870   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2871   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2872   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2873   TESTINST3("adcs.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2874   TESTINST3("adcs.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2875   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2876   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2877   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2878   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2879   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2880   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2881   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2882   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2883   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2884   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
2885   TESTINST3("adc.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
2886   TESTINST3("adc.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
2887   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2888   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2889   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2890   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2891   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2892   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2893   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2894   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2895   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2896   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2897   TESTINST3("adcs.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2898   TESTINST3("adcs.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2899   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2900   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2901   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2902   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2903   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2904   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2905   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2906   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2907   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2908   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
2909   TESTINST3("adc.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
2910   TESTINST3("adc.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
2911   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
2912   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
2913   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
2914   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
2915   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
2916   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
2917   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
2918   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
2919   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
2920   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
2921   TESTINST3("adcs.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
2922   TESTINST3("adcs.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
2923   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
2924   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
2925   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
2926   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
2927   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
2928   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
2929   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
2930   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
2931   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
2932   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
2933   TESTINST3("adc.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
2934   TESTINST3("adc.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
2935   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
2936   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
2937   TESTINST3("adcs.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
2938   TESTINST3("adcs.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
2939   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
2940   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
2941   TESTINST3("adcs.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
2942   TESTINST3("adcs.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
2943   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
2944   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
2945   TESTINST3("adcs.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
2946   TESTINST3("adcs.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
2947   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
2948   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
2949   TESTINST3("adc.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
2950   TESTINST3("adc.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
2951   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
2952   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
2953   TESTINST3("adc.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
2954   TESTINST3("adc.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
2955   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
2956   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
2957   TESTINST3("adc.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
2958   TESTINST3("adc.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
2959   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
2960   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
2961   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
2962   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
2963   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
2964   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
2965   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
2966   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
2967   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
2968   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
2969   TESTINST3("adcs.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
2970   TESTINST3("adcs.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
2971   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
2972   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
2973   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
2974   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
2975   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
2976   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
2977   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
2978   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
2979   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
2980   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
2981   TESTINST3("adc.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
2982   TESTINST3("adc.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
2983   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
2984   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
2985   TESTINST3("adcs.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
2986   TESTINST3("adcs.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
2987   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
2988   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
2989   TESTINST3("adcs.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
2990   TESTINST3("adcs.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
2991   TESTINST3("adcs.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
2992   TESTINST3("adcs.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
2993   TESTINST3("adcs.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
2994   TESTINST3("adcs.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
2995   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
2996   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
2997   TESTINST3("adc.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
2998   TESTINST3("adc.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
2999   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
3000   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
3001   TESTINST3("adc.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
3002   TESTINST3("adc.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
3003   TESTINST3("adc.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
3004   TESTINST3("adc.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
3005   TESTINST3("adc.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
3006   TESTINST3("adc.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
3007   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
3008   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
3009   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
3010   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
3011   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
3012   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
3013   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
3014   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
3015   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
3016   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
3017   TESTINST3("adcs.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
3018   TESTINST3("adcs.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
3019   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
3020   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
3021   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
3022   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
3023   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
3024   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
3025   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
3026   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
3027   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
3028   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
3029   TESTINST3("adc.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
3030   TESTINST3("adc.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
3031   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
3032   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
3033   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
3034   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
3035   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3036   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3037   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
3038   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
3039   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3040   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3041   TESTINST3("adcs.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
3042   TESTINST3("adcs.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
3043   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
3044   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
3045   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
3046   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
3047   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3048   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3049   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
3050   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
3051   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3052   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3053   TESTINST3("adc.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
3054   TESTINST3("adc.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
3055   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3056   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3057   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
3058   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
3059   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3060   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3061   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
3062   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
3063   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3064   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3065   TESTINST3("adcs.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
3066   TESTINST3("adcs.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
3067   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3068   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3069   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
3070   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
3071   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3072   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3073   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
3074   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
3075   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3076   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3077   TESTINST3("adc.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
3078   TESTINST3("adc.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
3079   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3080   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3081   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3082   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3083   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3084   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3085   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3086   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3087   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3088   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3089   TESTINST3("adcs.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3090   TESTINST3("adcs.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3091   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3092   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3093   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3094   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3095   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3096   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3097   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3098   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3099   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3100   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3101   TESTINST3("adc.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3102   TESTINST3("adc.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3103   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3104   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3105   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3106   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3107   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3108   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3109   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3110   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3111   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3112   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3113   TESTINST3("adcs.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3114   TESTINST3("adcs.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3115   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3116   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3117   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3118   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3119   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3120   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3121   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3122   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3123   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3124   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3125   TESTINST3("adc.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3126   TESTINST3("adc.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3127   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3128   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3129   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3130   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3131   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3132   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3133   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3134   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3135   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3136   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3137   TESTINST3("adcs.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3138   TESTINST3("adcs.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3139   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3140   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3141   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3142   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3143   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3144   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3145   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3146   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3147   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3148   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3149   TESTINST3("adc.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3150   TESTINST3("adc.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3151   TESTINST3("adcs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3152   TESTINST3("adcs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3153   TESTINST3("adcs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3154   TESTINST3("adcs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3155   TESTINST3("adcs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3156   TESTINST3("adcs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3157   TESTINST3("adcs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3158   TESTINST3("adcs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3159   TESTINST3("adcs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3160   TESTINST3("adcs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3161   TESTINST3("adcs.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3162   TESTINST3("adcs.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3163   TESTINST3("adc.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3164   TESTINST3("adc.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3165   TESTINST3("adc.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3166   TESTINST3("adc.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3167   TESTINST3("adc.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3168   TESTINST3("adc.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3169   TESTINST3("adc.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3170   TESTINST3("adc.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3171   TESTINST3("adc.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3172   TESTINST3("adc.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3173   TESTINST3("adc.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3174   TESTINST3("adc.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3175   TESTCARRYEND
3176
3177   printf("SBC{S}.W Rd, Rn, Rm, {shift}\n");
3178   TESTCARRY
3179   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3180   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3181   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3182   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3183   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3184   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3185   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3186   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3187   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3188   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3189   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3190   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3191   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3192   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3193   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3194   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3195   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3196   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3197   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3198   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3199   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3200   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3201   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3202   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3203   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3204   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3205   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3206   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3207   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3208   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3209   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3210   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3211   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3212   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3213   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3214   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3215   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3216   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3217   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3218   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3219   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3220   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3221   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3222   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3223   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3224   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3225   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3226   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3227   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
3228   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
3229   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
3230   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
3231   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
3232   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
3233   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
3234   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
3235   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
3236   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
3237   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
3238   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
3239   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
3240   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
3241   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
3242   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
3243   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
3244   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
3245   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
3246   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
3247   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
3248   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
3249   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
3250   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
3251   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
3252   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
3253   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
3254   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
3255   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
3256   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
3257   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
3258   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
3259   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
3260   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
3261   TESTINST3("sbcs.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
3262   TESTINST3("sbcs.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
3263   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
3264   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
3265   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
3266   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
3267   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
3268   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
3269   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
3270   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
3271   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
3272   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
3273   TESTINST3("sbc.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
3274   TESTINST3("sbc.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
3275   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
3276   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
3277   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
3278   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
3279   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
3280   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
3281   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
3282   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
3283   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
3284   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
3285   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
3286   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
3287   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
3288   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
3289   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
3290   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
3291   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
3292   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
3293   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
3294   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
3295   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
3296   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
3297   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
3298   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
3299   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
3300   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
3301   TESTINST3("sbcs.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
3302   TESTINST3("sbcs.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
3303   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
3304   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
3305   TESTINST3("sbcs.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
3306   TESTINST3("sbcs.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
3307   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
3308   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
3309   TESTINST3("sbcs.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
3310   TESTINST3("sbcs.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
3311   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
3312   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
3313   TESTINST3("sbc.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
3314   TESTINST3("sbc.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
3315   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
3316   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
3317   TESTINST3("sbc.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
3318   TESTINST3("sbc.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
3319   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
3320   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
3321   TESTINST3("sbc.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
3322   TESTINST3("sbc.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
3323   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
3324   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
3325   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
3326   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
3327   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
3328   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
3329   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
3330   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
3331   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
3332   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
3333   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
3334   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
3335   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
3336   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
3337   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
3338   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
3339   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
3340   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
3341   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
3342   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
3343   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
3344   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
3345   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
3346   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
3347   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
3348   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
3349   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
3350   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
3351   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3352   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3353   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
3354   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
3355   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3356   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3357   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
3358   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
3359   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
3360   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
3361   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
3362   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
3363   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3364   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3365   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
3366   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
3367   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3368   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3369   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
3370   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
3371   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3372   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3373   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
3374   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
3375   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3376   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3377   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
3378   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
3379   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3380   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3381   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
3382   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
3383   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3384   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3385   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
3386   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
3387   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3388   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3389   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
3390   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
3391   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3392   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3393   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
3394   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
3395   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3396   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3397   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3398   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3399   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3400   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3401   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3402   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3403   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3404   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3405   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3406   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3407   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3408   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3409   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3410   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3411   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3412   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3413   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3414   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3415   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3416   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3417   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3418   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3419   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3420   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3421   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3422   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3423   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3424   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3425   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3426   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3427   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3428   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3429   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3430   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3431   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3432   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3433   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3434   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3435   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3436   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3437   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3438   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3439   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3440   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3441   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3442   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3443   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3444   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3445   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3446   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3447   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3448   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3449   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3450   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3451   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3452   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3453   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3454   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3455   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3456   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3457   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3458   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3459   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3460   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3461   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3462   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3463   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3464   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3465   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3466   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3467   TESTINST3("sbcs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3468   TESTINST3("sbcs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3469   TESTINST3("sbcs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3470   TESTINST3("sbcs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3471   TESTINST3("sbcs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3472   TESTINST3("sbcs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3473   TESTINST3("sbcs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3474   TESTINST3("sbcs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3475   TESTINST3("sbcs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3476   TESTINST3("sbcs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3477   TESTINST3("sbcs.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3478   TESTINST3("sbcs.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3479   TESTINST3("sbc.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3480   TESTINST3("sbc.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3481   TESTINST3("sbc.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3482   TESTINST3("sbc.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3483   TESTINST3("sbc.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3484   TESTINST3("sbc.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3485   TESTINST3("sbc.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3486   TESTINST3("sbc.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3487   TESTINST3("sbc.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3488   TESTINST3("sbc.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3489   TESTINST3("sbc.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3490   TESTINST3("sbc.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3491   TESTCARRYEND
3492
3493#if 0
3494   printf("XXX{S}.W Rd, Rn, Rm, {shift}\n");
3495   TESTCARRY
3496   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3497   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3498   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3499   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3500   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3501   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3502   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3503   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3504   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3505   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3506   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3507   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3508   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3509   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3510   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3511   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3512   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3513   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3514   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3515   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3516   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3517   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3518   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3519   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3520   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3521   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3522   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3523   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3524   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3525   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3526   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3527   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3528   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3529   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3530   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3531   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3532   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3533   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3534   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3535   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3536   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3537   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3538   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3539   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3540   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3541   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3542   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3543   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3544   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
3545   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
3546   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
3547   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
3548   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
3549   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
3550   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
3551   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
3552   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
3553   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
3554   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
3555   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
3556   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
3557   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
3558   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
3559   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
3560   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
3561   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
3562   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
3563   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
3564   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
3565   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
3566   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
3567   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
3568   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
3569   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
3570   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
3571   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
3572   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
3573   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
3574   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
3575   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
3576   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
3577   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
3578   TESTINST3("xxxs.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
3579   TESTINST3("xxxs.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
3580   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
3581   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
3582   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
3583   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
3584   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
3585   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
3586   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
3587   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
3588   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
3589   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
3590   TESTINST3("xxx.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
3591   TESTINST3("xxx.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
3592   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
3593   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
3594   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
3595   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
3596   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
3597   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
3598   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
3599   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
3600   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
3601   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
3602   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
3603   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
3604   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
3605   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
3606   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
3607   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
3608   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
3609   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
3610   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
3611   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
3612   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
3613   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
3614   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
3615   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
3616   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
3617   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
3618   TESTINST3("xxxs.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
3619   TESTINST3("xxxs.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
3620   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
3621   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
3622   TESTINST3("xxxs.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
3623   TESTINST3("xxxs.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
3624   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
3625   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
3626   TESTINST3("xxxs.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
3627   TESTINST3("xxxs.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
3628   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
3629   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
3630   TESTINST3("xxx.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
3631   TESTINST3("xxx.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
3632   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
3633   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
3634   TESTINST3("xxx.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
3635   TESTINST3("xxx.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
3636   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
3637   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
3638   TESTINST3("xxx.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
3639   TESTINST3("xxx.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
3640   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
3641   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
3642   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
3643   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
3644   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
3645   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
3646   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
3647   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
3648   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
3649   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
3650   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
3651   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
3652   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
3653   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
3654   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
3655   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
3656   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
3657   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
3658   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
3659   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
3660   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
3661   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
3662   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
3663   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
3664   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
3665   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
3666   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
3667   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
3668   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3669   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3670   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
3671   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
3672   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3673   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3674   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
3675   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
3676   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
3677   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
3678   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
3679   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
3680   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3681   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3682   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
3683   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
3684   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3685   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3686   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
3687   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
3688   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3689   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3690   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
3691   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
3692   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3693   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3694   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
3695   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
3696   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3697   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3698   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
3699   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
3700   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3701   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3702   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
3703   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
3704   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3705   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3706   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
3707   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
3708   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
3709   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
3710   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
3711   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
3712   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3713   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3714   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3715   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3716   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3717   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3718   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3719   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3720   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3721   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3722   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3723   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3724   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3725   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3726   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3727   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3728   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3729   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3730   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3731   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3732   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3733   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
3734   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
3735   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
3736   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3737   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3738   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3739   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3740   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3741   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3742   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3743   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3744   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3745   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3746   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3747   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3748   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3749   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3750   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3751   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3752   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3753   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3754   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3755   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3756   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3757   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3758   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3759   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
3760   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3761   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3762   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3763   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3764   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3765   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3766   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3767   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3768   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3769   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3770   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3771   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3772   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3773   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3774   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3775   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3776   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3777   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3778   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3779   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3780   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3781   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3782   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3783   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
3784   TESTINST3("xxxs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3785   TESTINST3("xxxs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3786   TESTINST3("xxxs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3787   TESTINST3("xxxs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3788   TESTINST3("xxxs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3789   TESTINST3("xxxs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3790   TESTINST3("xxxs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3791   TESTINST3("xxxs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3792   TESTINST3("xxxs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3793   TESTINST3("xxxs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3794   TESTINST3("xxxs.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3795   TESTINST3("xxxs.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3796   TESTINST3("xxx.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3797   TESTINST3("xxx.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3798   TESTINST3("xxx.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3799   TESTINST3("xxx.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3800   TESTINST3("xxx.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3801   TESTINST3("xxx.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3802   TESTINST3("xxx.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3803   TESTINST3("xxx.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3804   TESTINST3("xxx.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3805   TESTINST3("xxx.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3806   TESTINST3("xxx.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3807   TESTINST3("xxx.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
3808   TESTCARRYEND
3809#endif
3810
3811   printf("AND{S}.W Rd, Rn, Rm, {shift}\n");
3812   TESTCARRY
3813   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3814   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3815   TESTINST3("ands.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3816   TESTINST3("ands.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3817   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3818   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3819   TESTINST3("ands.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3820   TESTINST3("ands.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3821   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3822   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3823   TESTINST3("ands.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3824   TESTINST3("ands.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3825   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3826   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3827   TESTINST3("and.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3828   TESTINST3("and.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3829   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3830   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3831   TESTINST3("and.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3832   TESTINST3("and.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3833   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3834   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
3835   TESTINST3("and.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
3836   TESTINST3("and.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
3837   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3838   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3839   TESTINST3("ands.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3840   TESTINST3("ands.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3841   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3842   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3843   TESTINST3("ands.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3844   TESTINST3("ands.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3845   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3846   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3847   TESTINST3("ands.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3848   TESTINST3("ands.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3849   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3850   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3851   TESTINST3("and.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3852   TESTINST3("and.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3853   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3854   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3855   TESTINST3("and.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3856   TESTINST3("and.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3857   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3858   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
3859   TESTINST3("and.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
3860   TESTINST3("and.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
3861   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
3862   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
3863   TESTINST3("ands.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
3864   TESTINST3("ands.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
3865   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
3866   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
3867   TESTINST3("ands.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
3868   TESTINST3("ands.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
3869   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
3870   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
3871   TESTINST3("ands.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
3872   TESTINST3("ands.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
3873   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
3874   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
3875   TESTINST3("and.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
3876   TESTINST3("and.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
3877   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
3878   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
3879   TESTINST3("and.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
3880   TESTINST3("and.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
3881   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
3882   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
3883   TESTINST3("and.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
3884   TESTINST3("and.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
3885   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
3886   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
3887   TESTINST3("ands.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
3888   TESTINST3("ands.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
3889   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
3890   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
3891   TESTINST3("ands.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
3892   TESTINST3("ands.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
3893   TESTINST3("ands.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
3894   TESTINST3("ands.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
3895   TESTINST3("ands.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
3896   TESTINST3("ands.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
3897   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
3898   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
3899   TESTINST3("and.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
3900   TESTINST3("and.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
3901   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
3902   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
3903   TESTINST3("and.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
3904   TESTINST3("and.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
3905   TESTINST3("and.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
3906   TESTINST3("and.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
3907   TESTINST3("and.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
3908   TESTINST3("and.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
3909   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
3910   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
3911   TESTINST3("ands.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
3912   TESTINST3("ands.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
3913   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
3914   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
3915   TESTINST3("ands.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
3916   TESTINST3("ands.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
3917   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
3918   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
3919   TESTINST3("ands.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
3920   TESTINST3("ands.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
3921   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
3922   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
3923   TESTINST3("and.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
3924   TESTINST3("and.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
3925   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
3926   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
3927   TESTINST3("and.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
3928   TESTINST3("and.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
3929   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
3930   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
3931   TESTINST3("and.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
3932   TESTINST3("and.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
3933   TESTINST3("ands.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
3934   TESTINST3("ands.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
3935   TESTINST3("ands.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
3936   TESTINST3("ands.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
3937   TESTINST3("ands.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
3938   TESTINST3("ands.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
3939   TESTINST3("ands.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
3940   TESTINST3("ands.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
3941   TESTINST3("ands.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
3942   TESTINST3("ands.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
3943   TESTINST3("ands.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
3944   TESTINST3("ands.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
3945   TESTINST3("and.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
3946   TESTINST3("and.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
3947   TESTINST3("and.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
3948   TESTINST3("and.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
3949   TESTINST3("and.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
3950   TESTINST3("and.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
3951   TESTINST3("and.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
3952   TESTINST3("and.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
3953   TESTINST3("and.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
3954   TESTINST3("and.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
3955   TESTINST3("and.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
3956   TESTINST3("and.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
3957   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
3958   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
3959   TESTINST3("ands.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
3960   TESTINST3("ands.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
3961   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
3962   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
3963   TESTINST3("ands.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
3964   TESTINST3("ands.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
3965   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
3966   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
3967   TESTINST3("ands.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
3968   TESTINST3("ands.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
3969   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
3970   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
3971   TESTINST3("and.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
3972   TESTINST3("and.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
3973   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
3974   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
3975   TESTINST3("and.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
3976   TESTINST3("and.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
3977   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
3978   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
3979   TESTINST3("and.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
3980   TESTINST3("and.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
3981   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
3982   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
3983   TESTINST3("ands.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
3984   TESTINST3("ands.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
3985   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3986   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3987   TESTINST3("ands.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
3988   TESTINST3("ands.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
3989   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3990   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3991   TESTINST3("ands.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
3992   TESTINST3("ands.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
3993   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
3994   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
3995   TESTINST3("and.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
3996   TESTINST3("and.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
3997   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
3998   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
3999   TESTINST3("and.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
4000   TESTINST3("and.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
4001   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4002   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4003   TESTINST3("and.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
4004   TESTINST3("and.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
4005   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4006   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4007   TESTINST3("ands.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
4008   TESTINST3("ands.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
4009   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4010   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4011   TESTINST3("ands.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
4012   TESTINST3("ands.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
4013   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4014   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4015   TESTINST3("ands.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
4016   TESTINST3("ands.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
4017   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4018   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4019   TESTINST3("and.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
4020   TESTINST3("and.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
4021   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4022   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4023   TESTINST3("and.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
4024   TESTINST3("and.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
4025   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4026   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4027   TESTINST3("and.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
4028   TESTINST3("and.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
4029   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4030   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4031   TESTINST3("ands.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4032   TESTINST3("ands.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4033   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4034   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4035   TESTINST3("ands.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4036   TESTINST3("ands.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4037   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4038   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4039   TESTINST3("ands.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4040   TESTINST3("ands.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4041   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4042   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4043   TESTINST3("and.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4044   TESTINST3("and.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4045   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4046   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4047   TESTINST3("and.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4048   TESTINST3("and.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4049   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4050   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4051   TESTINST3("and.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4052   TESTINST3("and.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4053   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4054   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4055   TESTINST3("ands.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4056   TESTINST3("ands.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4057   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4058   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4059   TESTINST3("ands.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4060   TESTINST3("ands.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4061   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4062   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4063   TESTINST3("ands.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4064   TESTINST3("ands.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4065   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4066   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4067   TESTINST3("and.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4068   TESTINST3("and.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4069   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4070   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4071   TESTINST3("and.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4072   TESTINST3("and.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4073   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4074   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4075   TESTINST3("and.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4076   TESTINST3("and.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4077   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4078   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4079   TESTINST3("ands.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4080   TESTINST3("ands.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4081   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4082   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4083   TESTINST3("ands.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4084   TESTINST3("ands.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4085   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4086   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4087   TESTINST3("ands.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4088   TESTINST3("ands.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4089   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4090   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4091   TESTINST3("and.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4092   TESTINST3("and.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4093   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4094   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4095   TESTINST3("and.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4096   TESTINST3("and.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4097   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4098   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4099   TESTINST3("and.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4100   TESTINST3("and.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4101   TESTINST3("ands.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4102   TESTINST3("ands.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4103   TESTINST3("ands.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4104   TESTINST3("ands.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4105   TESTINST3("ands.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4106   TESTINST3("ands.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4107   TESTINST3("ands.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4108   TESTINST3("ands.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4109   TESTINST3("ands.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4110   TESTINST3("ands.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4111   TESTINST3("ands.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4112   TESTINST3("ands.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4113   TESTINST3("and.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4114   TESTINST3("and.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4115   TESTINST3("and.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4116   TESTINST3("and.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4117   TESTINST3("and.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4118   TESTINST3("and.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4119   TESTINST3("and.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4120   TESTINST3("and.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4121   TESTINST3("and.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4122   TESTINST3("and.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4123   TESTINST3("and.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4124   TESTINST3("and.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4125   TESTCARRYEND
4126
4127   printf("ORR{S}.W Rd, Rn, Rm, {shift}\n");
4128   TESTCARRY
4129   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4130   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4131   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4132   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4133   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4134   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4135   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4136   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4137   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4138   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4139   TESTINST3("orrs.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4140   TESTINST3("orrs.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4141   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4142   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4143   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4144   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4145   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4146   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4147   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4148   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4149   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4150   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4151   TESTINST3("orr.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4152   TESTINST3("orr.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4153   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4154   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4155   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4156   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4157   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4158   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4159   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4160   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4161   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4162   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4163   TESTINST3("orrs.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4164   TESTINST3("orrs.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4165   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4166   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4167   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4168   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4169   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4170   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4171   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4172   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4173   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4174   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4175   TESTINST3("orr.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4176   TESTINST3("orr.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4177   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
4178   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
4179   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
4180   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
4181   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
4182   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
4183   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
4184   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
4185   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
4186   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
4187   TESTINST3("orrs.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
4188   TESTINST3("orrs.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
4189   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
4190   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
4191   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
4192   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
4193   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
4194   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
4195   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
4196   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
4197   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
4198   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
4199   TESTINST3("orr.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
4200   TESTINST3("orr.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
4201   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
4202   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
4203   TESTINST3("orrs.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
4204   TESTINST3("orrs.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
4205   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
4206   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
4207   TESTINST3("orrs.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
4208   TESTINST3("orrs.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
4209   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
4210   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
4211   TESTINST3("orrs.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
4212   TESTINST3("orrs.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
4213   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
4214   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
4215   TESTINST3("orr.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
4216   TESTINST3("orr.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
4217   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
4218   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
4219   TESTINST3("orr.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
4220   TESTINST3("orr.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
4221   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
4222   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
4223   TESTINST3("orr.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
4224   TESTINST3("orr.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
4225   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
4226   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
4227   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
4228   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
4229   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
4230   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
4231   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
4232   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
4233   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
4234   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
4235   TESTINST3("orrs.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
4236   TESTINST3("orrs.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
4237   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
4238   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
4239   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
4240   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
4241   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
4242   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
4243   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
4244   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
4245   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
4246   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
4247   TESTINST3("orr.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
4248   TESTINST3("orr.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
4249   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
4250   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
4251   TESTINST3("orrs.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
4252   TESTINST3("orrs.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
4253   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
4254   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
4255   TESTINST3("orrs.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
4256   TESTINST3("orrs.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
4257   TESTINST3("orrs.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
4258   TESTINST3("orrs.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
4259   TESTINST3("orrs.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
4260   TESTINST3("orrs.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
4261   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
4262   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
4263   TESTINST3("orr.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
4264   TESTINST3("orr.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
4265   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
4266   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
4267   TESTINST3("orr.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
4268   TESTINST3("orr.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
4269   TESTINST3("orr.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
4270   TESTINST3("orr.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
4271   TESTINST3("orr.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
4272   TESTINST3("orr.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
4273   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
4274   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
4275   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
4276   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
4277   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
4278   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
4279   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
4280   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
4281   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
4282   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
4283   TESTINST3("orrs.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
4284   TESTINST3("orrs.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
4285   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
4286   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
4287   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
4288   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
4289   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
4290   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
4291   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
4292   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
4293   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
4294   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
4295   TESTINST3("orr.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
4296   TESTINST3("orr.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
4297   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
4298   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
4299   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
4300   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
4301   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4302   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4303   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
4304   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
4305   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4306   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4307   TESTINST3("orrs.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
4308   TESTINST3("orrs.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
4309   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
4310   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
4311   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
4312   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
4313   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4314   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4315   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
4316   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
4317   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4318   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4319   TESTINST3("orr.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
4320   TESTINST3("orr.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
4321   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4322   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4323   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
4324   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
4325   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4326   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4327   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
4328   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
4329   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4330   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4331   TESTINST3("orrs.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
4332   TESTINST3("orrs.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
4333   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4334   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4335   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
4336   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
4337   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4338   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4339   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
4340   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
4341   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4342   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4343   TESTINST3("orr.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
4344   TESTINST3("orr.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
4345   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4346   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4347   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4348   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4349   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4350   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4351   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4352   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4353   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4354   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4355   TESTINST3("orrs.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4356   TESTINST3("orrs.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4357   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4358   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4359   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4360   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4361   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4362   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4363   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4364   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4365   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4366   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4367   TESTINST3("orr.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4368   TESTINST3("orr.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4369   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4370   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4371   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4372   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4373   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4374   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4375   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4376   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4377   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4378   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4379   TESTINST3("orrs.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4380   TESTINST3("orrs.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4381   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4382   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4383   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4384   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4385   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4386   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4387   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4388   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4389   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4390   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4391   TESTINST3("orr.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4392   TESTINST3("orr.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4393   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4394   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4395   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4396   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4397   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4398   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4399   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4400   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4401   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4402   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4403   TESTINST3("orrs.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4404   TESTINST3("orrs.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4405   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4406   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4407   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4408   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4409   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4410   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4411   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4412   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4413   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4414   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4415   TESTINST3("orr.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4416   TESTINST3("orr.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4417   TESTINST3("orrs.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4418   TESTINST3("orrs.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4419   TESTINST3("orrs.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4420   TESTINST3("orrs.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4421   TESTINST3("orrs.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4422   TESTINST3("orrs.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4423   TESTINST3("orrs.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4424   TESTINST3("orrs.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4425   TESTINST3("orrs.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4426   TESTINST3("orrs.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4427   TESTINST3("orrs.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4428   TESTINST3("orrs.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4429   TESTINST3("orr.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4430   TESTINST3("orr.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4431   TESTINST3("orr.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4432   TESTINST3("orr.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4433   TESTINST3("orr.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4434   TESTINST3("orr.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4435   TESTINST3("orr.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4436   TESTINST3("orr.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4437   TESTINST3("orr.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4438   TESTINST3("orr.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4439   TESTINST3("orr.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4440   TESTINST3("orr.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4441   TESTCARRYEND
4442
4443   printf("EOR{S}.W Rd, Rn, Rm, {shift}\n");
4444   TESTCARRY
4445   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4446   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4447   TESTINST3("eors.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4448   TESTINST3("eors.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4449   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4450   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4451   TESTINST3("eors.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4452   TESTINST3("eors.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4453   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4454   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4455   TESTINST3("eors.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4456   TESTINST3("eors.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4457   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4458   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4459   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4460   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4461   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4462   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4463   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4464   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4465   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4466   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4467   TESTINST3("eor.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4468   TESTINST3("eor.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4469   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4470   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4471   TESTINST3("eors.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4472   TESTINST3("eors.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4473   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4474   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4475   TESTINST3("eors.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4476   TESTINST3("eors.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4477   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4478   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4479   TESTINST3("eors.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4480   TESTINST3("eors.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4481   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4482   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4483   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4484   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4485   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4486   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4487   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4488   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4489   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4490   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4491   TESTINST3("eor.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4492   TESTINST3("eor.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4493   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
4494   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
4495   TESTINST3("eors.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
4496   TESTINST3("eors.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
4497   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
4498   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
4499   TESTINST3("eors.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
4500   TESTINST3("eors.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
4501   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
4502   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
4503   TESTINST3("eors.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
4504   TESTINST3("eors.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
4505   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
4506   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
4507   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
4508   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
4509   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
4510   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
4511   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
4512   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
4513   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
4514   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
4515   TESTINST3("eor.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
4516   TESTINST3("eor.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
4517   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
4518   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
4519   TESTINST3("eors.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
4520   TESTINST3("eors.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
4521   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
4522   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
4523   TESTINST3("eors.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
4524   TESTINST3("eors.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
4525   TESTINST3("eors.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
4526   TESTINST3("eors.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
4527   TESTINST3("eors.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
4528   TESTINST3("eors.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
4529   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
4530   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
4531   TESTINST3("eor.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
4532   TESTINST3("eor.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
4533   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
4534   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
4535   TESTINST3("eor.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
4536   TESTINST3("eor.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
4537   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
4538   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
4539   TESTINST3("eor.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
4540   TESTINST3("eor.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
4541   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
4542   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
4543   TESTINST3("eors.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
4544   TESTINST3("eors.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
4545   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
4546   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
4547   TESTINST3("eors.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
4548   TESTINST3("eors.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
4549   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
4550   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
4551   TESTINST3("eors.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
4552   TESTINST3("eors.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
4553   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
4554   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
4555   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
4556   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
4557   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
4558   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
4559   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
4560   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
4561   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
4562   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
4563   TESTINST3("eor.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
4564   TESTINST3("eor.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
4565   TESTINST3("eors.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
4566   TESTINST3("eors.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
4567   TESTINST3("eors.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
4568   TESTINST3("eors.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
4569   TESTINST3("eors.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
4570   TESTINST3("eors.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
4571   TESTINST3("eors.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
4572   TESTINST3("eors.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
4573   TESTINST3("eors.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
4574   TESTINST3("eors.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
4575   TESTINST3("eors.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
4576   TESTINST3("eors.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
4577   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
4578   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
4579   TESTINST3("eor.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
4580   TESTINST3("eor.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
4581   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
4582   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
4583   TESTINST3("eor.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
4584   TESTINST3("eor.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
4585   TESTINST3("eor.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
4586   TESTINST3("eor.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
4587   TESTINST3("eor.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
4588   TESTINST3("eor.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
4589   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
4590   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
4591   TESTINST3("eors.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
4592   TESTINST3("eors.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
4593   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
4594   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
4595   TESTINST3("eors.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
4596   TESTINST3("eors.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
4597   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
4598   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
4599   TESTINST3("eors.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
4600   TESTINST3("eors.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
4601   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
4602   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
4603   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
4604   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
4605   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
4606   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
4607   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
4608   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
4609   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
4610   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
4611   TESTINST3("eor.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
4612   TESTINST3("eor.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
4613   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
4614   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
4615   TESTINST3("eors.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
4616   TESTINST3("eors.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
4617   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4618   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4619   TESTINST3("eors.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
4620   TESTINST3("eors.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
4621   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4622   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4623   TESTINST3("eors.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
4624   TESTINST3("eors.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
4625   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
4626   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
4627   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
4628   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
4629   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4630   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4631   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
4632   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
4633   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4634   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4635   TESTINST3("eor.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
4636   TESTINST3("eor.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
4637   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4638   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4639   TESTINST3("eors.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
4640   TESTINST3("eors.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
4641   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4642   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4643   TESTINST3("eors.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
4644   TESTINST3("eors.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
4645   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4646   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4647   TESTINST3("eors.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
4648   TESTINST3("eors.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
4649   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4650   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4651   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
4652   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
4653   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4654   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4655   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
4656   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
4657   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4658   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4659   TESTINST3("eor.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
4660   TESTINST3("eor.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
4661   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4662   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4663   TESTINST3("eors.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4664   TESTINST3("eors.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4665   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4666   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4667   TESTINST3("eors.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4668   TESTINST3("eors.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4669   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4670   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4671   TESTINST3("eors.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4672   TESTINST3("eors.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4673   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4674   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4675   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4676   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4677   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4678   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4679   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4680   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4681   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4682   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4683   TESTINST3("eor.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4684   TESTINST3("eor.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4685   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4686   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4687   TESTINST3("eors.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4688   TESTINST3("eors.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4689   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4690   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4691   TESTINST3("eors.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4692   TESTINST3("eors.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4693   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4694   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4695   TESTINST3("eors.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4696   TESTINST3("eors.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4697   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4698   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4699   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4700   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4701   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4702   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4703   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4704   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4705   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4706   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4707   TESTINST3("eor.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4708   TESTINST3("eor.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
4709   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4710   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4711   TESTINST3("eors.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4712   TESTINST3("eors.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4713   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4714   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4715   TESTINST3("eors.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4716   TESTINST3("eors.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4717   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4718   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4719   TESTINST3("eors.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4720   TESTINST3("eors.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4721   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4722   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4723   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4724   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4725   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4726   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4727   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4728   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4729   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4730   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4731   TESTINST3("eor.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4732   TESTINST3("eor.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
4733   TESTINST3("eors.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4734   TESTINST3("eors.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4735   TESTINST3("eors.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4736   TESTINST3("eors.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4737   TESTINST3("eors.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4738   TESTINST3("eors.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4739   TESTINST3("eors.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4740   TESTINST3("eors.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4741   TESTINST3("eors.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4742   TESTINST3("eors.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4743   TESTINST3("eors.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4744   TESTINST3("eors.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4745   TESTINST3("eor.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4746   TESTINST3("eor.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4747   TESTINST3("eor.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4748   TESTINST3("eor.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4749   TESTINST3("eor.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4750   TESTINST3("eor.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4751   TESTINST3("eor.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4752   TESTINST3("eor.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4753   TESTINST3("eor.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4754   TESTINST3("eor.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4755   TESTINST3("eor.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4756   TESTINST3("eor.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
4757   TESTCARRYEND
4758
4759   printf("BIC{S}.W Rd, Rn, Rm, {shift}\n");
4760   TESTCARRY
4761   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4762   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4763   TESTINST3("bics.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4764   TESTINST3("bics.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4765   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4766   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4767   TESTINST3("bics.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4768   TESTINST3("bics.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4769   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4770   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4771   TESTINST3("bics.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4772   TESTINST3("bics.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4773   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4774   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4775   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4776   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4777   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4778   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4779   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4780   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4781   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4782   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
4783   TESTINST3("bic.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
4784   TESTINST3("bic.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
4785   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4786   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4787   TESTINST3("bics.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4788   TESTINST3("bics.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4789   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4790   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4791   TESTINST3("bics.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4792   TESTINST3("bics.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4793   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4794   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4795   TESTINST3("bics.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4796   TESTINST3("bics.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4797   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4798   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4799   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4800   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4801   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4802   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4803   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4804   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4805   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4806   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
4807   TESTINST3("bic.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
4808   TESTINST3("bic.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
4809   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
4810   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
4811   TESTINST3("bics.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
4812   TESTINST3("bics.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
4813   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
4814   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
4815   TESTINST3("bics.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
4816   TESTINST3("bics.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
4817   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
4818   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
4819   TESTINST3("bics.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
4820   TESTINST3("bics.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
4821   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
4822   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
4823   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
4824   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
4825   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
4826   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
4827   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
4828   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
4829   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
4830   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
4831   TESTINST3("bic.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
4832   TESTINST3("bic.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
4833   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
4834   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
4835   TESTINST3("bics.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
4836   TESTINST3("bics.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
4837   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
4838   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
4839   TESTINST3("bics.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
4840   TESTINST3("bics.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
4841   TESTINST3("bics.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
4842   TESTINST3("bics.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
4843   TESTINST3("bics.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
4844   TESTINST3("bics.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
4845   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
4846   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
4847   TESTINST3("bic.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
4848   TESTINST3("bic.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
4849   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
4850   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
4851   TESTINST3("bic.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
4852   TESTINST3("bic.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
4853   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
4854   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
4855   TESTINST3("bic.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
4856   TESTINST3("bic.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
4857   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
4858   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
4859   TESTINST3("bics.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
4860   TESTINST3("bics.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
4861   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
4862   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
4863   TESTINST3("bics.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
4864   TESTINST3("bics.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
4865   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
4866   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
4867   TESTINST3("bics.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
4868   TESTINST3("bics.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
4869   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
4870   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
4871   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
4872   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
4873   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
4874   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
4875   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
4876   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
4877   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
4878   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
4879   TESTINST3("bic.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
4880   TESTINST3("bic.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
4881   TESTINST3("bics.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
4882   TESTINST3("bics.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
4883   TESTINST3("bics.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
4884   TESTINST3("bics.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
4885   TESTINST3("bics.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
4886   TESTINST3("bics.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
4887   TESTINST3("bics.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
4888   TESTINST3("bics.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
4889   TESTINST3("bics.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
4890   TESTINST3("bics.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
4891   TESTINST3("bics.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
4892   TESTINST3("bics.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
4893   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
4894   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
4895   TESTINST3("bic.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
4896   TESTINST3("bic.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
4897   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
4898   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
4899   TESTINST3("bic.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
4900   TESTINST3("bic.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
4901   TESTINST3("bic.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
4902   TESTINST3("bic.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
4903   TESTINST3("bic.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
4904   TESTINST3("bic.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
4905   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
4906   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
4907   TESTINST3("bics.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
4908   TESTINST3("bics.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
4909   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
4910   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
4911   TESTINST3("bics.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
4912   TESTINST3("bics.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
4913   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
4914   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
4915   TESTINST3("bics.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
4916   TESTINST3("bics.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
4917   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
4918   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
4919   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
4920   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
4921   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
4922   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
4923   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
4924   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
4925   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
4926   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
4927   TESTINST3("bic.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
4928   TESTINST3("bic.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
4929   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
4930   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
4931   TESTINST3("bics.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
4932   TESTINST3("bics.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
4933   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4934   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4935   TESTINST3("bics.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
4936   TESTINST3("bics.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
4937   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4938   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4939   TESTINST3("bics.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
4940   TESTINST3("bics.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
4941   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
4942   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
4943   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
4944   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
4945   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4946   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4947   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
4948   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
4949   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
4950   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
4951   TESTINST3("bic.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
4952   TESTINST3("bic.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
4953   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4954   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4955   TESTINST3("bics.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
4956   TESTINST3("bics.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
4957   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4958   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4959   TESTINST3("bics.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
4960   TESTINST3("bics.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
4961   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4962   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4963   TESTINST3("bics.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
4964   TESTINST3("bics.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
4965   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4966   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4967   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
4968   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
4969   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4970   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4971   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
4972   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
4973   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
4974   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
4975   TESTINST3("bic.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
4976   TESTINST3("bic.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
4977   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4978   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4979   TESTINST3("bics.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4980   TESTINST3("bics.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4981   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4982   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4983   TESTINST3("bics.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4984   TESTINST3("bics.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4985   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4986   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4987   TESTINST3("bics.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4988   TESTINST3("bics.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4989   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4990   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4991   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4992   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4993   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4994   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4995   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
4996   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
4997   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4998   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
4999   TESTINST3("bic.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
5000   TESTINST3("bic.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
5001   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5002   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5003   TESTINST3("bics.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5004   TESTINST3("bics.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5005   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5006   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5007   TESTINST3("bics.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5008   TESTINST3("bics.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5009   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5010   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5011   TESTINST3("bics.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5012   TESTINST3("bics.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5013   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5014   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5015   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5016   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5017   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5018   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5019   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5020   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5021   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5022   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5023   TESTINST3("bic.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5024   TESTINST3("bic.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5025   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5026   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5027   TESTINST3("bics.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5028   TESTINST3("bics.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5029   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5030   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5031   TESTINST3("bics.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5032   TESTINST3("bics.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5033   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5034   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5035   TESTINST3("bics.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5036   TESTINST3("bics.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5037   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5038   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5039   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5040   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5041   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5042   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5043   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5044   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5045   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5046   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5047   TESTINST3("bic.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5048   TESTINST3("bic.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5049   TESTINST3("bics.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5050   TESTINST3("bics.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5051   TESTINST3("bics.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5052   TESTINST3("bics.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5053   TESTINST3("bics.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5054   TESTINST3("bics.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5055   TESTINST3("bics.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5056   TESTINST3("bics.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5057   TESTINST3("bics.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5058   TESTINST3("bics.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5059   TESTINST3("bics.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5060   TESTINST3("bics.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5061   TESTINST3("bic.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5062   TESTINST3("bic.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5063   TESTINST3("bic.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5064   TESTINST3("bic.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5065   TESTINST3("bic.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5066   TESTINST3("bic.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5067   TESTINST3("bic.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5068   TESTINST3("bic.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5069   TESTINST3("bic.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5070   TESTINST3("bic.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5071   TESTINST3("bic.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5072   TESTINST3("bic.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5073   TESTCARRYEND
5074
5075   printf("ORN{S}.W Rd, Rn, Rm, {shift}\n");
5076   TESTCARRY
5077   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5078   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5079   TESTINST3("orns.w r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
5080   TESTINST3("orns.w r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
5081   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5082   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5083   TESTINST3("orns.w r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
5084   TESTINST3("orns.w r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
5085   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5086   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5087   TESTINST3("orns.w r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
5088   TESTINST3("orns.w r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
5089   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5090   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5091   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
5092   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
5093   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5094   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5095   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
5096   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
5097   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5098   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0x31415927, 0x27181728, r1, r2, r3, cv);
5099   TESTINST3("orn.w  r1, r2, r3, asr #15", 0x31415927, 0x27181728, r1, r2, r3, cv);
5100   TESTINST3("orn.w  r1, r2, r3, asr #31", 0x31415927, 0x27181728, r1, r2, r3, cv);
5101   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5102   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5103   TESTINST3("orns.w r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
5104   TESTINST3("orns.w r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
5105   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5106   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5107   TESTINST3("orns.w r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
5108   TESTINST3("orns.w r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
5109   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5110   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5111   TESTINST3("orns.w r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
5112   TESTINST3("orns.w r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
5113   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5114   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5115   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
5116   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
5117   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5118   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5119   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
5120   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
5121   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5122   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0x31415927, 0x97181728, r1, r2, r3, cv);
5123   TESTINST3("orn.w  r1, r2, r3, asr #15", 0x31415927, 0x97181728, r1, r2, r3, cv);
5124   TESTINST3("orn.w  r1, r2, r3, asr #31", 0x31415927, 0x97181728, r1, r2, r3, cv);
5125   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
5126   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
5127   TESTINST3("orns.w r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
5128   TESTINST3("orns.w r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
5129   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
5130   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
5131   TESTINST3("orns.w r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
5132   TESTINST3("orns.w r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
5133   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
5134   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
5135   TESTINST3("orns.w r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
5136   TESTINST3("orns.w r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
5137   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0,          0,          r1, r2, r3, cv);
5138   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0,          0,          r1, r2, r3, cv);
5139   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0,          0,          r1, r2, r3, cv);
5140   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0,          0,          r1, r2, r3, cv);
5141   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0,          0,          r1, r2, r3, cv);
5142   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0,          0,          r1, r2, r3, cv);
5143   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0,          0,          r1, r2, r3, cv);
5144   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0,          0,          r1, r2, r3, cv);
5145   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0,          0,          r1, r2, r3, cv);
5146   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0,          0,          r1, r2, r3, cv);
5147   TESTINST3("orn.w  r1, r2, r3, asr #15", 0,          0,          r1, r2, r3, cv);
5148   TESTINST3("orn.w  r1, r2, r3, asr #31", 0,          0,          r1, r2, r3, cv);
5149   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
5150   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
5151   TESTINST3("orns.w r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
5152   TESTINST3("orns.w r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
5153   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
5154   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
5155   TESTINST3("orns.w r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
5156   TESTINST3("orns.w r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
5157   TESTINST3("orns.w r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
5158   TESTINST3("orns.w r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
5159   TESTINST3("orns.w r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
5160   TESTINST3("orns.w r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
5161   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 1,          0,          r1, r2, r3, cv);
5162   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 1,          0,          r1, r2, r3, cv);
5163   TESTINST3("orn.w  r1, r2, r3, lsl #15", 1,          0,          r1, r2, r3, cv);
5164   TESTINST3("orn.w  r1, r2, r3, lsl #31", 1,          0,          r1, r2, r3, cv);
5165   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 1,          0,          r1, r2, r3, cv);
5166   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 1,          0,          r1, r2, r3, cv);
5167   TESTINST3("orn.w  r1, r2, r3, lsr #15", 1,          0,          r1, r2, r3, cv);
5168   TESTINST3("orn.w  r1, r2, r3, lsr #31", 1,          0,          r1, r2, r3, cv);
5169   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 1,          0,          r1, r2, r3, cv);
5170   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 1,          0,          r1, r2, r3, cv);
5171   TESTINST3("orn.w  r1, r2, r3, asr #15", 1,          0,          r1, r2, r3, cv);
5172   TESTINST3("orn.w  r1, r2, r3, asr #31", 1,          0,          r1, r2, r3, cv);
5173   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
5174   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
5175   TESTINST3("orns.w r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
5176   TESTINST3("orns.w r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
5177   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
5178   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
5179   TESTINST3("orns.w r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
5180   TESTINST3("orns.w r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
5181   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
5182   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
5183   TESTINST3("orns.w r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
5184   TESTINST3("orns.w r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
5185   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0,          1,          r1, r2, r3, cv);
5186   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0,          1,          r1, r2, r3, cv);
5187   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0,          1,          r1, r2, r3, cv);
5188   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0,          1,          r1, r2, r3, cv);
5189   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0,          1,          r1, r2, r3, cv);
5190   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0,          1,          r1, r2, r3, cv);
5191   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0,          1,          r1, r2, r3, cv);
5192   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0,          1,          r1, r2, r3, cv);
5193   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0,          1,          r1, r2, r3, cv);
5194   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0,          1,          r1, r2, r3, cv);
5195   TESTINST3("orn.w  r1, r2, r3, asr #15", 0,          1,          r1, r2, r3, cv);
5196   TESTINST3("orn.w  r1, r2, r3, asr #31", 0,          1,          r1, r2, r3, cv);
5197   TESTINST3("orns.w r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
5198   TESTINST3("orns.w r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
5199   TESTINST3("orns.w r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
5200   TESTINST3("orns.w r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
5201   TESTINST3("orns.w r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
5202   TESTINST3("orns.w r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
5203   TESTINST3("orns.w r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
5204   TESTINST3("orns.w r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
5205   TESTINST3("orns.w r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
5206   TESTINST3("orns.w r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
5207   TESTINST3("orns.w r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
5208   TESTINST3("orns.w r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
5209   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", -1,         0,          r1, r2, r3, cv);
5210   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", -1,         0,          r1, r2, r3, cv);
5211   TESTINST3("orn.w  r1, r2, r3, lsl #15", -1,         0,          r1, r2, r3, cv);
5212   TESTINST3("orn.w  r1, r2, r3, lsl #31", -1,         0,          r1, r2, r3, cv);
5213   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", -1,         0,          r1, r2, r3, cv);
5214   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", -1,         0,          r1, r2, r3, cv);
5215   TESTINST3("orn.w  r1, r2, r3, lsr #15", -1,         0,          r1, r2, r3, cv);
5216   TESTINST3("orn.w  r1, r2, r3, lsr #31", -1,         0,          r1, r2, r3, cv);
5217   TESTINST3("orn.w  r1, r2, r3, asr #0 ", -1,         0,          r1, r2, r3, cv);
5218   TESTINST3("orn.w  r1, r2, r3, asr #1 ", -1,         0,          r1, r2, r3, cv);
5219   TESTINST3("orn.w  r1, r2, r3, asr #15", -1,         0,          r1, r2, r3, cv);
5220   TESTINST3("orn.w  r1, r2, r3, asr #31", -1,         0,          r1, r2, r3, cv);
5221   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
5222   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
5223   TESTINST3("orns.w r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
5224   TESTINST3("orns.w r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
5225   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
5226   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
5227   TESTINST3("orns.w r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
5228   TESTINST3("orns.w r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
5229   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
5230   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
5231   TESTINST3("orns.w r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
5232   TESTINST3("orns.w r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
5233   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0,          -1,         r1, r2, r3, cv);
5234   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0,          -1,         r1, r2, r3, cv);
5235   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0,          -1,         r1, r2, r3, cv);
5236   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0,          -1,         r1, r2, r3, cv);
5237   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0,          -1,         r1, r2, r3, cv);
5238   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0,          -1,         r1, r2, r3, cv);
5239   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0,          -1,         r1, r2, r3, cv);
5240   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0,          -1,         r1, r2, r3, cv);
5241   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0,          -1,         r1, r2, r3, cv);
5242   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0,          -1,         r1, r2, r3, cv);
5243   TESTINST3("orn.w  r1, r2, r3, asr #15", 0,          -1,         r1, r2, r3, cv);
5244   TESTINST3("orn.w  r1, r2, r3, asr #31", 0,          -1,         r1, r2, r3, cv);
5245   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
5246   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
5247   TESTINST3("orns.w r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
5248   TESTINST3("orns.w r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
5249   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
5250   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
5251   TESTINST3("orns.w r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
5252   TESTINST3("orns.w r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
5253   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
5254   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
5255   TESTINST3("orns.w r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
5256   TESTINST3("orns.w r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
5257   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0,          0x80000000, r1, r2, r3, cv);
5258   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0,          0x80000000, r1, r2, r3, cv);
5259   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0,          0x80000000, r1, r2, r3, cv);
5260   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0,          0x80000000, r1, r2, r3, cv);
5261   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0,          0x80000000, r1, r2, r3, cv);
5262   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0,          0x80000000, r1, r2, r3, cv);
5263   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0,          0x80000000, r1, r2, r3, cv);
5264   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0,          0x80000000, r1, r2, r3, cv);
5265   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0,          0x80000000, r1, r2, r3, cv);
5266   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0,          0x80000000, r1, r2, r3, cv);
5267   TESTINST3("orn.w  r1, r2, r3, asr #15", 0,          0x80000000, r1, r2, r3, cv);
5268   TESTINST3("orn.w  r1, r2, r3, asr #31", 0,          0x80000000, r1, r2, r3, cv);
5269   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
5270   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
5271   TESTINST3("orns.w r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
5272   TESTINST3("orns.w r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
5273   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
5274   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
5275   TESTINST3("orns.w r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
5276   TESTINST3("orns.w r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
5277   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
5278   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
5279   TESTINST3("orns.w r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
5280   TESTINST3("orns.w r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
5281   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0x80000000, 0,          r1, r2, r3, cv);
5282   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0x80000000, 0,          r1, r2, r3, cv);
5283   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0x80000000, 0,          r1, r2, r3, cv);
5284   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0x80000000, 0,          r1, r2, r3, cv);
5285   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
5286   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
5287   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0x80000000, 0,          r1, r2, r3, cv);
5288   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0x80000000, 0,          r1, r2, r3, cv);
5289   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0x80000000, 0,          r1, r2, r3, cv);
5290   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0x80000000, 0,          r1, r2, r3, cv);
5291   TESTINST3("orn.w  r1, r2, r3, asr #15", 0x80000000, 0,          r1, r2, r3, cv);
5292   TESTINST3("orn.w  r1, r2, r3, asr #31", 0x80000000, 0,          r1, r2, r3, cv);
5293   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5294   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5295   TESTINST3("orns.w r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
5296   TESTINST3("orns.w r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
5297   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5298   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5299   TESTINST3("orns.w r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
5300   TESTINST3("orns.w r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
5301   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5302   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5303   TESTINST3("orns.w r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
5304   TESTINST3("orns.w r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
5305   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5306   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5307   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
5308   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
5309   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5310   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5311   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
5312   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
5313   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5314   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0x80000000, 0x80000000, r1, r2, r3, cv);
5315   TESTINST3("orn.w  r1, r2, r3, asr #15", 0x80000000, 0x80000000, r1, r2, r3, cv);
5316   TESTINST3("orn.w  r1, r2, r3, asr #31", 0x80000000, 0x80000000, r1, r2, r3, cv);
5317   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5318   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5319   TESTINST3("orns.w r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5320   TESTINST3("orns.w r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5321   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5322   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5323   TESTINST3("orns.w r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5324   TESTINST3("orns.w r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5325   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5326   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5327   TESTINST3("orns.w r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5328   TESTINST3("orns.w r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5329   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5330   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5331   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5332   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5333   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5334   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5335   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5336   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5337   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5338   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5339   TESTINST3("orn.w  r1, r2, r3, asr #15", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5340   TESTINST3("orn.w  r1, r2, r3, asr #31", 0x7fffffff, 0x80000000, r1, r2, r3, cv);
5341   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5342   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5343   TESTINST3("orns.w r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5344   TESTINST3("orns.w r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5345   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5346   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5347   TESTINST3("orns.w r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5348   TESTINST3("orns.w r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5349   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5350   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5351   TESTINST3("orns.w r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5352   TESTINST3("orns.w r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5353   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5354   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5355   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5356   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5357   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5358   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5359   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5360   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5361   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5362   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5363   TESTINST3("orn.w  r1, r2, r3, asr #15", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5364   TESTINST3("orn.w  r1, r2, r3, asr #31", 0x80000000, 0x7fffffff, r1, r2, r3, cv);
5365   TESTINST3("orns.w r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5366   TESTINST3("orns.w r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5367   TESTINST3("orns.w r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5368   TESTINST3("orns.w r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5369   TESTINST3("orns.w r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5370   TESTINST3("orns.w r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5371   TESTINST3("orns.w r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5372   TESTINST3("orns.w r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5373   TESTINST3("orns.w r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5374   TESTINST3("orns.w r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5375   TESTINST3("orns.w r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5376   TESTINST3("orns.w r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5377   TESTINST3("orn.w  r1, r2, r3, lsl #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5378   TESTINST3("orn.w  r1, r2, r3, lsl #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5379   TESTINST3("orn.w  r1, r2, r3, lsl #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5380   TESTINST3("orn.w  r1, r2, r3, lsl #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5381   TESTINST3("orn.w  r1, r2, r3, lsr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5382   TESTINST3("orn.w  r1, r2, r3, lsr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5383   TESTINST3("orn.w  r1, r2, r3, lsr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5384   TESTINST3("orn.w  r1, r2, r3, lsr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5385   TESTINST3("orn.w  r1, r2, r3, asr #0 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5386   TESTINST3("orn.w  r1, r2, r3, asr #1 ", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5387   TESTINST3("orn.w  r1, r2, r3, asr #15", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5388   TESTINST3("orn.w  r1, r2, r3, asr #31", 0x7fffffff, 0x7fffffff, r1, r2, r3, cv);
5389   TESTCARRYEND
5390
5391   printf("(T?) LSL{S}.W Rd, Rn, Rm\n");
5392   TESTCARRY
5393   TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv);
5394   TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x00000001, r1, r2, r3, cv);
5395   TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x00000002, r1, r2, r3, cv);
5396   TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x0000000F, r1, r2, r3, cv);
5397   TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x00000010, r1, r2, r3, cv);
5398   TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x0000001F, r1, r2, r3, cv);
5399   TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x00000020, r1, r2, r3, cv);
5400   TESTINST3("lsls.w r1, r2, r3", 0x31415927, 0x00000021, r1, r2, r3, cv);
5401   TESTINST3("lsl.w  r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv);
5402   TESTINST3("lsl.w  r1, r2, r3", 0x31415927, 0x00000001, r1, r2, r3, cv);
5403   TESTINST3("lsl.w  r1, r2, r3", 0x31415927, 0x00000002, r1, r2, r3, cv);
5404   TESTINST3("lsl.w  r1, r2, r3", 0x31415927, 0x0000000F, r1, r2, r3, cv);
5405   TESTINST3("lsl.w  r1, r2, r3", 0x31415927, 0x00000010, r1, r2, r3, cv);
5406   TESTINST3("lsl.w  r1, r2, r3", 0x31415927, 0x0000001F, r1, r2, r3, cv);
5407   TESTINST3("lsl.w  r1, r2, r3", 0x31415927, 0x00000020, r1, r2, r3, cv);
5408   TESTINST3("lsl.w  r1, r2, r3", 0x31415927, 0x00000021, r1, r2, r3, cv);
5409   TESTCARRYEND
5410
5411   printf("(T?) LSR{S}.W Rd, Rn, Rm\n");
5412   TESTCARRY
5413   TESTINST3("lsrs.w r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv);
5414   TESTINST3("lsrs.w r1, r2, r3", 0x31415927, 0x00000001, r1, r2, r3, cv);
5415   TESTINST3("lsrs.w r1, r2, r3", 0x31415927, 0x00000002, r1, r2, r3, cv);
5416   TESTINST3("lsrs.w r1, r2, r3", 0x31415927, 0x0000000F, r1, r2, r3, cv);
5417   TESTINST3("lsrs.w r1, r2, r3", 0x31415927, 0x00000010, r1, r2, r3, cv);
5418   TESTINST3("lsrs.w r1, r2, r3", 0x31415927, 0x0000001F, r1, r2, r3, cv);
5419   TESTINST3("lsrs.w r1, r2, r3", 0x31415927, 0x00000020, r1, r2, r3, cv);
5420   TESTINST3("lsrs.w r1, r2, r3", 0x31415927, 0x00000021, r1, r2, r3, cv);
5421   TESTINST3("lsr.w  r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv);
5422   TESTINST3("lsr.w  r1, r2, r3", 0x31415927, 0x00000001, r1, r2, r3, cv);
5423   TESTINST3("lsr.w  r1, r2, r3", 0x31415927, 0x00000002, r1, r2, r3, cv);
5424   TESTINST3("lsr.w  r1, r2, r3", 0x31415927, 0x0000000F, r1, r2, r3, cv);
5425   TESTINST3("lsr.w  r1, r2, r3", 0x31415927, 0x00000010, r1, r2, r3, cv);
5426   TESTINST3("lsr.w  r1, r2, r3", 0x31415927, 0x0000001F, r1, r2, r3, cv);
5427   TESTINST3("lsr.w  r1, r2, r3", 0x31415927, 0x00000020, r1, r2, r3, cv);
5428   TESTINST3("lsr.w  r1, r2, r3", 0x31415927, 0x00000021, r1, r2, r3, cv);
5429   TESTCARRYEND
5430
5431   printf("(T?) ASR{S}.W Rd, Rn, Rm\n");
5432   TESTCARRY
5433   TESTINST3("asrs.w r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv);
5434   TESTINST3("asrs.w r1, r2, r3", 0x91415927, 0x00000001, r1, r2, r3, cv);
5435   TESTINST3("asrs.w r1, r2, r3", 0x31415927, 0x00000002, r1, r2, r3, cv);
5436   TESTINST3("asrs.w r1, r2, r3", 0x91415927, 0x0000000F, r1, r2, r3, cv);
5437   TESTINST3("asrs.w r1, r2, r3", 0x31415927, 0x00000010, r1, r2, r3, cv);
5438   TESTINST3("asrs.w r1, r2, r3", 0x91415927, 0x0000001F, r1, r2, r3, cv);
5439   TESTINST3("asrs.w r1, r2, r3", 0x31415927, 0x00000020, r1, r2, r3, cv);
5440   TESTINST3("asrs.w r1, r2, r3", 0x91415927, 0x00000021, r1, r2, r3, cv);
5441   TESTINST3("asr.w  r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv);
5442   TESTINST3("asr.w  r1, r2, r3", 0x91415927, 0x00000001, r1, r2, r3, cv);
5443   TESTINST3("asr.w  r1, r2, r3", 0x31415927, 0x00000002, r1, r2, r3, cv);
5444   TESTINST3("asr.w  r1, r2, r3", 0x91415927, 0x0000000F, r1, r2, r3, cv);
5445   TESTINST3("asr.w  r1, r2, r3", 0x31415927, 0x00000010, r1, r2, r3, cv);
5446   TESTINST3("asr.w  r1, r2, r3", 0x91415927, 0x0000001F, r1, r2, r3, cv);
5447   TESTINST3("asr.w  r1, r2, r3", 0x31415927, 0x00000020, r1, r2, r3, cv);
5448   TESTINST3("asr.w  r1, r2, r3", 0x91415927, 0x00000021, r1, r2, r3, cv);
5449   TESTCARRYEND
5450
5451   printf("(T?) ROR{S}.W Rd, Rn, Rm\n");
5452   TESTCARRY
5453   TESTINST3("rors.w r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv);
5454   TESTINST3("rors.w r1, r2, r3", 0x31415927, 0x00000001, r1, r2, r3, cv);
5455   TESTINST3("rors.w r1, r2, r3", 0x31415927, 0x00000002, r1, r2, r3, cv);
5456   TESTINST3("rors.w r1, r2, r3", 0x31415927, 0x0000000F, r1, r2, r3, cv);
5457   TESTINST3("rors.w r1, r2, r3", 0x31415927, 0x00000010, r1, r2, r3, cv);
5458   TESTINST3("rors.w r1, r2, r3", 0x31415927, 0x0000001F, r1, r2, r3, cv);
5459   TESTINST3("rors.w r1, r2, r3", 0x31415927, 0x00000020, r1, r2, r3, cv);
5460   TESTINST3("rors.w r1, r2, r3", 0x31415927, 0x00000021, r1, r2, r3, cv);
5461   TESTINST3("ror.w  r1, r2, r3", 0x31415927, 0x00000000, r1, r2, r3, cv);
5462   TESTINST3("ror.w  r1, r2, r3", 0x31415927, 0x00000001, r1, r2, r3, cv);
5463   TESTINST3("ror.w  r1, r2, r3", 0x31415927, 0x00000002, r1, r2, r3, cv);
5464   TESTINST3("ror.w  r1, r2, r3", 0x31415927, 0x0000000F, r1, r2, r3, cv);
5465   TESTINST3("ror.w  r1, r2, r3", 0x31415927, 0x00000010, r1, r2, r3, cv);
5466   TESTINST3("ror.w  r1, r2, r3", 0x31415927, 0x0000001F, r1, r2, r3, cv);
5467   TESTINST3("ror.w  r1, r2, r3", 0x31415927, 0x00000020, r1, r2, r3, cv);
5468   TESTINST3("ror.w  r1, r2, r3", 0x31415927, 0x00000021, r1, r2, r3, cv);
5469   TESTCARRYEND
5470
5471   printf("MVN{S}.W Rd, Rn, shift,   and MOV{S}.W ditto\n");
5472   TESTCARRY
5473   TESTINST2("lsls.w   r1, r2, #0 ", 0x7fffffff, r1, r2, cv);
5474   TESTINST2("lsls.w   r1, r2, #1 ", 0x7fffffff, r1, r2, cv);
5475   TESTINST2("lsls.w   r1, r2, #15", 0x7fffffff, r1, r2, cv);
5476   TESTINST2("lsls.w   r1, r2, #31", 0x7fffffff, r1, r2, cv);
5477   TESTINST2("lsrs.w   r1, r2, #0 ", 0x7fffffff, r1, r2, cv);
5478   TESTINST2("lsrs.w   r1, r2, #1 ", 0x7fffffff, r1, r2, cv);
5479   TESTINST2("lsrs.w   r1, r2, #15", 0x7fffffff, r1, r2, cv);
5480   TESTINST2("lsrs.w   r1, r2, #31", 0x7fffffff, r1, r2, cv);
5481   TESTINST2("asrs.w   r1, r2, #0 ", 0x7fffffff, r1, r2, cv);
5482   TESTINST2("asrs.w   r1, r2, #1 ", 0x7fffffff, r1, r2, cv);
5483   TESTINST2("asrs.w   r1, r2, #15", 0x7fffffff, r1, r2, cv);
5484   TESTINST2("asrs.w   r1, r2, #31", 0x7fffffff, r1, r2, cv);
5485   TESTINST2("rors.w   r1, r2, #0 ", 0x7fffffff, r1, r2, cv);
5486   TESTINST2("rors.w   r1, r2, #1 ", 0x7fffffff, r1, r2, cv);
5487   TESTINST2("rors.w   r1, r2, #15", 0x7fffffff, r1, r2, cv);
5488   TESTINST2("rors.w   r1, r2, #31", 0x7fffffff, r1, r2, cv);
5489   TESTINST2("lsl.w    r1, r2, #0 ", 0x7fffffff, r1, r2, cv);
5490   TESTINST2("lsl.w    r1, r2, #1 ", 0x7fffffff, r1, r2, cv);
5491   TESTINST2("lsl.w    r1, r2, #15", 0x7fffffff, r1, r2, cv);
5492   TESTINST2("lsl.w    r1, r2, #31", 0x7fffffff, r1, r2, cv);
5493   TESTINST2("lsr.w    r1, r2, #0 ", 0x7fffffff, r1, r2, cv);
5494   TESTINST2("lsr.w    r1, r2, #1 ", 0x7fffffff, r1, r2, cv);
5495   TESTINST2("lsr.w    r1, r2, #15", 0x7fffffff, r1, r2, cv);
5496   TESTINST2("lsr.w    r1, r2, #31", 0x7fffffff, r1, r2, cv);
5497   TESTINST2("asr.w    r1, r2, #0 ", 0x7fffffff, r1, r2, cv);
5498   TESTINST2("asr.w    r1, r2, #1 ", 0x7fffffff, r1, r2, cv);
5499   TESTINST2("asr.w    r1, r2, #15", 0x7fffffff, r1, r2, cv);
5500   TESTINST2("asr.w    r1, r2, #31", 0x7fffffff, r1, r2, cv);
5501   TESTINST2("ror.w    r1, r2, #0 ", 0x7fffffff, r1, r2, cv);
5502   TESTINST2("ror.w    r1, r2, #1 ", 0x7fffffff, r1, r2, cv);
5503   TESTINST2("ror.w    r1, r2, #15", 0x7fffffff, r1, r2, cv);
5504   TESTINST2("ror.w    r1, r2, #31", 0x7fffffff, r1, r2, cv);
5505   TESTINST2("mvns.w   r1, r2, lsl #0 ", 0x7fffffff, r1, r2, cv);
5506   TESTINST2("mvns.w   r1, r2, lsl #1 ", 0x7fffffff, r1, r2, cv);
5507   TESTINST2("mvns.w   r1, r2, lsl #15", 0x7fffffff, r1, r2, cv);
5508   TESTINST2("mvns.w   r1, r2, lsl #31", 0x7fffffff, r1, r2, cv);
5509   TESTINST2("mvns.w   r1, r2, lsr #0 ", 0x7fffffff, r1, r2, cv);
5510   TESTINST2("mvns.w   r1, r2, lsr #1 ", 0x7fffffff, r1, r2, cv);
5511   TESTINST2("mvns.w   r1, r2, lsr #15", 0x7fffffff, r1, r2, cv);
5512   TESTINST2("mvns.w   r1, r2, lsr #31", 0x7fffffff, r1, r2, cv);
5513   TESTINST2("mvns.w   r1, r2, asr #0 ", 0x7fffffff, r1, r2, cv);
5514   TESTINST2("mvns.w   r1, r2, asr #1 ", 0x7fffffff, r1, r2, cv);
5515   TESTINST2("mvns.w   r1, r2, asr #15", 0x7fffffff, r1, r2, cv);
5516   TESTINST2("mvns.w   r1, r2, asr #31", 0x7fffffff, r1, r2, cv);
5517   TESTINST2("mvns.w   r1, r2, ror #0 ", 0x7fffffff, r1, r2, cv);
5518   TESTINST2("mvns.w   r1, r2, ror #1 ", 0x7fffffff, r1, r2, cv);
5519   TESTINST2("mvns.w   r1, r2, ror #15", 0x7fffffff, r1, r2, cv);
5520   TESTINST2("mvns.w   r1, r2, ror #31", 0x7fffffff, r1, r2, cv);
5521   TESTINST2("mvn.w    r1, r2, lsl #0 ", 0x7fffffff, r1, r2, cv);
5522   TESTINST2("mvn.w    r1, r2, lsl #1 ", 0x7fffffff, r1, r2, cv);
5523   TESTINST2("mvn.w    r1, r2, lsl #15", 0x7fffffff, r1, r2, cv);
5524   TESTINST2("mvn.w    r1, r2, lsl #31", 0x7fffffff, r1, r2, cv);
5525   TESTINST2("mvn.w    r1, r2, lsr #0 ", 0x7fffffff, r1, r2, cv);
5526   TESTINST2("mvn.w    r1, r2, lsr #1 ", 0x7fffffff, r1, r2, cv);
5527   TESTINST2("mvn.w    r1, r2, lsr #15", 0x7fffffff, r1, r2, cv);
5528   TESTINST2("mvn.w    r1, r2, lsr #31", 0x7fffffff, r1, r2, cv);
5529   TESTINST2("mvn.w    r1, r2, asr #0 ", 0x7fffffff, r1, r2, cv);
5530   TESTINST2("mvn.w    r1, r2, asr #1 ", 0x7fffffff, r1, r2, cv);
5531   TESTINST2("mvn.w    r1, r2, asr #15", 0x7fffffff, r1, r2, cv);
5532   TESTINST2("mvn.w    r1, r2, asr #31", 0x7fffffff, r1, r2, cv);
5533   TESTINST2("mvn.w    r1, r2, ror #0 ", 0x7fffffff, r1, r2, cv);
5534   TESTINST2("mvn.w    r1, r2, ror #1 ", 0x7fffffff, r1, r2, cv);
5535   TESTINST2("mvn.w    r1, r2, ror #15", 0x7fffffff, r1, r2, cv);
5536   TESTINST2("mvn.w    r1, r2, ror #31", 0x7fffffff, r1, r2, cv);
5537   TESTINST2("lsls.w   r1, r2, #0 ", 0x00000000, r1, r2, cv);
5538   TESTINST2("lsls.w   r1, r2, #1 ", 0x00000000, r1, r2, cv);
5539   TESTINST2("lsls.w   r1, r2, #15", 0x00000000, r1, r2, cv);
5540   TESTINST2("lsls.w   r1, r2, #31", 0x00000000, r1, r2, cv);
5541   TESTINST2("lsrs.w   r1, r2, #0 ", 0x00000000, r1, r2, cv);
5542   TESTINST2("lsrs.w   r1, r2, #1 ", 0x00000000, r1, r2, cv);
5543   TESTINST2("lsrs.w   r1, r2, #15", 0x00000000, r1, r2, cv);
5544   TESTINST2("lsrs.w   r1, r2, #31", 0x00000000, r1, r2, cv);
5545   TESTINST2("asrs.w   r1, r2, #0 ", 0x00000000, r1, r2, cv);
5546   TESTINST2("asrs.w   r1, r2, #1 ", 0x00000000, r1, r2, cv);
5547   TESTINST2("asrs.w   r1, r2, #15", 0x00000000, r1, r2, cv);
5548   TESTINST2("asrs.w   r1, r2, #31", 0x00000000, r1, r2, cv);
5549   TESTINST2("rors.w   r1, r2, #0 ", 0x00000000, r1, r2, cv);
5550   TESTINST2("rors.w   r1, r2, #1 ", 0x00000000, r1, r2, cv);
5551   TESTINST2("rors.w   r1, r2, #15", 0x00000000, r1, r2, cv);
5552   TESTINST2("rors.w   r1, r2, #31", 0x00000000, r1, r2, cv);
5553   TESTINST2("lsl.w    r1, r2, #0 ", 0x00000000, r1, r2, cv);
5554   TESTINST2("lsl.w    r1, r2, #1 ", 0x00000000, r1, r2, cv);
5555   TESTINST2("lsl.w    r1, r2, #15", 0x00000000, r1, r2, cv);
5556   TESTINST2("lsl.w    r1, r2, #31", 0x00000000, r1, r2, cv);
5557   TESTINST2("lsr.w    r1, r2, #0 ", 0x00000000, r1, r2, cv);
5558   TESTINST2("lsr.w    r1, r2, #1 ", 0x00000000, r1, r2, cv);
5559   TESTINST2("lsr.w    r1, r2, #15", 0x00000000, r1, r2, cv);
5560   TESTINST2("lsr.w    r1, r2, #31", 0x00000000, r1, r2, cv);
5561   TESTINST2("asr.w    r1, r2, #0 ", 0x00000000, r1, r2, cv);
5562   TESTINST2("asr.w    r1, r2, #1 ", 0x00000000, r1, r2, cv);
5563   TESTINST2("asr.w    r1, r2, #15", 0x00000000, r1, r2, cv);
5564   TESTINST2("asr.w    r1, r2, #31", 0x00000000, r1, r2, cv);
5565   TESTINST2("ror.w    r1, r2, #0 ", 0x00000000, r1, r2, cv);
5566   TESTINST2("ror.w    r1, r2, #1 ", 0x00000000, r1, r2, cv);
5567   TESTINST2("ror.w    r1, r2, #15", 0x00000000, r1, r2, cv);
5568   TESTINST2("ror.w    r1, r2, #31", 0x00000000, r1, r2, cv);
5569   TESTINST2("mvns.w   r1, r2, lsl #0 ", 0x00000000, r1, r2, cv);
5570   TESTINST2("mvns.w   r1, r2, lsl #1 ", 0x00000000, r1, r2, cv);
5571   TESTINST2("mvns.w   r1, r2, lsl #15", 0x00000000, r1, r2, cv);
5572   TESTINST2("mvns.w   r1, r2, lsl #31", 0x00000000, r1, r2, cv);
5573   TESTINST2("mvns.w   r1, r2, lsr #0 ", 0x00000000, r1, r2, cv);
5574   TESTINST2("mvns.w   r1, r2, lsr #1 ", 0x00000000, r1, r2, cv);
5575   TESTINST2("mvns.w   r1, r2, lsr #15", 0x00000000, r1, r2, cv);
5576   TESTINST2("mvns.w   r1, r2, lsr #31", 0x00000000, r1, r2, cv);
5577   TESTINST2("mvns.w   r1, r2, asr #0 ", 0x00000000, r1, r2, cv);
5578   TESTINST2("mvns.w   r1, r2, asr #1 ", 0x00000000, r1, r2, cv);
5579   TESTINST2("mvns.w   r1, r2, asr #15", 0x00000000, r1, r2, cv);
5580   TESTINST2("mvns.w   r1, r2, asr #31", 0x00000000, r1, r2, cv);
5581   TESTINST2("mvns.w   r1, r2, ror #0 ", 0x00000000, r1, r2, cv);
5582   TESTINST2("mvns.w   r1, r2, ror #1 ", 0x00000000, r1, r2, cv);
5583   TESTINST2("mvns.w   r1, r2, ror #15", 0x00000000, r1, r2, cv);
5584   TESTINST2("mvns.w   r1, r2, ror #31", 0x00000000, r1, r2, cv);
5585   TESTINST2("mvn.w    r1, r2, lsl #0 ", 0x00000000, r1, r2, cv);
5586   TESTINST2("mvn.w    r1, r2, lsl #1 ", 0x00000000, r1, r2, cv);
5587   TESTINST2("mvn.w    r1, r2, lsl #15", 0x00000000, r1, r2, cv);
5588   TESTINST2("mvn.w    r1, r2, lsl #31", 0x00000000, r1, r2, cv);
5589   TESTINST2("mvn.w    r1, r2, lsr #0 ", 0x00000000, r1, r2, cv);
5590   TESTINST2("mvn.w    r1, r2, lsr #1 ", 0x00000000, r1, r2, cv);
5591   TESTINST2("mvn.w    r1, r2, lsr #15", 0x00000000, r1, r2, cv);
5592   TESTINST2("mvn.w    r1, r2, lsr #31", 0x00000000, r1, r2, cv);
5593   TESTINST2("mvn.w    r1, r2, asr #0 ", 0x00000000, r1, r2, cv);
5594   TESTINST2("mvn.w    r1, r2, asr #1 ", 0x00000000, r1, r2, cv);
5595   TESTINST2("mvn.w    r1, r2, asr #15", 0x00000000, r1, r2, cv);
5596   TESTINST2("mvn.w    r1, r2, asr #31", 0x00000000, r1, r2, cv);
5597   TESTINST2("mvn.w    r1, r2, ror #0 ", 0x00000000, r1, r2, cv);
5598   TESTINST2("mvn.w    r1, r2, ror #1 ", 0x00000000, r1, r2, cv);
5599   TESTINST2("mvn.w    r1, r2, ror #15", 0x00000000, r1, r2, cv);
5600   TESTINST2("mvn.w    r1, r2, ror #31", 0x00000000, r1, r2, cv);
5601   TESTINST2("lsls.w   r1, r2, #0 ", 0x00000001, r1, r2, cv);
5602   TESTINST2("lsls.w   r1, r2, #1 ", 0x00000001, r1, r2, cv);
5603   TESTINST2("lsls.w   r1, r2, #15", 0x00000001, r1, r2, cv);
5604   TESTINST2("lsls.w   r1, r2, #31", 0x00000001, r1, r2, cv);
5605   TESTINST2("lsrs.w   r1, r2, #0 ", 0x00000001, r1, r2, cv);
5606   TESTINST2("lsrs.w   r1, r2, #1 ", 0x00000001, r1, r2, cv);
5607   TESTINST2("lsrs.w   r1, r2, #15", 0x00000001, r1, r2, cv);
5608   TESTINST2("lsrs.w   r1, r2, #31", 0x00000001, r1, r2, cv);
5609   TESTINST2("asrs.w   r1, r2, #0 ", 0x00000001, r1, r2, cv);
5610   TESTINST2("asrs.w   r1, r2, #1 ", 0x00000001, r1, r2, cv);
5611   TESTINST2("asrs.w   r1, r2, #15", 0x00000001, r1, r2, cv);
5612   TESTINST2("asrs.w   r1, r2, #31", 0x00000001, r1, r2, cv);
5613   TESTINST2("rors.w   r1, r2, #0 ", 0x00000001, r1, r2, cv);
5614   TESTINST2("rors.w   r1, r2, #1 ", 0x00000001, r1, r2, cv);
5615   TESTINST2("rors.w   r1, r2, #15", 0x00000001, r1, r2, cv);
5616   TESTINST2("rors.w   r1, r2, #31", 0x00000001, r1, r2, cv);
5617   TESTINST2("lsl.w    r1, r2, #0 ", 0x00000001, r1, r2, cv);
5618   TESTINST2("lsl.w    r1, r2, #1 ", 0x00000001, r1, r2, cv);
5619   TESTINST2("lsl.w    r1, r2, #15", 0x00000001, r1, r2, cv);
5620   TESTINST2("lsl.w    r1, r2, #31", 0x00000001, r1, r2, cv);
5621   TESTINST2("lsr.w    r1, r2, #0 ", 0x00000001, r1, r2, cv);
5622   TESTINST2("lsr.w    r1, r2, #1 ", 0x00000001, r1, r2, cv);
5623   TESTINST2("lsr.w    r1, r2, #15", 0x00000001, r1, r2, cv);
5624   TESTINST2("lsr.w    r1, r2, #31", 0x00000001, r1, r2, cv);
5625   TESTINST2("asr.w    r1, r2, #0 ", 0x00000001, r1, r2, cv);
5626   TESTINST2("asr.w    r1, r2, #1 ", 0x00000001, r1, r2, cv);
5627   TESTINST2("asr.w    r1, r2, #15", 0x00000001, r1, r2, cv);
5628   TESTINST2("asr.w    r1, r2, #31", 0x00000001, r1, r2, cv);
5629   TESTINST2("ror.w    r1, r2, #0 ", 0x00000001, r1, r2, cv);
5630   TESTINST2("ror.w    r1, r2, #1 ", 0x00000001, r1, r2, cv);
5631   TESTINST2("ror.w    r1, r2, #15", 0x00000001, r1, r2, cv);
5632   TESTINST2("ror.w    r1, r2, #31", 0x00000001, r1, r2, cv);
5633   TESTINST2("mvns.w   r1, r2, lsl #0 ", 0x00000001, r1, r2, cv);
5634   TESTINST2("mvns.w   r1, r2, lsl #1 ", 0x00000001, r1, r2, cv);
5635   TESTINST2("mvns.w   r1, r2, lsl #15", 0x00000001, r1, r2, cv);
5636   TESTINST2("mvns.w   r1, r2, lsl #31", 0x00000001, r1, r2, cv);
5637   TESTINST2("mvns.w   r1, r2, lsr #0 ", 0x00000001, r1, r2, cv);
5638   TESTINST2("mvns.w   r1, r2, lsr #1 ", 0x00000001, r1, r2, cv);
5639   TESTINST2("mvns.w   r1, r2, lsr #15", 0x00000001, r1, r2, cv);
5640   TESTINST2("mvns.w   r1, r2, lsr #31", 0x00000001, r1, r2, cv);
5641   TESTINST2("mvns.w   r1, r2, asr #0 ", 0x00000001, r1, r2, cv);
5642   TESTINST2("mvns.w   r1, r2, asr #1 ", 0x00000001, r1, r2, cv);
5643   TESTINST2("mvns.w   r1, r2, asr #15", 0x00000001, r1, r2, cv);
5644   TESTINST2("mvns.w   r1, r2, asr #31", 0x00000001, r1, r2, cv);
5645   TESTINST2("mvns.w   r1, r2, ror #0 ", 0x00000001, r1, r2, cv);
5646   TESTINST2("mvns.w   r1, r2, ror #1 ", 0x00000001, r1, r2, cv);
5647   TESTINST2("mvns.w   r1, r2, ror #15", 0x00000001, r1, r2, cv);
5648   TESTINST2("mvns.w   r1, r2, ror #31", 0x00000001, r1, r2, cv);
5649   TESTINST2("mvn.w    r1, r2, lsl #0 ", 0x00000001, r1, r2, cv);
5650   TESTINST2("mvn.w    r1, r2, lsl #1 ", 0x00000001, r1, r2, cv);
5651   TESTINST2("mvn.w    r1, r2, lsl #15", 0x00000001, r1, r2, cv);
5652   TESTINST2("mvn.w    r1, r2, lsl #31", 0x00000001, r1, r2, cv);
5653   TESTINST2("mvn.w    r1, r2, lsr #0 ", 0x00000001, r1, r2, cv);
5654   TESTINST2("mvn.w    r1, r2, lsr #1 ", 0x00000001, r1, r2, cv);
5655   TESTINST2("mvn.w    r1, r2, lsr #15", 0x00000001, r1, r2, cv);
5656   TESTINST2("mvn.w    r1, r2, lsr #31", 0x00000001, r1, r2, cv);
5657   TESTINST2("mvn.w    r1, r2, asr #0 ", 0x00000001, r1, r2, cv);
5658   TESTINST2("mvn.w    r1, r2, asr #1 ", 0x00000001, r1, r2, cv);
5659   TESTINST2("mvn.w    r1, r2, asr #15", 0x00000001, r1, r2, cv);
5660   TESTINST2("mvn.w    r1, r2, asr #31", 0x00000001, r1, r2, cv);
5661   TESTINST2("mvn.w    r1, r2, ror #0 ", 0x00000001, r1, r2, cv);
5662   TESTINST2("mvn.w    r1, r2, ror #1 ", 0x00000001, r1, r2, cv);
5663   TESTINST2("mvn.w    r1, r2, ror #15", 0x00000001, r1, r2, cv);
5664   TESTINST2("mvn.w    r1, r2, ror #31", 0x00000001, r1, r2, cv);
5665   TESTINST2("lsls.w   r1, r2, #0 ", 0x9218abcd, r1, r2, cv);
5666   TESTINST2("lsls.w   r1, r2, #1 ", 0x9218abcd, r1, r2, cv);
5667   TESTINST2("lsls.w   r1, r2, #15", 0x9218abcd, r1, r2, cv);
5668   TESTINST2("lsls.w   r1, r2, #31", 0x9218abcd, r1, r2, cv);
5669   TESTINST2("lsrs.w   r1, r2, #0 ", 0x9218abcd, r1, r2, cv);
5670   TESTINST2("lsrs.w   r1, r2, #1 ", 0x9218abcd, r1, r2, cv);
5671   TESTINST2("lsrs.w   r1, r2, #15", 0x9218abcd, r1, r2, cv);
5672   TESTINST2("lsrs.w   r1, r2, #31", 0x9218abcd, r1, r2, cv);
5673   TESTINST2("asrs.w   r1, r2, #0 ", 0x9218abcd, r1, r2, cv);
5674   TESTINST2("asrs.w   r1, r2, #1 ", 0x9218abcd, r1, r2, cv);
5675   TESTINST2("asrs.w   r1, r2, #15", 0x9218abcd, r1, r2, cv);
5676   TESTINST2("asrs.w   r1, r2, #31", 0x9218abcd, r1, r2, cv);
5677   TESTINST2("rors.w   r1, r2, #0 ", 0x9218abcd, r1, r2, cv);
5678   TESTINST2("rors.w   r1, r2, #1 ", 0x9218abcd, r1, r2, cv);
5679   TESTINST2("rors.w   r1, r2, #15", 0x9218abcd, r1, r2, cv);
5680   TESTINST2("rors.w   r1, r2, #31", 0x9218abcd, r1, r2, cv);
5681   TESTINST2("lsl.w    r1, r2, #0 ", 0x9218abcd, r1, r2, cv);
5682   TESTINST2("lsl.w    r1, r2, #1 ", 0x9218abcd, r1, r2, cv);
5683   TESTINST2("lsl.w    r1, r2, #15", 0x9218abcd, r1, r2, cv);
5684   TESTINST2("lsl.w    r1, r2, #31", 0x9218abcd, r1, r2, cv);
5685   TESTINST2("lsr.w    r1, r2, #0 ", 0x9218abcd, r1, r2, cv);
5686   TESTINST2("lsr.w    r1, r2, #1 ", 0x9218abcd, r1, r2, cv);
5687   TESTINST2("lsr.w    r1, r2, #15", 0x9218abcd, r1, r2, cv);
5688   TESTINST2("lsr.w    r1, r2, #31", 0x9218abcd, r1, r2, cv);
5689   TESTINST2("asr.w    r1, r2, #0 ", 0x9218abcd, r1, r2, cv);
5690   TESTINST2("asr.w    r1, r2, #1 ", 0x9218abcd, r1, r2, cv);
5691   TESTINST2("asr.w    r1, r2, #15", 0x9218abcd, r1, r2, cv);
5692   TESTINST2("asr.w    r1, r2, #31", 0x9218abcd, r1, r2, cv);
5693   TESTINST2("ror.w    r1, r2, #0 ", 0x9218abcd, r1, r2, cv);
5694   TESTINST2("ror.w    r1, r2, #1 ", 0x9218abcd, r1, r2, cv);
5695   TESTINST2("ror.w    r1, r2, #15", 0x9218abcd, r1, r2, cv);
5696   TESTINST2("ror.w    r1, r2, #31", 0x9218abcd, r1, r2, cv);
5697   TESTINST2("mvns.w   r1, r2, lsl #0 ", 0x9218abcd, r1, r2, cv);
5698   TESTINST2("mvns.w   r1, r2, lsl #1 ", 0x9218abcd, r1, r2, cv);
5699   TESTINST2("mvns.w   r1, r2, lsl #15", 0x9218abcd, r1, r2, cv);
5700   TESTINST2("mvns.w   r1, r2, lsl #31", 0x9218abcd, r1, r2, cv);
5701   TESTINST2("mvns.w   r1, r2, lsr #0 ", 0x9218abcd, r1, r2, cv);
5702   TESTINST2("mvns.w   r1, r2, lsr #1 ", 0x9218abcd, r1, r2, cv);
5703   TESTINST2("mvns.w   r1, r2, lsr #15", 0x9218abcd, r1, r2, cv);
5704   TESTINST2("mvns.w   r1, r2, lsr #31", 0x9218abcd, r1, r2, cv);
5705   TESTINST2("mvns.w   r1, r2, asr #0 ", 0x9218abcd, r1, r2, cv);
5706   TESTINST2("mvns.w   r1, r2, asr #1 ", 0x9218abcd, r1, r2, cv);
5707   TESTINST2("mvns.w   r1, r2, asr #15", 0x9218abcd, r1, r2, cv);
5708   TESTINST2("mvns.w   r1, r2, asr #31", 0x9218abcd, r1, r2, cv);
5709   TESTINST2("mvns.w   r1, r2, ror #0 ", 0x9218abcd, r1, r2, cv);
5710   TESTINST2("mvns.w   r1, r2, ror #1 ", 0x9218abcd, r1, r2, cv);
5711   TESTINST2("mvns.w   r1, r2, ror #15", 0x9218abcd, r1, r2, cv);
5712   TESTINST2("mvns.w   r1, r2, ror #31", 0x9218abcd, r1, r2, cv);
5713   TESTINST2("mvn.w    r1, r2, lsl #0 ", 0x9218abcd, r1, r2, cv);
5714   TESTINST2("mvn.w    r1, r2, lsl #1 ", 0x9218abcd, r1, r2, cv);
5715   TESTINST2("mvn.w    r1, r2, lsl #15", 0x9218abcd, r1, r2, cv);
5716   TESTINST2("mvn.w    r1, r2, lsl #31", 0x9218abcd, r1, r2, cv);
5717   TESTINST2("mvn.w    r1, r2, lsr #0 ", 0x9218abcd, r1, r2, cv);
5718   TESTINST2("mvn.w    r1, r2, lsr #1 ", 0x9218abcd, r1, r2, cv);
5719   TESTINST2("mvn.w    r1, r2, lsr #15", 0x9218abcd, r1, r2, cv);
5720   TESTINST2("mvn.w    r1, r2, lsr #31", 0x9218abcd, r1, r2, cv);
5721   TESTINST2("mvn.w    r1, r2, asr #0 ", 0x9218abcd, r1, r2, cv);
5722   TESTINST2("mvn.w    r1, r2, asr #1 ", 0x9218abcd, r1, r2, cv);
5723   TESTINST2("mvn.w    r1, r2, asr #15", 0x9218abcd, r1, r2, cv);
5724   TESTINST2("mvn.w    r1, r2, asr #31", 0x9218abcd, r1, r2, cv);
5725   TESTINST2("mvn.w    r1, r2, ror #0 ", 0x9218abcd, r1, r2, cv);
5726   TESTINST2("mvn.w    r1, r2, ror #1 ", 0x9218abcd, r1, r2, cv);
5727   TESTINST2("mvn.w    r1, r2, ror #15", 0x9218abcd, r1, r2, cv);
5728   TESTINST2("mvn.w    r1, r2, ror #31", 0x9218abcd, r1, r2, cv);
5729   TESTINST2("lsls.w   r1, r2, #0 ", 0xffffffff, r1, r2, cv);
5730   TESTINST2("lsls.w   r1, r2, #1 ", 0xffffffff, r1, r2, cv);
5731   TESTINST2("lsls.w   r1, r2, #15", 0xffffffff, r1, r2, cv);
5732   TESTINST2("lsls.w   r1, r2, #31", 0xffffffff, r1, r2, cv);
5733   TESTINST2("lsrs.w   r1, r2, #0 ", 0xffffffff, r1, r2, cv);
5734   TESTINST2("lsrs.w   r1, r2, #1 ", 0xffffffff, r1, r2, cv);
5735   TESTINST2("lsrs.w   r1, r2, #15", 0xffffffff, r1, r2, cv);
5736   TESTINST2("lsrs.w   r1, r2, #31", 0xffffffff, r1, r2, cv);
5737   TESTINST2("asrs.w   r1, r2, #0 ", 0xffffffff, r1, r2, cv);
5738   TESTINST2("asrs.w   r1, r2, #1 ", 0xffffffff, r1, r2, cv);
5739   TESTINST2("asrs.w   r1, r2, #15", 0xffffffff, r1, r2, cv);
5740   TESTINST2("asrs.w   r1, r2, #31", 0xffffffff, r1, r2, cv);
5741   TESTINST2("rors.w   r1, r2, #0 ", 0xffffffff, r1, r2, cv);
5742   TESTINST2("rors.w   r1, r2, #1 ", 0xffffffff, r1, r2, cv);
5743   TESTINST2("rors.w   r1, r2, #15", 0xffffffff, r1, r2, cv);
5744   TESTINST2("rors.w   r1, r2, #31", 0xffffffff, r1, r2, cv);
5745   TESTINST2("lsl.w    r1, r2, #0 ", 0xffffffff, r1, r2, cv);
5746   TESTINST2("lsl.w    r1, r2, #1 ", 0xffffffff, r1, r2, cv);
5747   TESTINST2("lsl.w    r1, r2, #15", 0xffffffff, r1, r2, cv);
5748   TESTINST2("lsl.w    r1, r2, #31", 0xffffffff, r1, r2, cv);
5749   TESTINST2("lsr.w    r1, r2, #0 ", 0xffffffff, r1, r2, cv);
5750   TESTINST2("lsr.w    r1, r2, #1 ", 0xffffffff, r1, r2, cv);
5751   TESTINST2("lsr.w    r1, r2, #15", 0xffffffff, r1, r2, cv);
5752   TESTINST2("lsr.w    r1, r2, #31", 0xffffffff, r1, r2, cv);
5753   TESTINST2("asr.w    r1, r2, #0 ", 0xffffffff, r1, r2, cv);
5754   TESTINST2("asr.w    r1, r2, #1 ", 0xffffffff, r1, r2, cv);
5755   TESTINST2("asr.w    r1, r2, #15", 0xffffffff, r1, r2, cv);
5756   TESTINST2("asr.w    r1, r2, #31", 0xffffffff, r1, r2, cv);
5757   TESTINST2("ror.w    r1, r2, #0 ", 0xffffffff, r1, r2, cv);
5758   TESTINST2("ror.w    r1, r2, #1 ", 0xffffffff, r1, r2, cv);
5759   TESTINST2("ror.w    r1, r2, #15", 0xffffffff, r1, r2, cv);
5760   TESTINST2("ror.w    r1, r2, #31", 0xffffffff, r1, r2, cv);
5761   TESTINST2("mvns.w   r1, r2, lsl #0 ", 0xffffffff, r1, r2, cv);
5762   TESTINST2("mvns.w   r1, r2, lsl #1 ", 0xffffffff, r1, r2, cv);
5763   TESTINST2("mvns.w   r1, r2, lsl #15", 0xffffffff, r1, r2, cv);
5764   TESTINST2("mvns.w   r1, r2, lsl #31", 0xffffffff, r1, r2, cv);
5765   TESTINST2("mvns.w   r1, r2, lsr #0 ", 0xffffffff, r1, r2, cv);
5766   TESTINST2("mvns.w   r1, r2, lsr #1 ", 0xffffffff, r1, r2, cv);
5767   TESTINST2("mvns.w   r1, r2, lsr #15", 0xffffffff, r1, r2, cv);
5768   TESTINST2("mvns.w   r1, r2, lsr #31", 0xffffffff, r1, r2, cv);
5769   TESTINST2("mvns.w   r1, r2, asr #0 ", 0xffffffff, r1, r2, cv);
5770   TESTINST2("mvns.w   r1, r2, asr #1 ", 0xffffffff, r1, r2, cv);
5771   TESTINST2("mvns.w   r1, r2, asr #15", 0xffffffff, r1, r2, cv);
5772   TESTINST2("mvns.w   r1, r2, asr #31", 0xffffffff, r1, r2, cv);
5773   TESTINST2("mvns.w   r1, r2, ror #0 ", 0xffffffff, r1, r2, cv);
5774   TESTINST2("mvns.w   r1, r2, ror #1 ", 0xffffffff, r1, r2, cv);
5775   TESTINST2("mvns.w   r1, r2, ror #15", 0xffffffff, r1, r2, cv);
5776   TESTINST2("mvns.w   r1, r2, ror #31", 0xffffffff, r1, r2, cv);
5777   TESTINST2("mvn.w    r1, r2, lsl #0 ", 0xffffffff, r1, r2, cv);
5778   TESTINST2("mvn.w    r1, r2, lsl #1 ", 0xffffffff, r1, r2, cv);
5779   TESTINST2("mvn.w    r1, r2, lsl #15", 0xffffffff, r1, r2, cv);
5780   TESTINST2("mvn.w    r1, r2, lsl #31", 0xffffffff, r1, r2, cv);
5781   TESTINST2("mvn.w    r1, r2, lsr #0 ", 0xffffffff, r1, r2, cv);
5782   TESTINST2("mvn.w    r1, r2, lsr #1 ", 0xffffffff, r1, r2, cv);
5783   TESTINST2("mvn.w    r1, r2, lsr #15", 0xffffffff, r1, r2, cv);
5784   TESTINST2("mvn.w    r1, r2, lsr #31", 0xffffffff, r1, r2, cv);
5785   TESTINST2("mvn.w    r1, r2, asr #0 ", 0xffffffff, r1, r2, cv);
5786   TESTINST2("mvn.w    r1, r2, asr #1 ", 0xffffffff, r1, r2, cv);
5787   TESTINST2("mvn.w    r1, r2, asr #15", 0xffffffff, r1, r2, cv);
5788   TESTINST2("mvn.w    r1, r2, asr #31", 0xffffffff, r1, r2, cv);
5789   TESTINST2("mvn.w    r1, r2, ror #0 ", 0xffffffff, r1, r2, cv);
5790   TESTINST2("mvn.w    r1, r2, ror #1 ", 0xffffffff, r1, r2, cv);
5791   TESTINST2("mvn.w    r1, r2, ror #15", 0xffffffff, r1, r2, cv);
5792   TESTINST2("mvn.w    r1, r2, ror #31", 0xffffffff, r1, r2, cv);
5793   TESTCARRYEND
5794
5795   printf("(T?) TST.W Rn, Rm, {shift}\n");
5796   TESTCARRY
5797   TESTINST2x("tst.w  r1, r2, lsl #1", 0x11223344, 0x99887766, r1, r2, cv);
5798   TESTINST2x("tst.w  r1, r2, lsr #1", 0x11223344, 0x99887766, r1, r2, cv);
5799   TESTINST2x("tst.w  r1, r2, asr #1", 0x11223344, 0x99887766, r1, r2, cv);
5800   TESTINST2x("tst.w  r1, r2, ror #1", 0x11223344, 0x99887766, r1, r2, cv);
5801   TESTINST2x("tst.w  r1, r2, lsl #1", 0x11223344, 0x00000000, r1, r2, cv);
5802   TESTINST2x("tst.w  r1, r2, lsr #1", 0x11223344, 0x00000000, r1, r2, cv);
5803   TESTINST2x("tst.w  r1, r2, asr #1", 0x11223344, 0x00000000, r1, r2, cv);
5804   TESTINST2x("tst.w  r1, r2, ror #1", 0x11223344, 0x00000000, r1, r2, cv);
5805   TESTINST2x("tst.w  r1, r2, lsl #1", 0x91223344, 0x40000000, r1, r2, cv);
5806   TESTINST2x("tst.w  r1, r2, lsr #1", 0x91223344, 0x40000000, r1, r2, cv);
5807   TESTINST2x("tst.w  r1, r2, asr #1", 0x91223344, 0x80000000, r1, r2, cv);
5808   TESTINST2x("tst.w  r1, r2, ror #1", 0x91223344, 0x00000001, r1, r2, cv);
5809   TESTCARRYEND
5810
5811   printf("(T?) TEQ.W Rn, Rm, {shift}\n");
5812   TESTCARRY
5813   TESTINST2x("teq.w  r1, r2, lsl #1", 0x11223344, 0x99887766, r1, r2, cv);
5814   TESTINST2x("teq.w  r1, r2, lsr #1", 0x11223344, 0x99887766, r1, r2, cv);
5815   TESTINST2x("teq.w  r1, r2, asr #1", 0x11223344, 0x99887766, r1, r2, cv);
5816   TESTINST2x("teq.w  r1, r2, ror #1", 0x11223344, 0x99887766, r1, r2, cv);
5817   TESTINST2x("teq.w  r1, r2, lsl #1", 0x11223344, 0x00000000, r1, r2, cv);
5818   TESTINST2x("teq.w  r1, r2, lsr #1", 0x11223344, 0x00000000, r1, r2, cv);
5819   TESTINST2x("teq.w  r1, r2, asr #1", 0x11223344, 0x00000000, r1, r2, cv);
5820   TESTINST2x("teq.w  r1, r2, ror #1", 0x11223344, 0x00000000, r1, r2, cv);
5821   TESTINST2x("teq.w  r1, r2, lsl #1", 0x91223344, 0x40000000, r1, r2, cv);
5822   TESTINST2x("teq.w  r1, r2, lsr #1", 0x91223344, 0x40000000, r1, r2, cv);
5823   TESTINST2x("teq.w  r1, r2, asr #1", 0x91223344, 0x80000000, r1, r2, cv);
5824   TESTINST2x("teq.w  r1, r2, ror #1", 0x91223344, 0x00000001, r1, r2, cv);
5825   TESTCARRYEND
5826
5827   printf("(T?) CMP.W Rn, Rm, {shift}\n");
5828   TESTCARRY
5829   TESTINST2x("cmp.w  r1, r2, lsl #1", 0x11223344, 0x99887766, r1, r2, cv);
5830   TESTINST2x("cmp.w  r1, r2, lsr #1", 0x11223344, 0x99887766, r1, r2, cv);
5831   TESTINST2x("cmp.w  r1, r2, asr #1", 0x11223344, 0x99887766, r1, r2, cv);
5832   TESTINST2x("cmp.w  r1, r2, ror #1", 0x11223344, 0x99887766, r1, r2, cv);
5833   TESTINST2x("cmp.w  r1, r2, lsl #1", 0x11223344, 0x00000000, r1, r2, cv);
5834   TESTINST2x("cmp.w  r1, r2, lsr #1", 0x11223344, 0x00000000, r1, r2, cv);
5835   TESTINST2x("cmp.w  r1, r2, asr #1", 0x11223344, 0x00000000, r1, r2, cv);
5836   TESTINST2x("cmp.w  r1, r2, ror #1", 0x11223344, 0x00000000, r1, r2, cv);
5837   TESTINST2x("cmp.w  r1, r2, lsl #1", 0x91223344, 0x40000000, r1, r2, cv);
5838   TESTINST2x("cmp.w  r1, r2, lsr #1", 0x91223344, 0x40000000, r1, r2, cv);
5839   TESTINST2x("cmp.w  r1, r2, asr #1", 0x91223344, 0x80000000, r1, r2, cv);
5840   TESTINST2x("cmp.w  r1, r2, ror #1", 0x91223344, 0x00000001, r1, r2, cv);
5841   TESTINST2x("cmp.w  r1, r2, lsr #2", 0x15555555, 0x55555555, r1, r2, cv);
5842   TESTINST2x("cmp.w  r1, r2, ror #1", 0x55555555, 0xaaaaaaaa, r1, r2, cv);
5843   TESTCARRYEND
5844
5845   printf("(T?) CMN.W Rn, Rm, {shift}\n");
5846   TESTCARRY
5847   TESTINST2x("cmn.w  r1, r2, lsl #1", 0x11223344, 0x99887766, r1, r2, cv);
5848   TESTINST2x("cmn.w  r1, r2, lsr #1", 0x11223344, 0x99887766, r1, r2, cv);
5849   TESTINST2x("cmn.w  r1, r2, asr #1", 0x11223344, 0x99887766, r1, r2, cv);
5850   TESTINST2x("cmn.w  r1, r2, ror #1", 0x11223344, 0x99887766, r1, r2, cv);
5851   TESTINST2x("cmn.w  r1, r2, lsl #1", 0x11223344, 0x00000000, r1, r2, cv);
5852   TESTINST2x("cmn.w  r1, r2, lsr #1", 0x11223344, 0x00000000, r1, r2, cv);
5853   TESTINST2x("cmn.w  r1, r2, asr #1", 0x11223344, 0x00000000, r1, r2, cv);
5854   TESTINST2x("cmn.w  r1, r2, ror #1", 0x11223344, 0x00000000, r1, r2, cv);
5855   TESTINST2x("cmn.w  r1, r2, lsl #1", 0x91223344, 0x40000000, r1, r2, cv);
5856   TESTINST2x("cmn.w  r1, r2, lsr #1", 0x91223344, 0x40000000, r1, r2, cv);
5857   TESTINST2x("cmn.w  r1, r2, asr #1", 0x91223344, 0x80000000, r1, r2, cv);
5858   TESTINST2x("cmn.w  r1, r2, ror #1", 0x91223344, 0x00000001, r1, r2, cv);
5859   TESTINST2x("cmn.w  r1, r2, lsr #2", 0x15555555, 0x55555555, r1, r2, cv);
5860   TESTINST2x("cmn.w  r1, r2, ror #1", 0x55555555, 0xaaaaaaaa, r1, r2, cv);
5861   TESTCARRYEND
5862
5863   printf("(T2) MOV{S}.W Rd, #constT\n");
5864   TESTCARRY
5865   TESTINST1("movs.w  r9, 0x00000000", r9, cv);
5866   TESTINST1("movs.w  r9, 0x000000FF", r9, cv);
5867   TESTINST1("movs.w  r9, 0x0000007F", r9, cv);
5868   TESTINST1("movs.w  r9, 0x00FF00FF", r9, cv);
5869   TESTINST1("movs.w  r9, 0x007F007F", r9, cv);
5870   TESTINST1("movs.w  r9, 0x43434343", r9, cv);
5871   TESTINST1("movs.w  r9, 0x93939393", r9, cv);
5872   TESTINST1("movs.w  r9, 0x93000000", r9, cv);
5873   TESTINST1("movs.w  r9, 0x43000000", r9, cv);
5874   TESTINST1("movs.w  r9, 0x09300000", r9, cv);
5875   TESTINST1("movs.w  r9, 0x04300000", r9, cv);
5876   TESTINST1("movs.w  r9, 0x00930000", r9, cv);
5877   TESTINST1("movs.w  r9, 0x00430000", r9, cv);
5878   TESTINST1("movs.w  r9, 0x00000930", r9, cv);
5879   TESTINST1("movs.w  r9, 0x00000430", r9, cv);
5880   TESTINST1("movs.w  r9, 0x00000093", r9, cv);
5881   TESTINST1("movs.w  r9, 0x00000043", r9, cv);
5882   TESTINST1("mov.w   r9, 0x00000000", r9, cv);
5883   TESTINST1("mov.w   r9, 0x000000FF", r9, cv);
5884   TESTINST1("mov.w   r9, 0x0000007F", r9, cv);
5885   TESTINST1("mov.w   r9, 0x00FF00FF", r9, cv);
5886   TESTINST1("mov.w   r9, 0x007F007F", r9, cv);
5887   TESTINST1("mov.w   r9, 0x43434343", r9, cv);
5888   TESTINST1("mov.w   r9, 0x93939393", r9, cv);
5889   TESTINST1("mov.w   r9, 0x93000000", r9, cv);
5890   TESTINST1("mov.w   r9, 0x43000000", r9, cv);
5891   TESTINST1("mov.w   r9, 0x09300000", r9, cv);
5892   TESTINST1("mov.w   r9, 0x04300000", r9, cv);
5893   TESTINST1("mov.w   r9, 0x00930000", r9, cv);
5894   TESTINST1("mov.w   r9, 0x00430000", r9, cv);
5895   TESTINST1("mov.w   r9, 0x00000930", r9, cv);
5896   TESTINST1("mov.w   r9, 0x00000430", r9, cv);
5897   TESTINST1("mov.w   r9, 0x00000093", r9, cv);
5898   TESTINST1("mov.w   r9, 0x00000043", r9, cv);
5899   TESTCARRYEND
5900
5901   printf("(T2) MVN{S}.W Rd, #constT\n");
5902   TESTCARRY
5903   TESTINST1("mvns.w  r9, 0x00000000", r9, cv);
5904   TESTINST1("mvns.w  r9, 0x000000FF", r9, cv);
5905   TESTINST1("mvns.w  r9, 0x0000007F", r9, cv);
5906   TESTINST1("mvns.w  r9, 0x00FF00FF", r9, cv);
5907   TESTINST1("mvns.w  r9, 0x007F007F", r9, cv);
5908   TESTINST1("mvns.w  r9, 0x43434343", r9, cv);
5909   TESTINST1("mvns.w  r9, 0x93939393", r9, cv);
5910   TESTINST1("mvns.w  r9, 0x93000000", r9, cv);
5911   TESTINST1("mvns.w  r9, 0x43000000", r9, cv);
5912   TESTINST1("mvns.w  r9, 0x09300000", r9, cv);
5913   TESTINST1("mvns.w  r9, 0x04300000", r9, cv);
5914   TESTINST1("mvns.w  r9, 0x00930000", r9, cv);
5915   TESTINST1("mvns.w  r9, 0x00430000", r9, cv);
5916   TESTINST1("mvns.w  r9, 0x00000930", r9, cv);
5917   TESTINST1("mvns.w  r9, 0x00000430", r9, cv);
5918   TESTINST1("mvns.w  r9, 0x00000093", r9, cv);
5919   TESTINST1("mvns.w  r9, 0x00000043", r9, cv);
5920   TESTINST1("mvn.w   r9, 0x00000000", r9, cv);
5921   TESTINST1("mvn.w   r9, 0x000000FF", r9, cv);
5922   TESTINST1("mvn.w   r9, 0x0000007F", r9, cv);
5923   TESTINST1("mvn.w   r9, 0x00FF00FF", r9, cv);
5924   TESTINST1("mvn.w   r9, 0x007F007F", r9, cv);
5925   TESTINST1("mvn.w   r9, 0x43434343", r9, cv);
5926   TESTINST1("mvn.w   r9, 0x93939393", r9, cv);
5927   TESTINST1("mvn.w   r9, 0x93000000", r9, cv);
5928   TESTINST1("mvn.w   r9, 0x43000000", r9, cv);
5929   TESTINST1("mvn.w   r9, 0x09300000", r9, cv);
5930   TESTINST1("mvn.w   r9, 0x04300000", r9, cv);
5931   TESTINST1("mvn.w   r9, 0x00930000", r9, cv);
5932   TESTINST1("mvn.w   r9, 0x00430000", r9, cv);
5933   TESTINST1("mvn.w   r9, 0x00000930", r9, cv);
5934   TESTINST1("mvn.w   r9, 0x00000430", r9, cv);
5935   TESTINST1("mvn.w   r9, 0x00000093", r9, cv);
5936   TESTINST1("mvn.w   r9, 0x00000043", r9, cv);
5937   TESTCARRYEND
5938
5939   printf("(T1) RBIT Rd, Rm\n");
5940	TESTINST2("rbit r0, r1", 0x00000000, r0, r1, 0);
5941	TESTINST2("rbit r0, r1", 0xFFFFFFFF, r0, r1, 0);
5942	TESTINST2("rbit r0, r1", 0x80000000, r0, r1, 0);
5943	TESTINST2("rbit r0, r1", 0x00000001, r0, r1, 0);
5944	TESTINST2("rbit r0, r1", 0x31415927, r0, r1, 0);
5945	TESTINST2("rbit r0, r1", 0x14141562, r0, r1, 0);
5946   TESTINST2("rbit r0, r1", 0xabe8391f, r0, r1, 0);
5947   TESTINST2("rbit r0, r1", 0x9028aa80, r0, r1, 0);
5948   TESTINST2("rbit r0, r1", 0xead1fc6d, r0, r1, 0);
5949   TESTINST2("rbit r0, r1", 0x35c98c55, r0, r1, 0);
5950   TESTINST2("rbit r0, r1", 0x534af1eb, r0, r1, 0);
5951   TESTINST2("rbit r0, r1", 0x45511b08, r0, r1, 0);
5952   TESTINST2("rbit r0, r1", 0x90077f71, r0, r1, 0);
5953   TESTINST2("rbit r0, r1", 0xde8ca84b, r0, r1, 0);
5954   TESTINST2("rbit r0, r1", 0xe37a0dda, r0, r1, 0);
5955   TESTINST2("rbit r0, r1", 0xe5b83d4b, r0, r1, 0);
5956   TESTINST2("rbit r0, r1", 0xbb6d14ec, r0, r1, 0);
5957   TESTINST2("rbit r0, r1", 0x68983cc9, r0, r1, 0);
5958
5959	printf("(T1) REV Rd, Rm ------------\n");
5960	TESTINST2("rev r0, r1", 0x00000000, r0, r1, 0);
5961	TESTINST2("rev r0, r1", 0xFFFFFFFF, r0, r1, 0);
5962	TESTINST2("rev r0, r1", 0x80000000, r0, r1, 0);
5963	TESTINST2("rev r0, r1", 0x00000001, r0, r1, 0);
5964	TESTINST2("rev r0, r1", 0x31415927, r0, r1, 0);
5965	TESTINST2("rev r0, r1", 0x14141562, r0, r1, 0);
5966   TESTINST2("rev r0, r1", 0xabe8391f, r0, r1, 0);
5967   TESTINST2("rev r0, r1", 0x9028aa80, r0, r1, 0);
5968   TESTINST2("rev r0, r1", 0xead1fc6d, r0, r1, 0);
5969   TESTINST2("rev r0, r1", 0x35c98c55, r0, r1, 0);
5970   TESTINST2("rev r0, r1", 0x534af1eb, r0, r1, 0);
5971   TESTINST2("rev r0, r1", 0x45511b08, r0, r1, 0);
5972   TESTINST2("rev r0, r1", 0x90077f71, r0, r1, 0);
5973   TESTINST2("rev r0, r1", 0xde8ca84b, r0, r1, 0);
5974   TESTINST2("rev r0, r1", 0xe37a0dda, r0, r1, 0);
5975   TESTINST2("rev r0, r1", 0xe5b83d4b, r0, r1, 0);
5976   TESTINST2("rev r0, r1", 0xbb6d14ec, r0, r1, 0);
5977   TESTINST2("rev r0, r1", 0x68983cc9, r0, r1, 0);
5978
5979	printf("(T2) REV Rd, Rm ------------\n");
5980	TESTINST2("rev r8, r9", 0x00000000, r8, r9, 0);
5981	TESTINST2("rev r8, r9", 0xFFFFFFFF, r8, r9, 0);
5982	TESTINST2("rev r8, r9", 0x80000000, r8, r9, 0);
5983	TESTINST2("rev r8, r9", 0x00000001, r8, r9, 0);
5984	TESTINST2("rev r8, r9", 0x31415927, r8, r9, 0);
5985	TESTINST2("rev r8, r9", 0x14141562, r8, r9, 0);
5986   TESTINST2("rev r8, r9", 0xabe8391f, r8, r9, 0);
5987   TESTINST2("rev r8, r9", 0x9028aa80, r8, r9, 0);
5988   TESTINST2("rev r8, r9", 0xead1fc6d, r8, r9, 0);
5989   TESTINST2("rev r8, r9", 0x35c98c55, r8, r9, 0);
5990   TESTINST2("rev r8, r9", 0x534af1eb, r8, r9, 0);
5991   TESTINST2("rev r8, r9", 0x45511b08, r8, r9, 0);
5992   TESTINST2("rev r8, r9", 0x90077f71, r8, r9, 0);
5993   TESTINST2("rev r8, r9", 0xde8ca84b, r8, r9, 0);
5994   TESTINST2("rev r8, r9", 0xe37a0dda, r8, r9, 0);
5995   TESTINST2("rev r8, r9", 0xe5b83d4b, r8, r9, 0);
5996   TESTINST2("rev r8, r9", 0xbb6d14ec, r8, r9, 0);
5997   TESTINST2("rev r8, r9", 0x68983cc9, r8, r9, 0);
5998
5999	printf("(T1) REV16 Rd, Rm ------------\n");
6000	TESTINST2("rev16 r0, r1", 0x00000000, r0, r1, 0);
6001	TESTINST2("rev16 r0, r1", 0xFFFFFFFF, r0, r1, 0);
6002	TESTINST2("rev16 r0, r1", 0x80000000, r0, r1, 0);
6003	TESTINST2("rev16 r0, r1", 0x00000001, r0, r1, 0);
6004	TESTINST2("rev16 r0, r1", 0x31415927, r0, r1, 0);
6005	TESTINST2("rev16 r0, r1", 0x14141562, r0, r1, 0);
6006   TESTINST2("rev16 r0, r1", 0xabe8391f, r0, r1, 0);
6007   TESTINST2("rev16 r0, r1", 0x9028aa80, r0, r1, 0);
6008   TESTINST2("rev16 r0, r1", 0xead1fc6d, r0, r1, 0);
6009   TESTINST2("rev16 r0, r1", 0x35c98c55, r0, r1, 0);
6010   TESTINST2("rev16 r0, r1", 0x534af1eb, r0, r1, 0);
6011   TESTINST2("rev16 r0, r1", 0x45511b08, r0, r1, 0);
6012   TESTINST2("rev16 r0, r1", 0x90077f71, r0, r1, 0);
6013   TESTINST2("rev16 r0, r1", 0xde8ca84b, r0, r1, 0);
6014   TESTINST2("rev16 r0, r1", 0xe37a0dda, r0, r1, 0);
6015   TESTINST2("rev16 r0, r1", 0xe5b83d4b, r0, r1, 0);
6016   TESTINST2("rev16 r0, r1", 0xbb6d14ec, r0, r1, 0);
6017   TESTINST2("rev16 r0, r1", 0x68983cc9, r0, r1, 0);
6018
6019	printf("(T2) REV16 Rd, Rm ------------\n");
6020	TESTINST2("rev16 r8, r9", 0x00000000, r8, r9, 0);
6021	TESTINST2("rev16 r8, r9", 0xFFFFFFFF, r8, r9, 0);
6022	TESTINST2("rev16 r8, r9", 0x80000000, r8, r9, 0);
6023	TESTINST2("rev16 r8, r9", 0x00000001, r8, r9, 0);
6024	TESTINST2("rev16 r8, r9", 0x31415927, r8, r9, 0);
6025	TESTINST2("rev16 r8, r9", 0x14141562, r8, r9, 0);
6026   TESTINST2("rev16 r8, r9", 0xabe8391f, r8, r9, 0);
6027   TESTINST2("rev16 r8, r9", 0x9028aa80, r8, r9, 0);
6028   TESTINST2("rev16 r8, r9", 0xead1fc6d, r8, r9, 0);
6029   TESTINST2("rev16 r8, r9", 0x35c98c55, r8, r9, 0);
6030   TESTINST2("rev16 r8, r9", 0x534af1eb, r8, r9, 0);
6031   TESTINST2("rev16 r8, r9", 0x45511b08, r8, r9, 0);
6032   TESTINST2("rev16 r8, r9", 0x90077f71, r8, r9, 0);
6033   TESTINST2("rev16 r8, r9", 0xde8ca84b, r8, r9, 0);
6034   TESTINST2("rev16 r8, r9", 0xe37a0dda, r8, r9, 0);
6035   TESTINST2("rev16 r8, r9", 0xe5b83d4b, r8, r9, 0);
6036   TESTINST2("rev16 r8, r9", 0xbb6d14ec, r8, r9, 0);
6037   TESTINST2("rev16 r8, r9", 0x68983cc9, r8, r9, 0);
6038
6039        printf("(T1) REVSH Rd, Rm ------------\n");
6040        TESTINST2("revsh r0, r1", 0x00000000, r0, r1, 0);
6041        TESTINST2("revsh r0, r1", 0xFFFFFFFF, r0, r1, 0);
6042        TESTINST2("revsh r0, r1", 0x80000000, r0, r1, 0);
6043        TESTINST2("revsh r0, r1", 0x00000001, r0, r1, 0);
6044        TESTINST2("revsh r0, r1", 0x31415927, r0, r1, 0);
6045        TESTINST2("revsh r0, r1", 0x14141562, r0, r1, 0);
6046   TESTINST2("revsh r0, r1", 0xabe8391f, r0, r1, 0);
6047   TESTINST2("revsh r0, r1", 0x9028aa80, r0, r1, 0);
6048   TESTINST2("revsh r0, r1", 0xead1fc6d, r0, r1, 0);
6049   TESTINST2("revsh r0, r1", 0x35c98c55, r0, r1, 0);
6050   TESTINST2("revsh r0, r1", 0x534af1eb, r0, r1, 0);
6051   TESTINST2("revsh r0, r1", 0x45511b08, r0, r1, 0);
6052   TESTINST2("revsh r0, r1", 0x90077f71, r0, r1, 0);
6053   TESTINST2("revsh r0, r1", 0xde8ca84b, r0, r1, 0);
6054   TESTINST2("revsh r0, r1", 0xe37a0dda, r0, r1, 0);
6055   TESTINST2("revsh r0, r1", 0xe5b83d4b, r0, r1, 0);
6056   TESTINST2("revsh r0, r1", 0xbb6d14ec, r0, r1, 0);
6057   TESTINST2("revsh r0, r1", 0x68983cc9, r0, r1, 0);
6058
6059        printf("(T2) REVSH Rd, Rm ------------\n");
6060        TESTINST2("revsh r8, r9", 0x00000000, r8, r9, 0);
6061        TESTINST2("revsh r8, r9", 0xFFFFFFFF, r8, r9, 0);
6062        TESTINST2("revsh r8, r9", 0x80000000, r8, r9, 0);
6063        TESTINST2("revsh r8, r9", 0x00000001, r8, r9, 0);
6064        TESTINST2("revsh r8, r9", 0x31415927, r8, r9, 0);
6065        TESTINST2("revsh r8, r9", 0x14141562, r8, r9, 0);
6066   TESTINST2("revsh r8, r9", 0xabe8391f, r8, r9, 0);
6067   TESTINST2("revsh r8, r9", 0x9028aa80, r8, r9, 0);
6068   TESTINST2("revsh r8, r9", 0xead1fc6d, r8, r9, 0);
6069   TESTINST2("revsh r8, r9", 0x35c98c55, r8, r9, 0);
6070   TESTINST2("revsh r8, r9", 0x534af1eb, r8, r9, 0);
6071   TESTINST2("revsh r8, r9", 0x45511b08, r8, r9, 0);
6072   TESTINST2("revsh r8, r9", 0x90077f71, r8, r9, 0);
6073   TESTINST2("revsh r8, r9", 0xde8ca84b, r8, r9, 0);
6074   TESTINST2("revsh r8, r9", 0xe37a0dda, r8, r9, 0);
6075   TESTINST2("revsh r8, r9", 0xe5b83d4b, r8, r9, 0);
6076   TESTINST2("revsh r8, r9", 0xbb6d14ec, r8, r9, 0);
6077   TESTINST2("revsh r8, r9", 0x68983cc9, r8, r9, 0);
6078
6079	printf("------------ NOP (begin) ------------\n");
6080        printf("nop\n");
6081        __asm__ __volatile__("nop" ::: "memory","cc");
6082        printf("nop.w\n");
6083        __asm__ __volatile__("nop.w" ::: "memory","cc");
6084	printf("------------ NOP (end) ------------\n");
6085
6086   // plus whatever stuff we can throw in from the old ARM test program
6087   old_main();
6088
6089        printf("------------ SMMUL ------------\n");
6090        TESTINST3("smmul   r0, r1, r2", 0, 0, r0, r1, r2, 0);
6091        TESTINST3("smmul   r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0);
6092        TESTINST3("smmul   r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0);
6093        TESTINST3("smmul   r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0);
6094        TESTINST3("smmul   r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0);
6095        TESTINST3("smmul   r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
6096        TESTINST3("smmul   r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
6097        TESTINST3("smmul   r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
6098        TESTINST3("smmul   r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
6099        TESTINST3("smmul   r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
6100        TESTINST3("smmul   r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
6101
6102        TESTINST3("smmulr  r0, r1, r2", 0, 0, r0, r1, r2, 0);
6103        TESTINST3("smmulr  r0, r1, r2", 0xffffffff, 0, r0, r1, r2, 0);
6104        TESTINST3("smmulr  r0, r1, r2", 0, 0xffffffff, r0, r1, r2, 0);
6105        TESTINST3("smmulr  r0, r1, r2", 0xffffffff, 0xffffffff, r0, r1, r2, 0);
6106        TESTINST3("smmulr  r0, r1, r2", 0x7fffffff, 0x7fffffff, r0, r1, r2, 0);
6107        TESTINST3("smmulr  r0, r1, r2", 0x0000ffff, 0x0000ffff, r0, r1, r2, 0);
6108        TESTINST3("smmulr  r0, r1, r2", 0xe444dc25, 0xd5eef620, r0, r1, r2, 0);
6109        TESTINST3("smmulr  r0, r1, r2", 0x06ea9b2a, 0xa2108661, r0, r1, r2, 0);
6110        TESTINST3("smmulr  r0, r1, r2", 0x448f3a5f, 0x17aecf57, r0, r1, r2, 0);
6111        TESTINST3("smmulr  r0, r1, r2", 0x4b0c2337, 0xffa63d6c, r0, r1, r2, 0);
6112        TESTINST3("smmulr  r0, r1, r2", 0xf91d5f56, 0x088bc0f9, r0, r1, r2, 0);
6113
6114	printf("------------ UMAAL ------------\n");
6115	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0, 0, 0, 0, r0, r1, r2, r3, 0);
6116	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0, 1, 0, 0, r0, r1, r2, r3, 0);
6117	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 1, 1, 0, 0, r0, r1, r2, r3, 0);
6118	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0, 0xffffffff, 1, 1, r0, r1, r2, r3, 0);
6119	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0, 0, 0, 1, r0, r1, r2, r3, 0);
6120	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0, 0, 1, 0, r0, r1, r2, r3, 0);
6121	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0, 0, 1, 1, r0, r1, r2, r3, 0);
6122	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0, 0, 0xffff, 0xffff, r0, r1, r2, r3, 0);
6123	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0, 0, 0xffffffff, 0xffffffff, r0, r1, r2, r3, 0);
6124
6125	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0x27182846, 0x31415927, 0x14141356, 0x1773250A,
6126                       r0, r1, r2, r3, 0);
6127	TESTINST4_2OUT("umaal  r0, r1, r2, r3", 0x01415927, 0x74141356, 0x5773250A, 0xA7182846,
6128                       r0, r1, r2, r3, 1);
6129
6130        printf("----------------- SMMLA{R} ----------------- \n");
6131        TESTINST4("smmla  r0, r1, r2, r3",
6132                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
6133        TESTINST4("smmla  r0, r1, r2, r3",
6134                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
6135        TESTINST4("smmla  r0, r1, r2, r3",
6136                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
6137        TESTINST4("smmla  r0, r1, r2, r3",
6138                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
6139        TESTINST4("smmla  r0, r1, r2, r3",
6140                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
6141        TESTINST4("smmla  r0, r1, r2, r3",
6142                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
6143        TESTINST4("smmla  r0, r1, r2, r3",
6144                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
6145        TESTINST4("smmla  r0, r1, r2, r3",
6146                  0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
6147        TESTINST4("smmla  r0, r1, r2, r3",
6148                  0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
6149        TESTINST4("smmla  r0, r1, r2, r3",
6150                  0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
6151        TESTINST4("smmla  r0, r1, r2, r3",
6152                  0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
6153        TESTINST4("smmla  r0, r1, r2, r3",
6154                  0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
6155        TESTINST4("smmla  r0, r1, r2, r3",
6156                  0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
6157        TESTINST4("smmla  r0, r1, r2, r3",
6158                  0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
6159        TESTINST4("smmla  r0, r1, r2, r3",
6160                  0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
6161        TESTINST4("smmla  r0, r1, r2, r3",
6162                  0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
6163        TESTINST4("smmla  r0, r1, r2, r3",
6164                  0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
6165        TESTINST4("smmla  r0, r1, r2, r3",
6166                  0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
6167        TESTINST4("smmla  r0, r1, r2, r3",
6168                  0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
6169        TESTINST4("smmla  r0, r1, r2, r3",
6170                  0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
6171        TESTINST4("smmla  r0, r1, r2, r3",
6172                  0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
6173        TESTINST4("smmla  r0, r1, r2, r3",
6174                  0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
6175        TESTINST4("smmla  r0, r1, r2, r3",
6176                  0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
6177        TESTINST4("smmla  r0, r1, r2, r3",
6178                  0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
6179        TESTINST4("smmla  r0, r1, r2, r3",
6180                  0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
6181        TESTINST4("smmla  r0, r1, r2, r3",
6182                  0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
6183        TESTINST4("smmla  r0, r1, r2, r3",
6184                  0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
6185        TESTINST4("smmla  r0, r1, r2, r3",
6186                  0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
6187        TESTINST4("smmla  r0, r1, r2, r3",
6188                  0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
6189        TESTINST4("smmla  r0, r1, r2, r3",
6190                  0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
6191        TESTINST4("smmla  r0, r1, r2, r3",
6192                  0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
6193        TESTINST4("smmla  r0, r1, r2, r3",
6194                  0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
6195        TESTINST4("smmla  r0, r1, r2, r3",
6196                  0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
6197        TESTINST4("smmla  r0, r1, r2, r3",
6198                  0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
6199        TESTINST4("smmla  r0, r1, r2, r3",
6200                  0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
6201        TESTINST4("smmla  r0, r1, r2, r3",
6202                  0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
6203        TESTINST4("smmla  r0, r1, r2, r3",
6204                  0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
6205        TESTINST4("smmla  r0, r1, r2, r3",
6206                  0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
6207        TESTINST4("smmla  r0, r1, r2, r3",
6208                  0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
6209        TESTINST4("smmla  r0, r1, r2, r3",
6210                  0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
6211        TESTINST4("smmla  r0, r1, r2, r3",
6212                  0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
6213        TESTINST4("smmla  r0, r1, r2, r3",
6214                  0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
6215        TESTINST4("smmla  r0, r1, r2, r3",
6216                  0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
6217        TESTINST4("smmla  r0, r1, r2, r3",
6218                  0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
6219        TESTINST4("smmla  r0, r1, r2, r3",
6220                  0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
6221        TESTINST4("smmla  r0, r1, r2, r3",
6222                  0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
6223        TESTINST4("smmla  r0, r1, r2, r3",
6224                  0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
6225        TESTINST4("smmla  r0, r1, r2, r3",
6226                  0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
6227        TESTINST4("smmla  r0, r1, r2, r3",
6228                  0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
6229        TESTINST4("smmla  r0, r1, r2, r3",
6230                  0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
6231        TESTINST4("smmla  r0, r1, r2, r3",
6232                  0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
6233        TESTINST4("smmla  r0, r1, r2, r3",
6234                  0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
6235        TESTINST4("smmla  r0, r1, r2, r3",
6236                  0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
6237        TESTINST4("smmla  r0, r1, r2, r3",
6238                  0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
6239        TESTINST4("smmla  r0, r1, r2, r3",
6240                  0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
6241        TESTINST4("smmla  r0, r1, r2, r3",
6242                  0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
6243        TESTINST4("smmla  r0, r1, r2, r3",
6244                  0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
6245        TESTINST4("smmla  r0, r1, r2, r3",
6246                  0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
6247
6248        TESTINST4("smmlar  r0, r1, r2, r3",
6249                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
6250        TESTINST4("smmlar  r0, r1, r2, r3",
6251                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
6252        TESTINST4("smmlar  r0, r1, r2, r3",
6253                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
6254        TESTINST4("smmlar  r0, r1, r2, r3",
6255                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
6256        TESTINST4("smmlar  r0, r1, r2, r3",
6257                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
6258        TESTINST4("smmlar  r0, r1, r2, r3",
6259                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
6260        TESTINST4("smmlar  r0, r1, r2, r3",
6261                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
6262        TESTINST4("smmlar  r0, r1, r2, r3",
6263                  0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
6264        TESTINST4("smmlar  r0, r1, r2, r3",
6265                  0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
6266        TESTINST4("smmlar  r0, r1, r2, r3",
6267                  0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
6268        TESTINST4("smmlar  r0, r1, r2, r3",
6269                  0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
6270        TESTINST4("smmlar  r0, r1, r2, r3",
6271                  0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
6272        TESTINST4("smmlar  r0, r1, r2, r3",
6273                  0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
6274        TESTINST4("smmlar  r0, r1, r2, r3",
6275                  0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
6276        TESTINST4("smmlar  r0, r1, r2, r3",
6277                  0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
6278        TESTINST4("smmlar  r0, r1, r2, r3",
6279                  0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
6280        TESTINST4("smmlar  r0, r1, r2, r3",
6281                  0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
6282        TESTINST4("smmlar  r0, r1, r2, r3",
6283                  0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
6284        TESTINST4("smmlar  r0, r1, r2, r3",
6285                  0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
6286        TESTINST4("smmlar  r0, r1, r2, r3",
6287                  0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
6288        TESTINST4("smmlar  r0, r1, r2, r3",
6289                  0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
6290        TESTINST4("smmlar  r0, r1, r2, r3",
6291                  0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
6292        TESTINST4("smmlar  r0, r1, r2, r3",
6293                  0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
6294        TESTINST4("smmlar  r0, r1, r2, r3",
6295                  0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
6296        TESTINST4("smmlar  r0, r1, r2, r3",
6297                  0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
6298        TESTINST4("smmlar  r0, r1, r2, r3",
6299                  0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
6300        TESTINST4("smmlar  r0, r1, r2, r3",
6301                  0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
6302        TESTINST4("smmlar  r0, r1, r2, r3",
6303                  0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
6304        TESTINST4("smmlar  r0, r1, r2, r3",
6305                  0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
6306        TESTINST4("smmlar  r0, r1, r2, r3",
6307                  0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
6308        TESTINST4("smmlar  r0, r1, r2, r3",
6309                  0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
6310        TESTINST4("smmlar  r0, r1, r2, r3",
6311                  0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
6312        TESTINST4("smmlar  r0, r1, r2, r3",
6313                  0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
6314        TESTINST4("smmlar  r0, r1, r2, r3",
6315                  0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
6316        TESTINST4("smmlar  r0, r1, r2, r3",
6317                  0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
6318        TESTINST4("smmlar  r0, r1, r2, r3",
6319                  0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
6320        TESTINST4("smmlar  r0, r1, r2, r3",
6321                  0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
6322        TESTINST4("smmlar  r0, r1, r2, r3",
6323                  0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
6324        TESTINST4("smmlar  r0, r1, r2, r3",
6325                  0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
6326        TESTINST4("smmlar  r0, r1, r2, r3",
6327                  0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
6328        TESTINST4("smmlar  r0, r1, r2, r3",
6329                  0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
6330        TESTINST4("smmlar  r0, r1, r2, r3",
6331                  0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
6332        TESTINST4("smmlar  r0, r1, r2, r3",
6333                  0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
6334        TESTINST4("smmlar  r0, r1, r2, r3",
6335                  0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
6336        TESTINST4("smmlar  r0, r1, r2, r3",
6337                  0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
6338        TESTINST4("smmlar  r0, r1, r2, r3",
6339                  0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
6340        TESTINST4("smmlar  r0, r1, r2, r3",
6341                  0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
6342        TESTINST4("smmlar  r0, r1, r2, r3",
6343                  0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
6344        TESTINST4("smmlar  r0, r1, r2, r3",
6345                  0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
6346        TESTINST4("smmlar  r0, r1, r2, r3",
6347                  0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
6348        TESTINST4("smmlar  r0, r1, r2, r3",
6349                  0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
6350        TESTINST4("smmlar  r0, r1, r2, r3",
6351                  0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
6352        TESTINST4("smmlar  r0, r1, r2, r3",
6353                  0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
6354        TESTINST4("smmlar  r0, r1, r2, r3",
6355                  0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
6356        TESTINST4("smmlar  r0, r1, r2, r3",
6357                  0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
6358        TESTINST4("smmlar  r0, r1, r2, r3",
6359                  0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
6360        TESTINST4("smmlar  r0, r1, r2, r3",
6361                  0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
6362        TESTINST4("smmlar  r0, r1, r2, r3",
6363                  0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
6364
6365        printf("----------------- SMMLS{R} ----------------- \n");
6366        TESTINST4("smmls  r0, r1, r2, r3",
6367                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
6368        TESTINST4("smmls  r0, r1, r2, r3",
6369                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
6370        TESTINST4("smmls  r0, r1, r2, r3",
6371                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
6372        TESTINST4("smmls  r0, r1, r2, r3",
6373                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
6374        TESTINST4("smmls  r0, r1, r2, r3",
6375                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
6376        TESTINST4("smmls  r0, r1, r2, r3",
6377                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
6378        TESTINST4("smmls  r0, r1, r2, r3",
6379                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
6380        TESTINST4("smmls  r0, r1, r2, r3",
6381                  0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
6382        TESTINST4("smmls  r0, r1, r2, r3",
6383                  0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
6384        TESTINST4("smmls  r0, r1, r2, r3",
6385                  0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
6386        TESTINST4("smmls  r0, r1, r2, r3",
6387                  0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
6388        TESTINST4("smmls  r0, r1, r2, r3",
6389                  0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
6390        TESTINST4("smmls  r0, r1, r2, r3",
6391                  0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
6392        TESTINST4("smmls  r0, r1, r2, r3",
6393                  0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
6394        TESTINST4("smmls  r0, r1, r2, r3",
6395                  0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
6396        TESTINST4("smmls  r0, r1, r2, r3",
6397                  0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
6398        TESTINST4("smmls  r0, r1, r2, r3",
6399                  0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
6400        TESTINST4("smmls  r0, r1, r2, r3",
6401                  0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
6402        TESTINST4("smmls  r0, r1, r2, r3",
6403                  0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
6404        TESTINST4("smmls  r0, r1, r2, r3",
6405                  0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
6406        TESTINST4("smmls  r0, r1, r2, r3",
6407                  0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
6408        TESTINST4("smmls  r0, r1, r2, r3",
6409                  0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
6410        TESTINST4("smmls  r0, r1, r2, r3",
6411                  0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
6412        TESTINST4("smmls  r0, r1, r2, r3",
6413                  0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
6414        TESTINST4("smmls  r0, r1, r2, r3",
6415                  0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
6416        TESTINST4("smmls  r0, r1, r2, r3",
6417                  0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
6418        TESTINST4("smmls  r0, r1, r2, r3",
6419                  0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
6420        TESTINST4("smmls  r0, r1, r2, r3",
6421                  0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
6422        TESTINST4("smmls  r0, r1, r2, r3",
6423                  0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
6424        TESTINST4("smmls  r0, r1, r2, r3",
6425                  0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
6426        TESTINST4("smmls  r0, r1, r2, r3",
6427                  0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
6428        TESTINST4("smmls  r0, r1, r2, r3",
6429                  0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
6430        TESTINST4("smmls  r0, r1, r2, r3",
6431                  0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
6432        TESTINST4("smmls  r0, r1, r2, r3",
6433                  0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
6434        TESTINST4("smmls  r0, r1, r2, r3",
6435                  0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
6436        TESTINST4("smmls  r0, r1, r2, r3",
6437                  0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
6438        TESTINST4("smmls  r0, r1, r2, r3",
6439                  0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
6440        TESTINST4("smmls  r0, r1, r2, r3",
6441                  0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
6442        TESTINST4("smmls  r0, r1, r2, r3",
6443                  0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
6444        TESTINST4("smmls  r0, r1, r2, r3",
6445                  0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
6446        TESTINST4("smmls  r0, r1, r2, r3",
6447                  0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
6448        TESTINST4("smmls  r0, r1, r2, r3",
6449                  0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
6450        TESTINST4("smmls  r0, r1, r2, r3",
6451                  0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
6452        TESTINST4("smmls  r0, r1, r2, r3",
6453                  0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
6454        TESTINST4("smmls  r0, r1, r2, r3",
6455                  0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
6456        TESTINST4("smmls  r0, r1, r2, r3",
6457                  0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
6458        TESTINST4("smmls  r0, r1, r2, r3",
6459                  0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
6460        TESTINST4("smmls  r0, r1, r2, r3",
6461                  0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
6462        TESTINST4("smmls  r0, r1, r2, r3",
6463                  0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
6464        TESTINST4("smmls  r0, r1, r2, r3",
6465                  0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
6466        TESTINST4("smmls  r0, r1, r2, r3",
6467                  0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
6468        TESTINST4("smmls  r0, r1, r2, r3",
6469                  0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
6470        TESTINST4("smmls  r0, r1, r2, r3",
6471                  0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
6472        TESTINST4("smmls  r0, r1, r2, r3",
6473                  0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
6474        TESTINST4("smmls  r0, r1, r2, r3",
6475                  0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
6476        TESTINST4("smmls  r0, r1, r2, r3",
6477                  0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
6478        TESTINST4("smmls  r0, r1, r2, r3",
6479                  0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
6480        TESTINST4("smmls  r0, r1, r2, r3",
6481                  0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
6482
6483        TESTINST4("smmlsr  r0, r1, r2, r3",
6484                  0x80008000, 0x80008000, 0x00000000, r0, r1, r2, r3, 0);
6485        TESTINST4("smmlsr  r0, r1, r2, r3",
6486                  0x7fff7fff, 0x00000000, 0x00000000, r0, r1, r2, r3, 0);
6487        TESTINST4("smmlsr  r0, r1, r2, r3",
6488                  0x7fff7fff, 0x00010001, 0x00000001, r0, r1, r2, r3, 0);
6489        TESTINST4("smmlsr  r0, r1, r2, r3",
6490                  0x80008000, 0xffffffff, 0x0000001f, r0, r1, r2, r3, 0);
6491        TESTINST4("smmlsr  r0, r1, r2, r3",
6492                  0x00640064, 0x00030003, 0x00000020, r0, r1, r2, r3, 0);
6493        TESTINST4("smmlsr  r0, r1, r2, r3",
6494                  0xffffffff, 0xfffc0001, 0x000000ff, r0, r1, r2, r3, 0);
6495        TESTINST4("smmlsr  r0, r1, r2, r3",
6496                  0xfff70fff, 0x00030003, 0x00000100, r0, r1, r2, r3, 0);
6497        TESTINST4("smmlsr  r0, r1, r2, r3",
6498                  0xb8035b5b, 0xce0ce1ed, 0x5f986e68, r0, r1, r2, r3, 0);
6499        TESTINST4("smmlsr  r0, r1, r2, r3",
6500                  0x35232047, 0x146275d8, 0xaae3433f, r0, r1, r2, r3, 0);
6501        TESTINST4("smmlsr  r0, r1, r2, r3",
6502                  0xe7aa57b4, 0x1584bd74, 0x2c07a5b4, r0, r1, r2, r3, 0);
6503        TESTINST4("smmlsr  r0, r1, r2, r3",
6504                  0x32fa0095, 0x36f26261, 0x89d2ef86, r0, r1, r2, r3, 0);
6505        TESTINST4("smmlsr  r0, r1, r2, r3",
6506                  0x8ed8287c, 0x02c90120, 0xd4b64d54, r0, r1, r2, r3, 0);
6507        TESTINST4("smmlsr  r0, r1, r2, r3",
6508                  0xc53aaba9, 0x29300837, 0x0b02c58a, r0, r1, r2, r3, 0);
6509        TESTINST4("smmlsr  r0, r1, r2, r3",
6510                  0x216158cb, 0x57a50a01, 0xb0d20777, r0, r1, r2, r3, 0);
6511        TESTINST4("smmlsr  r0, r1, r2, r3",
6512                  0x3e2e1bd7, 0x3cd6cd94, 0x7e376198, r0, r1, r2, r3, 0);
6513        TESTINST4("smmlsr  r0, r1, r2, r3",
6514                  0xd5fe2dc4, 0xdd914bf7, 0xd5dc5407, r0, r1, r2, r3, 0);
6515        TESTINST4("smmlsr  r0, r1, r2, r3",
6516                  0xf87b961e, 0x1d66879f, 0xf2b64835, r0, r1, r2, r3, 0);
6517        TESTINST4("smmlsr  r0, r1, r2, r3",
6518                  0xd65db979, 0xc61b323b, 0xae930a1a, r0, r1, r2, r3, 0);
6519        TESTINST4("smmlsr  r0, r1, r2, r3",
6520                  0x5ef1f1a8, 0xbf73f0a5, 0x2fb714c9, r0, r1, r2, r3, 0);
6521        TESTINST4("smmlsr  r0, r1, r2, r3",
6522                  0x1ffe53d9, 0x815bb75b, 0xa3268abe, r0, r1, r2, r3, 0);
6523        TESTINST4("smmlsr  r0, r1, r2, r3",
6524                  0xed2cbf78, 0xc6ffabb6, 0xef9e9fd9, r0, r1, r2, r3, 0);
6525        TESTINST4("smmlsr  r0, r1, r2, r3",
6526                  0xeaa652c7, 0x137741f4, 0x3dba1164, r0, r1, r2, r3, 0);
6527        TESTINST4("smmlsr  r0, r1, r2, r3",
6528                  0x3ada0280, 0x71fbde8b, 0xdba5bd25, r0, r1, r2, r3, 0);
6529        TESTINST4("smmlsr  r0, r1, r2, r3",
6530                  0xda4ba05b, 0x90f9833d, 0x884c0ad8, r0, r1, r2, r3, 0);
6531        TESTINST4("smmlsr  r0, r1, r2, r3",
6532                  0xc00b821a, 0x7fa1d5a6, 0x9a4ff1b8, r0, r1, r2, r3, 0);
6533        TESTINST4("smmlsr  r0, r1, r2, r3",
6534                  0xe1bb8606, 0x58293969, 0x81616d13, r0, r1, r2, r3, 0);
6535        TESTINST4("smmlsr  r0, r1, r2, r3",
6536                  0x51f31d95, 0xa3cfd624, 0x6077fb1f, r0, r1, r2, r3, 0);
6537        TESTINST4("smmlsr  r0, r1, r2, r3",
6538                  0x0849a0c2, 0x0872f25a, 0x40b094e2, r0, r1, r2, r3, 0);
6539        TESTINST4("smmlsr  r0, r1, r2, r3",
6540                  0x17913309, 0xf1e03d7e, 0x91edc21d, r0, r1, r2, r3, 0);
6541        TESTINST4("smmlsr  r0, r1, r2, r3",
6542                  0x5388b5cd, 0x86582032, 0x6034078d, r0, r1, r2, r3, 0);
6543        TESTINST4("smmlsr  r0, r1, r2, r3",
6544                  0x181c436b, 0x5de41558, 0xccfa1c7e, r0, r1, r2, r3, 0);
6545        TESTINST4("smmlsr  r0, r1, r2, r3",
6546                  0x23ba1b46, 0x4437983c, 0x48d06549, r0, r1, r2, r3, 0);
6547        TESTINST4("smmlsr  r0, r1, r2, r3",
6548                  0xa9085781, 0xc6b4ac58, 0xb2aead21, r0, r1, r2, r3, 0);
6549        TESTINST4("smmlsr  r0, r1, r2, r3",
6550                  0xc2bdf597, 0xdde1e6a4, 0x852e3a72, r0, r1, r2, r3, 0);
6551        TESTINST4("smmlsr  r0, r1, r2, r3",
6552                  0x157b0dea, 0xf0d5ff94, 0xe7b87e39, r0, r1, r2, r3, 0);
6553        TESTINST4("smmlsr  r0, r1, r2, r3",
6554                  0x3edad6b6, 0x82aceb7a, 0x0557c6fc, r0, r1, r2, r3, 0);
6555        TESTINST4("smmlsr  r0, r1, r2, r3",
6556                  0x6cc9bfa8, 0x7f808c15, 0x81874a02, r0, r1, r2, r3, 0);
6557        TESTINST4("smmlsr  r0, r1, r2, r3",
6558                  0x6b1422c7, 0x33921b00, 0x3ccad3f7, r0, r1, r2, r3, 0);
6559        TESTINST4("smmlsr  r0, r1, r2, r3",
6560                  0xd7ce1909, 0x3e435701, 0x85fbf196, r0, r1, r2, r3, 0);
6561        TESTINST4("smmlsr  r0, r1, r2, r3",
6562                  0xb4e16b6e, 0x6e13680a, 0x89436f88, r0, r1, r2, r3, 0);
6563        TESTINST4("smmlsr  r0, r1, r2, r3",
6564                  0x44858efc, 0x9002bc30, 0x390d2c2f, r0, r1, r2, r3, 0);
6565        TESTINST4("smmlsr  r0, r1, r2, r3",
6566                  0xbea121ab, 0x953ff6ec, 0x80657c40, r0, r1, r2, r3, 0);
6567        TESTINST4("smmlsr  r0, r1, r2, r3",
6568                  0x6ffed89f, 0x3e8c49b7, 0x11bd07d1, r0, r1, r2, r3, 0);
6569        TESTINST4("smmlsr  r0, r1, r2, r3",
6570                  0x7795635d, 0x5e6e32dd, 0xe4999bf2, r0, r1, r2, r3, 0);
6571        TESTINST4("smmlsr  r0, r1, r2, r3",
6572                  0xec0c2f30, 0x5736ed46, 0x231348c0, r0, r1, r2, r3, 0);
6573        TESTINST4("smmlsr  r0, r1, r2, r3",
6574                  0x4f9ddd1b, 0x95bca5d8, 0x5765b203, r0, r1, r2, r3, 0);
6575        TESTINST4("smmlsr  r0, r1, r2, r3",
6576                  0xc1553709, 0x0112b30a, 0x69ec0212, r0, r1, r2, r3, 0);
6577        TESTINST4("smmlsr  r0, r1, r2, r3",
6578                  0x74bd0223, 0x03fa9bb5, 0x899d9192, r0, r1, r2, r3, 0);
6579        TESTINST4("smmlsr  r0, r1, r2, r3",
6580                  0xf52e9fbf, 0xb4c510a7, 0x7fcbe5a9, r0, r1, r2, r3, 0);
6581        TESTINST4("smmlsr  r0, r1, r2, r3",
6582                  0x64a365ef, 0x2dd01366, 0xf7b0b13e, r0, r1, r2, r3, 0);
6583        TESTINST4("smmlsr  r0, r1, r2, r3",
6584                  0x5e4b1cbf, 0x44de5ca9, 0x464a21cc, r0, r1, r2, r3, 0);
6585        TESTINST4("smmlsr  r0, r1, r2, r3",
6586                  0x299da970, 0xe8108f1b, 0xf5818cfb, r0, r1, r2, r3, 0);
6587        TESTINST4("smmlsr  r0, r1, r2, r3",
6588                  0xcd90d604, 0xaa5e9444, 0x8217b7df, r0, r1, r2, r3, 0);
6589        TESTINST4("smmlsr  r0, r1, r2, r3",
6590                  0xe60743c3, 0x7acb4de3, 0x73c29060, r0, r1, r2, r3, 0);
6591        TESTINST4("smmlsr  r0, r1, r2, r3",
6592                  0x868e7c7d, 0x5f77532e, 0x1d133d3d, r0, r1, r2, r3, 0);
6593        TESTINST4("smmlsr  r0, r1, r2, r3",
6594                  0x4e5e0760, 0x8f6d3264, 0x21ba2fb3, r0, r1, r2, r3, 0);
6595        TESTINST4("smmlsr  r0, r1, r2, r3",
6596                  0xde99ac2f, 0x0be36f70, 0xeda5110c, r0, r1, r2, r3, 0);
6597        TESTINST4("smmlsr  r0, r1, r2, r3",
6598                  0xc57243b7, 0xcf1e4487, 0xf20fb90f, r0, r1, r2, r3, 0);
6599
6600   return 0;
6601}
6602