neon128.c revision e739ac0589b4fb43561f801c4faba8c1b89f8680
1
2/* How to compile:
3
4   gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
5       -marm -o neon128-a neon128.c
6
7   or
8
9   gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
10       -mthumb -o neon128-t neon128.c
11
12*/
13
14#include <stdio.h>
15#include <math.h>
16
17#ifndef __thumb__
18// ARM
19#define MOVE_to_FPSCR_from_R4 \
20      ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t"
21#define MOVE_to_R4_from_FPSCR \
22      ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t"
23#endif
24
25#ifdef __thumb__
26// Thumb
27#define MOVE_to_FPSCR_from_R4 \
28      ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t"
29#define MOVE_to_R4_from_FPSCR \
30      ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t"
31#endif
32
33static inline unsigned int f2u(float x) {
34    union {
35        float f;
36        unsigned int u;
37    } cvt;
38    cvt.f = x;
39    return cvt.u;
40}
41
42/* test macros to generate and output the result of a single instruction */
43
44const unsigned int mem[] = {
45   0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d,
46   0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
47   0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
48   0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
49};
50
51#define TESTINSN_imm(instruction, QD, imm) \
52{ \
53  unsigned int out[4]; \
54\
55  __asm__ volatile( \
56      "vmov.i8 " #QD ", #0x55" "\n\t" \
57      instruction ", #" #imm "\n\t" \
58      "vstmia %0, {" #QD "}\n\t" \
59      : \
60      : "r" (out) \
61      : #QD, "memory" \
62      ); \
63  printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \
64      instruction, out[3], out[2], out[1], out[0]); \
65}\
66{ \
67   unsigned int out[4];   \
68   unsigned int addr = 0; \
69   \
70   __asm__ volatile( \
71	 "mov %1, %2\n\t" \
72	 "vldmia %1!, {" #QD "}\n\t" \
73	 instruction ", #" #imm "\n\t" \
74	 "vstmia %0, {" #QD "}\n\t" \
75	 : \
76	 : "r" (out), "r" (addr), "r" (mem) \
77	 : #QD, "%2", "memory" \
78	 ); \
79   printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \
80	 instruction, out[3], out[2], out[1], out[0]); \
81}
82
83#define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \
84{ \
85  unsigned int out[4]; \
86\
87  __asm__ volatile( \
88      "vmov.i8 " #QD ", #0x55" "\n\t" \
89      "vdup." #QMtype " " #QM ", %1\n\t" \
90      instruction "\n\t" \
91      "vstmia %0, {" #QD "}\n\t" \
92      : \
93      : "r" (out), "r" (QMval) \
94      : #QD, #QM, "memory" \
95      ); \
96  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x\n", \
97      instruction, out[3], out[2], out[1], out[0], QMval); \
98} \
99{ \
100   unsigned int out[4]; \
101   unsigned int addr = 0; \
102   \
103   __asm__ volatile( \
104	 "mov %2, %3\n\t" \
105	 "vldmia %2!, {" #QD "}\n\t" \
106	 "vldmia %2!, {" #QM "}\n\t" \
107	 instruction "\n\t" \
108	 "vstmia %0, {" #QD "}\n\t" \
109	 : \
110	 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
111	 : #QD, #QM, "%2", "memory" \
112	 ); \
113   printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x\n", \
114	 instruction, out[3], out[2], out[1], out[0], QMval); \
115}
116
117
118#define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \
119{ \
120  unsigned int out[4]; \
121  unsigned int fpscr; \
122\
123  __asm__ volatile( \
124      "vmov.i8 " #QD ", #0x55" "\n\t" \
125      "mov r4, #0\n\t" \
126      MOVE_to_FPSCR_from_R4 \
127      "vdup." #QMtype " " #QM ", %2\n\t" \
128      instruction "\n\t" \
129      "vstmia %1, {" #QD "}\n\t" \
130      MOVE_to_R4_from_FPSCR \
131      "mov %0, r4" \
132      : "=r" (fpscr) \
133      : "r" (out), "r" (QMval) \
134      : #QD, #QM, "memory", "r4" \
135      ); \
136  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
137          "  fpscr: %08x\n", \
138      instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \
139} \
140{ \
141   unsigned int out[4]; \
142   unsigned int fpscr; \
143   unsigned int addr = 0; \
144   \
145   __asm__ volatile( \
146	 "vmov.i8 " #QD ", #0x55" "\n\t" \
147	 "mov r4, #0\n\t" \
148	 MOVE_to_FPSCR_from_R4 \
149	 "mov %3, %4\n\t" \
150	 "vldmia %3!, {" #QM "}\n\t" \
151	 instruction "\n\t" \
152	 "vstmia %1, {" #QD "}\n\t" \
153	 MOVE_to_R4_from_FPSCR \
154	 "mov %0, r4" \
155	 : "=r" (fpscr) \
156	 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
157	 : #QD, #QM, "memory", "r4" \
158	 ); \
159   printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
160	 "  fpscr: %08x\n", \
161	 instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \
162}
163
164#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
165{ \
166  unsigned int out[4]; \
167\
168  __asm__ volatile( \
169      "vmov.i8 " #QD ", #0x55" "\n\t" \
170      "vdup." #QMtype " " #QM ", %1\n\t" \
171      "vdup." #QNtype " " #QN ", %2\n\t" \
172      instruction "\n\t" \
173      "vstmia %0, {" #QD "}\n\t" \
174      : \
175      : "r" (out), "r" (QMval), "r" (QNval) \
176      : #QD, #QM, #QN, "memory" \
177      ); \
178  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
179      "  Qn (" #QNtype ")0x%08x\n", \
180      instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
181} \
182/*{ \
183      unsigned int out[4]; \
184      unsigned int addr = 0; \
185      \
186      __asm__ volatile( \
187	             "mov %0, %4\n\t" \
188	             "vldmia %0!, {" #QM "}\n\t" \
189	             "vmov.i8 " #QD ", #0x55" "\n\t" \
190	             "vdup." #QNtype " " #QN ", %3\n\t" \
191	             instruction "\n\t" \
192	             "vstmia %1, {" #QD "}\n\t" \
193	             : "+r" (addr) \
194	             : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \
195	             : #QD, #QM, #QN, "memory" \
196	             ); \
197      printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
198	          "  Qn (" #QNtype ")0x%08x\n", \
199	          instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
200} */
201
202#define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
203{ \
204  unsigned int out[4]; \
205\
206  __asm__ volatile( \
207      "vdup.i32 " #QD ", %3\n\t" \
208      "vdup." #QMtype " " #QM ", %1\n\t" \
209      "vdup." #QNtype " " #QN ", %2\n\t" \
210      instruction "\n\t" \
211      "vstmia %0, {" #QD "}\n\t" \
212      : \
213      : "r" (out), "r" (QMval), "r" (QNval), "r" (0x3f800000) \
214      : #QD, #QM, #QN, "memory" \
215      ); \
216  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
217      "  Qn (" #QNtype ")0x%08x\n", \
218      instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
219} \
220{ \
221   unsigned int out[4]; \
222   unsigned int addr = 0; \
223   \
224   __asm__ volatile( \
225	 "vdup.i32 " #QD ", %3\n\t" \
226	 "mov %4, %5\n\t" \
227	 "vldmia %4!, {" #QM "}\n\t" \
228	 "vdup." #QNtype " " #QN ", %2\n\t" \
229	 instruction "\n\t" \
230	 "vstmia %0, {" #QD "}\n\t" \
231	 : \
232	 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \
233	 : #QD, #QM, #QN, "memory" \
234	 ); \
235   printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
236	 "  Qn (" #QNtype ")0x%08x\n", \
237	 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
238}
239
240#define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
241{ \
242  unsigned int out[4]; \
243  unsigned int fpscr; \
244\
245  __asm__ volatile( \
246      "vmov.i8 " #QD ", #0x55" "\n\t" \
247      "mov r4, #0\n\t" \
248      MOVE_to_FPSCR_from_R4 \
249      "vdup." #QMtype " " #QM ", %2\n\t" \
250      "vdup." #QNtype " " #QN ", %3\n\t" \
251      instruction "\n\t" \
252      "vstmia %1, {" #QD "}\n\t" \
253      MOVE_to_R4_from_FPSCR \
254      "mov %0, r4" \
255      : "=r" (fpscr) \
256      : "r" (out), "r" (QMval), "r" (QNval) \
257      : #QD, #QM, #QN, "memory", "r4" \
258      ); \
259  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
260      "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
261      instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \
262} \
263{ \
264      unsigned int out[4]; \
265      unsigned int fpscr; \
266      unsigned int addr = 0; \
267      \
268      __asm__ volatile( \
269	             "vmov.i8 " #QD ", #0x55" "\n\t" \
270	             "mov r4, #0\n\t" \
271	             MOVE_to_FPSCR_from_R4 \
272	             "mov %4, %5\n\t" \
273	             "vldmia %4!, {" #QM "}\n\t" \
274	             "vdup." #QNtype " " #QN ", %3\n\t" \
275	             instruction "\n\t" \
276	             "vstmia %1, {" #QD "}\n\t" \
277	             MOVE_to_R4_from_FPSCR \
278	             "mov %0, r4" \
279	             : "=r" (fpscr) \
280	             : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem)  \
281	             : #QD, #QM, #QN, "memory", "r4" \
282	             ); \
283      printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
284	             "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
285	             instruction, out[1], out[0], QMval, QNval, fpscr); \
286      printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
287	          "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
288	          instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \
289}
290
291#define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \
292{ \
293  unsigned int out1[4]; \
294  unsigned int out2[4]; \
295\
296  __asm__ volatile( \
297      "vdup." #QMtype " " #QM ", %2\n\t" \
298      "vdup." #QNtype " " #QN ", %3\n\t" \
299      instruction "\n\t" \
300      "vstmia %0, {" #QM "}\n\t" \
301      "vstmia %1, {" #QN "}\n\t" \
302      : \
303      : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval) \
304      : #QM, #QN, "memory" \
305      ); \
306  printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x  Qn 0x%08x 0x%08x 0x%08x 0x%08x" \
307      "  Qm (" #QMtype ")0x%08x  Qn (" #QNtype ")0x%08x\n", \
308      instruction, out1[3], out1[2], out1[1], out1[0], \
309      out2[3], out2[2], out2[1], out2[0], QMval, QNval); \
310} \
311{ \
312   unsigned int out1[4]; \
313   unsigned int out2[4]; \
314   unsigned int addr = 0;    \
315   \
316   __asm__ volatile( \
317	 "mov %4, %5\n\t" \
318	 "vldmia %4!, {" #QM "}\n\t" \
319	 "vdup." #QNtype " " #QN ", %3\n\t" \
320	 instruction "\n\t" \
321	 "vstmia %0, {" #QM "}\n\t" \
322	 "vstmia %1, {" #QN "}\n\t" \
323	 : \
324	 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
325	 : #QM, #QN, "%4", "memory" \
326	 ); \
327   printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x  Qn 0x%08x 0x%08x 0x%08x 0x%08x\nQm (" \
328#QMtype ")0x%08x" "  Qn (" #QNtype ")0x%08x\n", \
329	 instruction, out1[3], out1[2], out1[1], out1[0],\
330	 out2[3], out2[2], out2[1], out2[0], QMval, QNval); \
331}
332
333#if 0
334#define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \
335{ \
336  unsigned int out[4]; \
337\
338  __asm__ volatile( \
339      "vmov.i8 " #QD ", #0x55" "\n\t" \
340      "vdup." #QMtype " " #QM ", %1\n\t" \
341      instruction ", #" #imm "\n\t" \
342      "vstmia %0, {" #QD "}\n\t" \
343      : \
344      : "r" (out), "r" (QMval) \
345      : #QD, #QM, "memory" \
346      ); \
347  printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x", \
348      instruction, out[3], out[2], out[1], out[0], QMval); \
349}
350#endif
351
352int main(int argc, char **argv)
353{
354    printf("----- VMOV (immediate) -----\n");
355    TESTINSN_imm("vmov.i32 q0", q0, 0x7);
356    TESTINSN_imm("vmov.i16 q1", q1, 0x7);
357    TESTINSN_imm("vmov.i8 q2", q2, 0x7);
358    TESTINSN_imm("vmov.i32 q5", q5, 0x700);
359    TESTINSN_imm("vmov.i16 q7", q7, 0x700);
360    TESTINSN_imm("vmov.i32 q10", q10, 0x70000);
361    TESTINSN_imm("vmov.i32 q12", q12, 0x7000000);
362    TESTINSN_imm("vmov.i32 q13", q13, 0x7FF);
363    TESTINSN_imm("vmov.i32 q14", q14, 0x7FFFF);
364    TESTINSN_imm("vmov.i64 q15", q15, 0xFF0000FF00FFFF00);
365
366    printf("----- VMVN (immediate) -----\n");
367    TESTINSN_imm("vmvn.i32 q0", q0, 0x7);
368    TESTINSN_imm("vmvn.i16 q1", q1, 0x7);
369    TESTINSN_imm("vmvn.i8 q2", q2, 0x7);
370    TESTINSN_imm("vmvn.i32 q5", q5, 0x700);
371    TESTINSN_imm("vmvn.i16 q7", q7, 0x700);
372    TESTINSN_imm("vmvn.i32 q10", q10, 0x70000);
373    TESTINSN_imm("vmvn.i32 q13", q13, 0x7000000);
374    TESTINSN_imm("vmvn.i32 q11", q11, 0x7FF);
375    TESTINSN_imm("vmvn.i32 q14", q14, 0x7FFFF);
376    TESTINSN_imm("vmvn.i64 q15", q15, 0xFF0000FF00FFFF00);
377
378    printf("----- VORR (immediate) -----\n");
379    TESTINSN_imm("vorr.i32 q0", q0, 0x7);
380    TESTINSN_imm("vorr.i16 q2", q2, 0x7);
381    TESTINSN_imm("vorr.i32 q8", q8, 0x700);
382    TESTINSN_imm("vorr.i16 q6", q6, 0x700);
383    TESTINSN_imm("vorr.i32 q14", q14, 0x70000);
384    TESTINSN_imm("vorr.i32 q15", q15, 0x7000000);
385
386    printf("----- VBIC (immediate) -----\n");
387    TESTINSN_imm("vbic.i32 q0", q0, 0x7);
388    TESTINSN_imm("vbic.i16 q3", q3, 0x7);
389    TESTINSN_imm("vbic.i32 q5", q5, 0x700);
390    TESTINSN_imm("vbic.i16 q8", q8, 0x700);
391    TESTINSN_imm("vbic.i32 q10", q10, 0x70000);
392    TESTINSN_imm("vbic.i32 q15", q15, 0x7000000);
393
394    printf("---- VMVN (register) ----\n");
395    TESTINSN_un("vmvn q0, q1", q0, q1, i32, 24);
396    TESTINSN_un("vmvn q10, q15", q10, q15, i32, 24);
397    TESTINSN_un("vmvn q0, q14", q0, q14, i32, 24);
398
399    printf("---- VMOV (register) ----\n");
400    TESTINSN_un("vmov q0, q1", q0, q1, i32, 24);
401    TESTINSN_un("vmov q10, q15", q10, q15, i32, 24);
402    TESTINSN_un("vmov q0, q14", q0, q14, i32, 24);
403
404    printf("---- VDUP (ARM core register) (tested indirectly) ----\n");
405    TESTINSN_un("vmov q0, q1", q0, q1, i8, 7);
406    TESTINSN_un("vmov q10, q11", q10, q11, i16, 7);
407    TESTINSN_un("vmov q0, q15", q0, q15, i32, 7);
408
409    printf("---- VADD ----\n");
410    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
411    TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
412    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
413    TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
414    TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
415    TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
416    TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
417    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
418    TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
419    TESTINSN_bin("vadd.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
420    TESTINSN_bin("vadd.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120);
421
422    printf("---- VSUB ----\n");
423    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
424    TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
425    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
426    TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
427    TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
428    TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
429    TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
430    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
431    TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
432    TESTINSN_bin("vsub.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
433    TESTINSN_bin("vsub.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120);
434
435    printf("---- VAND ----\n");
436    TESTINSN_bin("vand q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
437    TESTINSN_bin("vand q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
438    TESTINSN_bin("vand q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
439    TESTINSN_bin("vand q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
440
441    printf("---- VBIC ----\n");
442    TESTINSN_bin("vbic q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
443    TESTINSN_bin("vbic q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
444    TESTINSN_bin("vbic q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
445    TESTINSN_bin("vbic q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
446
447    printf("---- VORR ----\n");
448    TESTINSN_bin("vorr q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
449    TESTINSN_bin("vorr q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
450    TESTINSN_bin("vorr q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
451    TESTINSN_bin("vorr q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
452
453    printf("---- VORN ----\n");
454    TESTINSN_bin("vorn q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
455    TESTINSN_bin("vorn q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
456    TESTINSN_bin("vorn q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
457    TESTINSN_bin("vorn q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
458
459    printf("---- VEOR ----\n");
460    TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
461    TESTINSN_bin("veor q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
462    TESTINSN_bin("veor q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
463    TESTINSN_bin("veor q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
464    TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
465    TESTINSN_bin("veor q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
466    TESTINSN_bin("veor q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
467    TESTINSN_bin("veor q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
468
469    printf("---- VBSL ----\n");
470    TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
471    TESTINSN_bin("vbsl q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
472    TESTINSN_bin("vbsl q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
473    TESTINSN_bin("vbsl q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
474    TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
475    TESTINSN_bin("vbsl q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
476    TESTINSN_bin("vbsl q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
477    TESTINSN_bin("vbsl q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
478
479    printf("---- VBIT ----\n");
480    TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
481    TESTINSN_bin("vbit q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
482    TESTINSN_bin("vbit q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
483    TESTINSN_bin("vbit q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
484    TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
485    TESTINSN_bin("vbit q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
486    TESTINSN_bin("vbit q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
487    TESTINSN_bin("vbit q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
488
489    printf("---- VBIF ----\n");
490    TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
491    TESTINSN_bin("vbif q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
492    TESTINSN_bin("vbif q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
493    TESTINSN_bin("vbif q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
494    TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
495    TESTINSN_bin("vbif q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
496    TESTINSN_bin("vbif q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
497    TESTINSN_bin("vbif q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
498
499    printf("---- VEXT ----\n");
500    TESTINSN_bin("vext.8 q0, q1, q2, #0", q0, q1, i8, 0x77, q2, i8, 0xff);
501    TESTINSN_bin("vext.8 q0, q1, q2, #1", q0, q1, i8, 0x77, q2, i8, 0xff);
502    TESTINSN_bin("vext.8 q0, q1, q2, #9", q0, q1, i8, 0x77, q2, i8, 0xff);
503    TESTINSN_bin("vext.8 q0, q1, q2, #15", q0, q1, i8, 0x77, q2, i8, 0xff);
504    TESTINSN_bin("vext.8 q10, q11, q12, #4", q10, q11, i8, 0x77, q12, i8, 0xff);
505    TESTINSN_bin("vext.8 q0, q5, q15, #12", q0, q5, i8, 0x77, q15, i8, 0xff);
506
507    printf("---- VHADD ----\n");
508    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
509    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
510    TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
511    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
512    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121);
513    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
514    TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
515    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
516    TESTINSN_bin("vhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
517    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
518    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
519    TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
520    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
521    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121);
522    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
523    TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
524    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
525    TESTINSN_bin("vhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
526
527    printf("---- VHSUB ----\n");
528    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
529    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
530    TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
531    TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
532    TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
533    TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
534    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
535    TESTINSN_bin("vhsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
536    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
537    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
538    TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
539    TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
540    TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
541    TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
542    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
543    TESTINSN_bin("vhsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
544
545    printf("---- VQADD ----\n");
546    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
547    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
548    TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
549    TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
550    TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
551    TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
552    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
553    TESTINSN_bin_q("vqadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
554    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
555    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
556    TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
557    TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
558    TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
559    TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
560    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
561    TESTINSN_bin_q("vqadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
562
563    printf("---- VQSUB ----\n");
564    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
565    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
566    TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
567    TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
568    TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
569    TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
570    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
571    TESTINSN_bin_q("vqsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
572    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
573    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
574    TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
575    TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
576    TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
577    TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
578    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
579    TESTINSN_bin_q("vqsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
580
581    printf("---- VRHADD ----\n");
582    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
583    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
584    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
585    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
586    TESTINSN_bin("vrhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
587    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
588    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
589    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
590    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
591    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
592    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
593    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
594    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
595    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
596    TESTINSN_bin("vrhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
597    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
598    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
599    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
600    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
601    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
602    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
603    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
604    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
605    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
606    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
607    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
608    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
609    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
610    TESTINSN_bin("vrhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
611
612    printf("---- VCGT ----\n");
613    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
614    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
615    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
616    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
617    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
618    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
619    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
620    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
621    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
622    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
623    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
624    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2);
625    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
626    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
627    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
628    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
629    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
630    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2);
631    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
632    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
633    TESTINSN_bin("vcgt.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
634    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
635    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
636    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
637    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
638    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
639    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
640    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
641    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
642    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
643    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
644    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
645    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
646    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
647    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
648    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
649    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
650    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
651    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
652    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
653    TESTINSN_bin("vcgt.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
654
655    printf("---- VCGE ----\n");
656    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
657    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
658    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
659    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
660    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
661    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
662    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
663    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
664    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
665    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
666    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
667    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2);
668    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
669    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
670    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
671    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
672    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
673    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2);
674    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
675    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
676    TESTINSN_bin("vcge.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
677    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
678    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
679    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
680    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
681    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
682    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
683    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
684    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
685    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
686    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
687    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
688    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
689    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
690    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
691    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
692    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
693    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
694    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
695    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
696    TESTINSN_bin("vcge.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
697
698    printf("---- VSHL (register) ----\n");
699    TESTINSN_bin("vshl.s8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1);
700    TESTINSN_bin("vshl.s8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8);
701    TESTINSN_bin("vshl.s8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4);
702    TESTINSN_bin("vshl.s16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2);
703    TESTINSN_bin("vshl.s16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1);
704    TESTINSN_bin("vshl.s16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11);
705    TESTINSN_bin("vshl.s32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2);
706    TESTINSN_bin("vshl.s32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12);
707    TESTINSN_bin("vshl.s32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21);
708    TESTINSN_bin("vshl.s64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20);
709    TESTINSN_bin("vshl.s64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4);
710    TESTINSN_bin("vshl.s64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30);
711    TESTINSN_bin("vshl.u8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1);
712    TESTINSN_bin("vshl.u8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8);
713    TESTINSN_bin("vshl.u8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4);
714    TESTINSN_bin("vshl.u16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2);
715    TESTINSN_bin("vshl.u16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1);
716    TESTINSN_bin("vshl.u16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11);
717    TESTINSN_bin("vshl.u32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2);
718    TESTINSN_bin("vshl.u32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12);
719    TESTINSN_bin("vshl.u32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21);
720    TESTINSN_bin("vshl.u64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20);
721    TESTINSN_bin("vshl.u64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4);
722    TESTINSN_bin("vshl.u64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30);
723
724    printf("---- VQSHL (register) ----\n");
725    TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
726    TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
727    TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
728    TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
729    TESTINSN_bin_q("vqshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
730    TESTINSN_bin_q("vqshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
731    TESTINSN_bin_q("vqshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
732    TESTINSN_bin_q("vqshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
733    TESTINSN_bin_q("vqshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
734    TESTINSN_bin_q("vqshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
735    TESTINSN_bin_q("vqshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
736    TESTINSN_bin_q("vqshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
737    TESTINSN_bin_q("vqshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
738    TESTINSN_bin_q("vqshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
739    TESTINSN_bin_q("vqshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
740    TESTINSN_bin_q("vqshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
741    TESTINSN_bin_q("vqshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
742    TESTINSN_bin_q("vqshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
743    TESTINSN_bin_q("vqshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
744    TESTINSN_bin_q("vqshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
745    TESTINSN_bin_q("vqshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
746    TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
747    TESTINSN_bin_q("vqshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
748    TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
749    TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
750    TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
751    TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
752    TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
753    TESTINSN_bin_q("vqshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
754    TESTINSN_bin_q("vqshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
755    TESTINSN_bin_q("vqshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
756    TESTINSN_bin_q("vqshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
757    TESTINSN_bin_q("vqshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
758    TESTINSN_bin_q("vqshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
759    TESTINSN_bin_q("vqshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
760    TESTINSN_bin_q("vqshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
761    TESTINSN_bin_q("vqshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
762    TESTINSN_bin_q("vqshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
763    TESTINSN_bin_q("vqshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
764    TESTINSN_bin_q("vqshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
765    TESTINSN_bin_q("vqshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
766    TESTINSN_bin_q("vqshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
767    TESTINSN_bin_q("vqshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
768    TESTINSN_bin_q("vqshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
769    TESTINSN_bin_q("vqshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
770    TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
771    TESTINSN_bin_q("vqshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
772    TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
773
774    printf("---- VQSHL / VQSHLU (immediate) ----\n");
775    TESTINSN_un_q("vqshl.s64 q0, q1, #1", q0, q1, i32, 1);
776    TESTINSN_un_q("vqshl.s64 q15, q14, #1", q15, q14, i32, -127);
777    TESTINSN_un_q("vqshl.s64 q5, q4, #0", q5, q4, i32, -127);
778    TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, 16);
779    TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, 16);
780    TESTINSN_un_q("vqshl.s64 q5, q4, #59", q5, q4, i32, 16);
781    TESTINSN_un_q("vqshl.s64 q5, q4, #58", q5, q4, i32, 16);
782    TESTINSN_un_q("vqshl.s64 q5, q4, #17", q5, q4, i32, 16);
783    TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, -1);
784    TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, -1);
785    TESTINSN_un_q("vqshl.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
786    TESTINSN_un_q("vqshl.s32 q10, q11, #1", q10, q11, i32, 1);
787    TESTINSN_un_q("vqshl.s32 q15, q14, #1", q15, q14, i32, -127);
788    TESTINSN_un_q("vqshl.s32 q5, q4, #0", q5, q4, i32, -127);
789    TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, 16);
790    TESTINSN_un_q("vqshl.s32 q5, q4, #28", q5, q4, i32, 16);
791    TESTINSN_un_q("vqshl.s32 q5, q4, #27", q5, q4, i32, 16);
792    TESTINSN_un_q("vqshl.s32 q5, q4, #26", q5, q4, i32, 16);
793    TESTINSN_un_q("vqshl.s32 q5, q4, #17", q5, q4, i32, 16);
794    TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, -1);
795    TESTINSN_un_q("vqshl.s32 q5, q4, #29", q5, q4, i32, -1);
796    TESTINSN_un_q("vqshl.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
797    TESTINSN_un_q("vqshl.s16 q9, q8, #1", q9, q8, i32, 1);
798    TESTINSN_un_q("vqshl.s16 q15, q14, #1", q15, q14, i32, -127);
799    TESTINSN_un_q("vqshl.s16 q5, q4, #0", q5, q4, i32, -127);
800    TESTINSN_un_q("vqshl.s16 q9, q8, #15", q9, q8, i32, 16);
801    TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, 16);
802    TESTINSN_un_q("vqshl.s16 q5, q4, #11", q5, q4, i32, 16);
803    TESTINSN_un_q("vqshl.s16 q5, q4, #10", q5, q4, i32, 16);
804    TESTINSN_un_q("vqshl.s16 q5, q4, #4", q5, q4, i32, 16);
805    TESTINSN_un_q("vqshl.s16 q5, q4, #15", q5, q4, i32, -1);
806    TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, -1);
807    TESTINSN_un_q("vqshl.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
808    TESTINSN_un_q("vqshl.s8 q0, q1, #1", q0, q1, i32, 1);
809    TESTINSN_un_q("vqshl.s8 q15, q14, #1", q15, q14, i32, -127);
810    TESTINSN_un_q("vqshl.s8 q5, q4, #0", q5, q4, i32, -127);
811    TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, 16);
812    TESTINSN_un_q("vqshl.s8 q5, q4, #4", q5, q4, i32, 16);
813    TESTINSN_un_q("vqshl.s8 q5, q4, #3", q5, q4, i32, 16);
814    TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, 16);
815    TESTINSN_un_q("vqshl.s8 q5, q4, #1", q5, q4, i32, 16);
816    TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, -1);
817    TESTINSN_un_q("vqshl.s8 q5, q4, #5", q5, q4, i32, -1);
818    TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
819    TESTINSN_un_q("vqshl.u64 q0, q1, #1", q0, q1, i32, 1);
820    TESTINSN_un_q("vqshl.u64 q15, q14, #1", q15, q14, i32, -127);
821    TESTINSN_un_q("vqshl.u64 q5, q4, #0", q5, q4, i32, -127);
822    TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, 16);
823    TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, 16);
824    TESTINSN_un_q("vqshl.u64 q5, q4, #59", q5, q4, i32, 16);
825    TESTINSN_un_q("vqshl.u64 q5, q4, #58", q5, q4, i32, 16);
826    TESTINSN_un_q("vqshl.u64 q5, q4, #17", q5, q4, i32, 16);
827    TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, -1);
828    TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, -1);
829    TESTINSN_un_q("vqshl.u64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
830    TESTINSN_un_q("vqshl.u32 q10, q11, #1", q10, q11, i32, 1);
831    TESTINSN_un_q("vqshl.u32 q15, q14, #1", q15, q14, i32, -127);
832    TESTINSN_un_q("vqshl.u32 q5, q4, #0", q5, q4, i32, -127);
833    TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, 16);
834    TESTINSN_un_q("vqshl.u32 q5, q4, #28", q5, q4, i32, 16);
835    TESTINSN_un_q("vqshl.u32 q5, q4, #27", q5, q4, i32, 16);
836    TESTINSN_un_q("vqshl.u32 q5, q4, #26", q5, q4, i32, 16);
837    TESTINSN_un_q("vqshl.u32 q5, q4, #17", q5, q4, i32, 16);
838    TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, -1);
839    TESTINSN_un_q("vqshl.u32 q5, q4, #29", q5, q4, i32, -1);
840    TESTINSN_un_q("vqshl.u32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
841    TESTINSN_un_q("vqshl.u16 q9, q8, #1", q9, q8, i32, 1);
842    TESTINSN_un_q("vqshl.u16 q15, q14, #1", q15, q14, i32, -127);
843    TESTINSN_un_q("vqshl.u16 q5, q4, #0", q5, q4, i32, -127);
844    TESTINSN_un_q("vqshl.u16 q9, q8, #15", q9, q8, i32, 16);
845    TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, 16);
846    TESTINSN_un_q("vqshl.u16 q5, q4, #11", q5, q4, i32, 16);
847    TESTINSN_un_q("vqshl.u16 q5, q4, #10", q5, q4, i32, 16);
848    TESTINSN_un_q("vqshl.u16 q5, q4, #4", q5, q4, i32, 16);
849    TESTINSN_un_q("vqshl.u16 q5, q4, #15", q5, q4, i32, -1);
850    TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, -1);
851    TESTINSN_un_q("vqshl.u16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
852    TESTINSN_un_q("vqshl.u8 q0, q1, #1", q0, q1, i32, 1);
853    TESTINSN_un_q("vqshl.u8 q15, q14, #1", q15, q14, i32, -127);
854    TESTINSN_un_q("vqshl.u8 q5, q4, #0", q5, q4, i32, -127);
855    TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, 16);
856    TESTINSN_un_q("vqshl.u8 q5, q4, #4", q5, q4, i32, 16);
857    TESTINSN_un_q("vqshl.u8 q5, q4, #3", q5, q4, i32, 16);
858    TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, 16);
859    TESTINSN_un_q("vqshl.u8 q5, q4, #1", q5, q4, i32, 16);
860    TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, -1);
861    TESTINSN_un_q("vqshl.u8 q5, q4, #5", q5, q4, i32, -1);
862    TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
863    TESTINSN_un_q("vqshlu.s64 q0, q1, #1", q0, q1, i32, 1);
864    TESTINSN_un_q("vqshlu.s64 q15, q14, #1", q15, q14, i32, -127);
865    TESTINSN_un_q("vqshlu.s64 q5, q4, #0", q5, q4, i32, -127);
866    TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, 16);
867    TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, 16);
868    TESTINSN_un_q("vqshlu.s64 q5, q4, #59", q5, q4, i32, 16);
869    TESTINSN_un_q("vqshlu.s64 q5, q4, #58", q5, q4, i32, 16);
870    TESTINSN_un_q("vqshlu.s64 q5, q4, #17", q5, q4, i32, 16);
871    TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, -1);
872    TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, -1);
873    TESTINSN_un_q("vqshlu.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
874    TESTINSN_un_q("vqshlu.s32 q10, q11, #1", q10, q11, i32, 1);
875    TESTINSN_un_q("vqshlu.s32 q15, q14, #1", q15, q14, i32, -127);
876    TESTINSN_un_q("vqshlu.s32 q5, q4, #0", q5, q4, i32, -127);
877    TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, 16);
878    TESTINSN_un_q("vqshlu.s32 q5, q4, #28", q5, q4, i32, 16);
879    TESTINSN_un_q("vqshlu.s32 q5, q4, #27", q5, q4, i32, 16);
880    TESTINSN_un_q("vqshlu.s32 q5, q4, #26", q5, q4, i32, 16);
881    TESTINSN_un_q("vqshlu.s32 q5, q4, #17", q5, q4, i32, 16);
882    TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, -1);
883    TESTINSN_un_q("vqshlu.s32 q5, q4, #29", q5, q4, i32, -1);
884    TESTINSN_un_q("vqshlu.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
885    TESTINSN_un_q("vqshlu.s16 q9, q8, #1", q9, q8, i32, 1);
886    TESTINSN_un_q("vqshlu.s16 q15, q14, #1", q15, q14, i32, -127);
887    TESTINSN_un_q("vqshlu.s16 q5, q4, #0", q5, q4, i32, -127);
888    TESTINSN_un_q("vqshlu.s16 q9, q8, #15", q9, q8, i32, 16);
889    TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, 16);
890    TESTINSN_un_q("vqshlu.s16 q5, q4, #11", q5, q4, i32, 16);
891    TESTINSN_un_q("vqshlu.s16 q5, q4, #10", q5, q4, i32, 16);
892    TESTINSN_un_q("vqshlu.s16 q5, q4, #4", q5, q4, i32, 16);
893    TESTINSN_un_q("vqshlu.s16 q5, q4, #15", q5, q4, i32, -1);
894    TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, -1);
895    TESTINSN_un_q("vqshlu.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
896    TESTINSN_un_q("vqshlu.s8 q0, q1, #1", q0, q1, i32, 1);
897    TESTINSN_un_q("vqshlu.s8 q15, q14, #1", q15, q14, i32, -127);
898    TESTINSN_un_q("vqshlu.s8 q5, q4, #0", q5, q4, i32, -127);
899    TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, 16);
900    TESTINSN_un_q("vqshlu.s8 q5, q4, #4", q5, q4, i32, 16);
901    TESTINSN_un_q("vqshlu.s8 q5, q4, #3", q5, q4, i32, 16);
902    TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, 16);
903    TESTINSN_un_q("vqshlu.s8 q5, q4, #1", q5, q4, i32, 16);
904    TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, -1);
905    TESTINSN_un_q("vqshlu.s8 q5, q4, #5", q5, q4, i32, -1);
906    TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
907
908    printf("---- VQRSHL (register) ----\n");
909    TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
910    TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
911    TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
912    TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
913    TESTINSN_bin_q("vqrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
914    TESTINSN_bin_q("vqrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
915    TESTINSN_bin_q("vqrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
916    TESTINSN_bin_q("vqrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
917    TESTINSN_bin_q("vqrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
918    TESTINSN_bin_q("vqrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
919    TESTINSN_bin_q("vqrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
920    TESTINSN_bin_q("vqrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
921    TESTINSN_bin_q("vqrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
922    TESTINSN_bin_q("vqrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
923    TESTINSN_bin_q("vqrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
924    TESTINSN_bin_q("vqrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
925    TESTINSN_bin_q("vqrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
926    TESTINSN_bin_q("vqrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
927    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
928    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
929    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
930    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
931    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
932    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
933    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
934    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
935    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
936    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
937    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
938    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
939    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
940    TESTINSN_bin_q("vqrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
941    TESTINSN_bin_q("vqrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
942    TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
943    TESTINSN_bin_q("vqrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
944    TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
945    TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
946    TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
947    TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
948    TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
949    TESTINSN_bin_q("vqrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
950    TESTINSN_bin_q("vqrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
951    TESTINSN_bin_q("vqrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
952    TESTINSN_bin_q("vqrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
953    TESTINSN_bin_q("vqrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
954    TESTINSN_bin_q("vqrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
955    TESTINSN_bin_q("vqrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
956    TESTINSN_bin_q("vqrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
957    TESTINSN_bin_q("vqrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
958    TESTINSN_bin_q("vqrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
959    TESTINSN_bin_q("vqrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
960    TESTINSN_bin_q("vqrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
961    TESTINSN_bin_q("vqrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
962    TESTINSN_bin_q("vqrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
963    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
964    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
965    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
966    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
967    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
968    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
969    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
970    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
971    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
972    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
973    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
974    TESTINSN_bin_q("vqrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
975    TESTINSN_bin_q("vqrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
976    TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
977    TESTINSN_bin_q("vqrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
978    TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
979
980    printf("---- VRSHL (register) ----\n");
981    TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
982    TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
983    TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
984    TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
985    TESTINSN_bin("vrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
986    TESTINSN_bin("vrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
987    TESTINSN_bin("vrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
988    TESTINSN_bin("vrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
989    TESTINSN_bin("vrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
990    TESTINSN_bin("vrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
991    TESTINSN_bin("vrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
992    TESTINSN_bin("vrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
993    TESTINSN_bin("vrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
994    TESTINSN_bin("vrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
995    TESTINSN_bin("vrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
996    TESTINSN_bin("vrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
997    TESTINSN_bin("vrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
998    TESTINSN_bin("vrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
999    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1000    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1001    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1002    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1003    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1004    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1005    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1006    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1007    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1008    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
1009    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
1010    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
1011    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
1012    TESTINSN_bin("vrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
1013    TESTINSN_bin("vrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
1014    TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
1015    TESTINSN_bin("vrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
1016    TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1017    TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
1018    TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
1019    TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
1020    TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
1021    TESTINSN_bin("vrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
1022    TESTINSN_bin("vrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
1023    TESTINSN_bin("vrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
1024    TESTINSN_bin("vrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
1025    TESTINSN_bin("vrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
1026    TESTINSN_bin("vrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
1027    TESTINSN_bin("vrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
1028    TESTINSN_bin("vrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
1029    TESTINSN_bin("vrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
1030    TESTINSN_bin("vrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
1031    TESTINSN_bin("vrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
1032    TESTINSN_bin("vrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
1033    TESTINSN_bin("vrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
1034    TESTINSN_bin("vrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
1035    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
1036    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1037    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1038    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1039    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1040    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1041    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1042    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1043    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1044    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1045    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1046    TESTINSN_bin("vrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
1047    TESTINSN_bin("vrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
1048    TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
1049    TESTINSN_bin("vrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
1050    TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1051
1052    printf("---- VMAX (integer) ----\n");
1053    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
1054    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121);
1055    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
1056    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1057    TESTINSN_bin("vmax.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
1058    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
1059    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1060    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1061    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
1062    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1063    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1064    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
1065    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1066    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1067    TESTINSN_bin("vmax.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1068    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1069    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120);
1070    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
1071    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1072    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
1073    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1074    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1075    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1076    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1077    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1078    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1079    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1080    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1081    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1082    TESTINSN_bin("vmax.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1083
1084    printf("---- VMIN (integer) ----\n");
1085    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
1086    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121);
1087    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1088    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
1089    TESTINSN_bin("vmin.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
1090    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
1091    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1092    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1093    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
1094    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1095    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1096    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
1097    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1098    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1099    TESTINSN_bin("vmin.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1100    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1101    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120);
1102    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1103    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
1104    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
1105    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1106    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1107    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1108    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1109    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1110    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1111    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1112    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1113    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1114    TESTINSN_bin("vmin.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1115
1116    printf("---- VABD ----\n");
1117    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1118    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
1119    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120);
1120    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1121    TESTINSN_bin("vabd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1122    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
1123    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
1124    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
1125    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1126    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1127    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
1128    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1129    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1130    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
1131    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1132    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1133    TESTINSN_bin("vabd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1134    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1135    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1136    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, -140, q2, i32, 120);
1137    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1138    TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
1139    TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
1140    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1141    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1142    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1143    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1144    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1145    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1146    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1147    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1148    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1149    TESTINSN_bin("vabd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1150
1151    printf("---- VABA ----\n");
1152    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1153    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
1154    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1155    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1156    TESTINSN_bin("vaba.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1157    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
1158    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
1159    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
1160    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1161    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1162    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
1163    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1164    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1165    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
1166    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1167    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1168    TESTINSN_bin("vaba.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1169    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1170    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1171    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1172    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1173    TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
1174    TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
1175    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1176    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1177    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1178    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1179    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1180    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1181    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1182    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1183    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1184    TESTINSN_bin("vaba.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1185
1186    printf("---- VABAL ----\n");
1187    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
1188    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121);
1189    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1190    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1191    TESTINSN_bin("vabal.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1192    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
1193    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1194    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1195    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1196    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1197    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
1198    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1199    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1200    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
1201    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1202    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1203    TESTINSN_bin("vabal.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120);
1204    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
1205    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1206    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1207    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1208    TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1209    TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1210    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1211    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1212    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1213    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1214    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1215    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1216    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1217    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1218    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1219    TESTINSN_bin("vabal.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120);
1220
1221    printf("---- VABDL ----\n");
1222    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
1223    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121);
1224    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1225    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1226    TESTINSN_bin("vabdl.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1227    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
1228    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1229    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1230    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1231    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1232    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
1233    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1234    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1235    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
1236    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1237    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1238    TESTINSN_bin("vabdl.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120);
1239    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
1240    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1241    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1242    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1243    TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1244    TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1245    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1246    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1247    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1248    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1249    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1250    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1251    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1252    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1253    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1254    TESTINSN_bin("vabdl.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120);
1255
1256    printf("---- VTST ----\n");
1257    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
1258    TESTINSN_bin("vtst.32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120);
1259    TESTINSN_bin("vtst.16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120);
1260    TESTINSN_bin("vtst.8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120);
1261    TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1262    TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
1263    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1264    TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2);
1265    TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
1266    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2);
1267    TESTINSN_bin("vtst.32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1268
1269    printf("---- VCEQ ----\n");
1270    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
1271    TESTINSN_bin("vceq.i32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120);
1272    TESTINSN_bin("vceq.i16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120);
1273    TESTINSN_bin("vceq.i8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120);
1274    TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1275    TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
1276    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1277    TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2);
1278    TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 14) + 1);
1279    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2);
1280    TESTINSN_bin("vceq.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1281
1282    printf("---- VMLA ----\n");
1283    TESTINSN_bin("vmla.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120);
1284    TESTINSN_bin("vmla.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, 120);
1285    TESTINSN_bin("vmla.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
1286    TESTINSN_bin("vmla.i16 q7, q1, q2", q7, q1, i32, 0x140, q2, i32, 0x120);
1287    TESTINSN_bin("vmla.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120);
1288    TESTINSN_bin("vmla.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1289    TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
1290    TESTINSN_bin("vmla.i16 q14, q5, q9", q14, q5, i32, (1 << 14) + 1, q9, i32, (1 << 13) + 2);
1291    TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1292    TESTINSN_bin("vmla.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1293    TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
1294    TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1295    TESTINSN_bin("vmla.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, -120);
1296
1297    printf("---- VMLS ----\n");
1298    TESTINSN_bin("vmls.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120);
1299    TESTINSN_bin("vmls.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
1300    TESTINSN_bin("vmls.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
1301    TESTINSN_bin("vmls.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1302    TESTINSN_bin("vmls.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1303    TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
1304    TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1305    TESTINSN_bin("vmls.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1306    TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
1307    TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1308    TESTINSN_bin("vmls.i32 q10, q11, q15", q10, q11, i32, -24, q15, i32, 120);
1309
1310    printf("---- VMUL ----\n");
1311    TESTINSN_bin("vmul.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
1312    TESTINSN_bin("vmul.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
1313    TESTINSN_bin("vmul.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
1314    TESTINSN_bin("vmul.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1315    TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1316    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
1317    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1318    TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 25) + 0xfeb2, q12, i32, (1 << 13) + 0xdf);
1319    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
1320    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
1321    TESTINSN_bin("vmul.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1322    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
1323    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1324    TESTINSN_bin("vmul.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
1325    TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3);
1326    TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f);
1327
1328    printf("---- VMUL (by scalar) ----\n");
1329    TESTINSN_bin("vmul.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
1330    TESTINSN_bin("vmul.i32 q15, q8, d7[1]", q15, q8, i32, 140, d4, i32, -120);
1331    TESTINSN_bin("vmul.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
1332    TESTINSN_bin("vmul.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1333    TESTINSN_bin("vmul.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1334    TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1335    TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
1336    TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1337    TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1338
1339    printf("---- VMLA (by scalar) ----\n");
1340    TESTINSN_bin("vmla.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
1341    TESTINSN_bin("vmla.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120);
1342    TESTINSN_bin("vmla.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
1343    TESTINSN_bin("vmla.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1344    TESTINSN_bin("vmla.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1345    TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1346    TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
1347    TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1348    TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1349
1350    printf("---- VMLS (by scalar) ----\n");
1351    TESTINSN_bin("vmls.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
1352    TESTINSN_bin("vmls.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120);
1353    TESTINSN_bin("vmls.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
1354    TESTINSN_bin("vmls.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1355    TESTINSN_bin("vmls.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1356    TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1357    TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
1358    TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1359    TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1360
1361    printf("---- VMULL (by scalar) ----\n");
1362    TESTINSN_bin("vmull.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
1363    TESTINSN_bin("vmull.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
1364    TESTINSN_bin("vmull.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1365    TESTINSN_bin("vmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1366    TESTINSN_bin("vmull.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1367    TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1368    TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1369    TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1370    TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1371    TESTINSN_bin("vmull.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
1372    TESTINSN_bin("vmull.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
1373    TESTINSN_bin("vmull.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1374    TESTINSN_bin("vmull.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1375    TESTINSN_bin("vmull.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1376    TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1377    TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1378    TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1379    TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1380
1381    printf("---- VMLAL (by scalar) ----\n");
1382    TESTINSN_bin("vmlal.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
1383    TESTINSN_bin("vmlal.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
1384    TESTINSN_bin("vmlal.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1385    TESTINSN_bin("vmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1386    TESTINSN_bin("vmlal.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1387    TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1388    TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1389    TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1390    TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1391    TESTINSN_bin("vmlal.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
1392    TESTINSN_bin("vmlal.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
1393    TESTINSN_bin("vmlal.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1394    TESTINSN_bin("vmlal.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1395    TESTINSN_bin("vmlal.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1396    TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1397    TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1398    TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1399    TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1400
1401    printf("---- VMLSL (by scalar) ----\n");
1402    TESTINSN_bin("vmlsl.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
1403    TESTINSN_bin("vmlsl.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
1404    TESTINSN_bin("vmlsl.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1405    TESTINSN_bin("vmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1406    TESTINSN_bin("vmlsl.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1407    TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1408    TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1409    TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1410    TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1411    TESTINSN_bin("vmlsl.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
1412    TESTINSN_bin("vmlsl.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
1413    TESTINSN_bin("vmlsl.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1414    TESTINSN_bin("vmlsl.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1415    TESTINSN_bin("vmlsl.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1416    TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1417    TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1418    TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1419    TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1420
1421    printf("---- VRSHR ----\n");
1422    TESTINSN_un("vrshr.s8 q0, q1, #0", q0, q1, i32, -1);
1423    TESTINSN_un("vrshr.s8 q0, q1, #1", q0, q1, i32, -1);
1424    TESTINSN_un("vrshr.s16 q3, q4, #2", q3, q4, i32, -0x7c);
1425    TESTINSN_un("vrshr.s32 q2, q5, #31", q2, q5, i32, -1);
1426    TESTINSN_un("vrshr.s8 q6, q7, #7", q6, q7, i32, 0xffff);
1427    TESTINSN_un("vrshr.s16 q8, q9, #12", q8, q9, i32, -10);
1428    TESTINSN_un("vrshr.s32 q10, q11, #5", q10, q11, i32, 10234);
1429    TESTINSN_un("vrshr.u8 q12, q13, #1", q12, q13, i32, -1);
1430    TESTINSN_un("vrshr.u16 q14, q15, #11", q14, q15, i32, -1);
1431    TESTINSN_un("vrshr.u32 q10, q11, #9", q10, q11, i32, 1000);
1432    TESTINSN_un("vrshr.u8 q7, q13, #7", q7, q13, i32, -1);
1433    TESTINSN_un("vrshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
1434    TESTINSN_un("vrshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
1435    TESTINSN_un("vrshr.u64 q0, q1, #42", q0, q1, i32, -1);
1436    TESTINSN_un("vrshr.s64 q6, q7, #12", q6, q7, i32, 0xfac);
1437    TESTINSN_un("vrshr.u64 q8, q4, #9", q8, q4, i32, 13560);
1438    TESTINSN_un("vrshr.s64 q9, q12, #11", q9, q12, i32, 98710);
1439
1440    printf("---- VRSRA ----\n");
1441    TESTINSN_un("vrsra.s8 q0, q1, #1", q0, q1, i32, -1);
1442    TESTINSN_un("vrsra.s16 q3, q4, #2", q3, q4, i32, -0x7c);
1443    TESTINSN_un("vrsra.s32 q2, q5, #31", q2, q5, i32, -1);
1444    TESTINSN_un("vrsra.s8 q6, q7, #7", q6, q7, i32, 0xffff);
1445    TESTINSN_un("vrsra.s16 q8, q9, #12", q8, q9, i32, -10);
1446    TESTINSN_un("vrsra.s32 q10, q11, #5", q10, q11, i32, 10234);
1447    TESTINSN_un("vrsra.u8 q12, q13, #1", q12, q13, i32, -1);
1448    TESTINSN_un("vrsra.u16 q14, q15, #11", q14, q15, i32, -1);
1449    TESTINSN_un("vrsra.u32 q10, q11, #9", q10, q11, i32, 1000);
1450    TESTINSN_un("vrsra.u8 q7, q13, #7", q7, q13, i32, -1);
1451    TESTINSN_un("vrsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
1452    TESTINSN_un("vrsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
1453    TESTINSN_un("vrsra.u64 q0, q1, #42", q0, q1, i32, -1);
1454    TESTINSN_un("vrsra.s64 q6, q7, #12", q6, q7, i32, 0xfac);
1455    TESTINSN_un("vrsra.u64 q8, q4, #9", q8, q4, i32, 13560);
1456    TESTINSN_un("vrsra.s64 q9, q12, #11", q9, q12, i32, 98710);
1457
1458    printf("---- VSHR ----\n");
1459    TESTINSN_un("vshr.s8 q0, q1, #0", q0, q1, i32, -1);
1460    TESTINSN_un("vshr.s8 q0, q1, #1", q0, q1, i32, -1);
1461    TESTINSN_un("vshr.s16 q3, q4, #2", q3, q4, i32, -0x7c);
1462    TESTINSN_un("vshr.s32 q2, q5, #31", q2, q5, i32, -1);
1463    TESTINSN_un("vshr.s8 q6, q7, #7", q6, q7, i32, 0xffff);
1464    TESTINSN_un("vshr.s16 q8, q9, #12", q8, q9, i32, -10);
1465    TESTINSN_un("vshr.s32 q10, q11, #5", q10, q11, i32, 10234);
1466    TESTINSN_un("vshr.u8 q12, q13, #1", q12, q13, i32, -1);
1467    TESTINSN_un("vshr.u16 q14, q15, #11", q14, q15, i32, -1);
1468    TESTINSN_un("vshr.u32 q10, q11, #9", q10, q11, i32, 1000);
1469    TESTINSN_un("vshr.u8 q7, q13, #7", q7, q13, i32, -1);
1470    TESTINSN_un("vshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
1471    TESTINSN_un("vshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
1472    TESTINSN_un("vshr.u64 q0, q1, #42", q0, q1, i32, -1);
1473    TESTINSN_un("vshr.s64 q6, q7, #12", q6, q7, i32, 0xfac);
1474    TESTINSN_un("vshr.u64 q8, q4, #9", q8, q4, i32, 13560);
1475    TESTINSN_un("vshr.s64 q9, q12, #11", q9, q12, i32, 98710);
1476
1477    printf("---- VSRA ----\n");
1478    TESTINSN_un("vsra.s8 q0, q1, #1", q0, q1, i32, -1);
1479    TESTINSN_un("vsra.s16 q3, q4, #2", q3, q4, i32, -0x7c);
1480    TESTINSN_un("vsra.s32 q2, q5, #31", q2, q5, i32, -1);
1481    TESTINSN_un("vsra.s8 q6, q7, #7", q6, q7, i32, 0xffff);
1482    TESTINSN_un("vsra.s16 q8, q9, #12", q8, q9, i32, -10);
1483    TESTINSN_un("vsra.s32 q10, q11, #5", q10, q11, i32, 10234);
1484    TESTINSN_un("vsra.u8 q12, q13, #1", q12, q13, i32, -1);
1485    TESTINSN_un("vsra.u16 q14, q15, #11", q14, q15, i32, -1);
1486    TESTINSN_un("vsra.u32 q10, q11, #9", q10, q11, i32, 1000);
1487    TESTINSN_un("vsra.u8 q7, q13, #7", q7, q13, i32, -1);
1488    TESTINSN_un("vsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
1489    TESTINSN_un("vsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
1490    TESTINSN_un("vsra.u64 q0, q1, #42", q0, q1, i32, -1);
1491    TESTINSN_un("vsra.s64 q6, q7, #12", q6, q7, i32, 0xfac);
1492    TESTINSN_un("vsra.u64 q8, q4, #9", q8, q4, i32, 13560);
1493    TESTINSN_un("vsra.s64 q9, q12, #11", q9, q12, i32, 98710);
1494
1495    printf("---- VSRI ----\n");
1496    TESTINSN_un("vsri.16 q0, q1, #1", q0, q1, i32, -1);
1497    TESTINSN_un("vsri.16 q3, q4, #2", q3, q4, i32, -0x7c);
1498    TESTINSN_un("vsri.32 q2, q5, #31", q2, q5, i32, -1);
1499    TESTINSN_un("vsri.8 q6, q7, #7", q6, q7, i32, 0xffff);
1500    TESTINSN_un("vsri.16 q8, q9, #12", q8, q9, i32, -10);
1501    TESTINSN_un("vsri.32 q10, q11, #5", q10, q11, i32, 10234);
1502    TESTINSN_un("vsri.8 q12, q13, #1", q12, q13, i32, -1);
1503    TESTINSN_un("vsri.16 q14, q15, #11", q14, q15, i32, -1);
1504    TESTINSN_un("vsri.32 q10, q11, #9", q10, q11, i32, 1000);
1505    TESTINSN_un("vsri.8 q7, q13, #7", q7, q13, i32, -1);
1506    TESTINSN_un("vsri.16 q8, q1, #5", q8, q1, i32, 0xabcf);
1507    TESTINSN_un("vsri.32 q12, q3, #15", q12, q3, i32, -0x1b0);
1508    TESTINSN_un("vsri.64 q0, q1, #42", q0, q1, i32, -1);
1509    TESTINSN_un("vsri.64 q6, q7, #12", q6, q7, i32, 0xfac);
1510    TESTINSN_un("vsri.64 q8, q4, #9", q8, q4, i32, 13560);
1511    TESTINSN_un("vsri.64 q9, q12, #11", q9, q12, i32, 98710);
1512
1513    printf("---- VMOVL ----\n");
1514    TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i32, 0x42);
1515    TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i32, 0x42);
1516    TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i32, 0x42);
1517    TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i32, 0x42);
1518    TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i32, 0x42);
1519    TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i32, 0x42);
1520    TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i8, 0xed);
1521    TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i8, 0xed);
1522    TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i8, 0xed);
1523    TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i8, 0xed);
1524    TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i8, 0xed);
1525    TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i8, 0xed);
1526
1527    printf("---- VABS ----\n");
1528    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0x73);
1529    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0x73);
1530    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0x73);
1531    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0xfe);
1532    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0xef);
1533    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0xde);
1534    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i16, 0xfe0a);
1535    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i16, 0xef0b);
1536    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i16, 0xde0c);
1537
1538    printf("---- VQABS ----\n");
1539    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0x73);
1540    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 1 << 31);
1541    TESTINSN_un_q("vqabs.s16 q0, q1", q0, q1, i32, 1 << 31);
1542    TESTINSN_un_q("vqabs.s8 q0, q1", q0, q1, i32, 1 << 31);
1543    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0x73);
1544    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0x73);
1545    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0xfe);
1546    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0xef);
1547    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0xde);
1548    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i16, 0xfe0a);
1549    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i16, 0xef0b);
1550    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i16, 0xde0c);
1551
1552    printf("---- VADDW ----\n");
1553    TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1554    TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12);
1555    TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12);
1556    TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1557    TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1558    TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1559    TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1560    TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2);
1561    TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2);
1562    TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1563    TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1564    TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1565
1566    printf("---- VADDL ----\n");
1567    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1568    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12);
1569    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12);
1570    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1571    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1572    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1573    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1574    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2);
1575    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2);
1576    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1577    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1578    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1579    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1580    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12);
1581    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12);
1582    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1583    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1584    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1585    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1586    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2);
1587    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2);
1588    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1589    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1590    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1591
1592    printf("---- VSUBW ----\n");
1593    TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1594    TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12);
1595    TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12);
1596    TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1597    TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1598    TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1599    TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1600    TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2);
1601    TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2);
1602    TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1603    TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1604    TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1605
1606    printf("---- VSUBL ----\n");
1607    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1608    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12);
1609    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12);
1610    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1611    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1612    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1613    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1614    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2);
1615    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2);
1616    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1617    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1618    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1619    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1620    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12);
1621    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12);
1622    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1623    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1624    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1625    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1626    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2);
1627    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2);
1628    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1629    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1630    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1631
1632    printf("---- VCEQ #0 ----\n");
1633    TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x21);
1634    TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x21);
1635    TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x21);
1636    TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x0);
1637    TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x0);
1638    TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x0);
1639
1640    printf("---- VCGT #0 ----\n");
1641    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x21);
1642    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x21);
1643    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x21);
1644    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x0);
1645    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x0);
1646    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x0);
1647    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i8, 0xef);
1648    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i8, 0xed);
1649    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i8, 0xae);
1650
1651    printf("---- VCGE #0 ----\n");
1652    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x21);
1653    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x21);
1654    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x21);
1655    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x0);
1656    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x0);
1657    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x0);
1658    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i8, 0xef);
1659    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i8, 0xed);
1660    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i8, 0xae);
1661    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0xef);
1662    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0xed);
1663    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0xae);
1664
1665    printf("---- VCLE #0 ----\n");
1666    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x21);
1667    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x21);
1668    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x21);
1669    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x0);
1670    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x0);
1671    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x0);
1672    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i8, 0xef);
1673    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i8, 0xed);
1674    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i8, 0xae);
1675
1676    printf("---- VCLT #0 ----\n");
1677    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x21);
1678    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x21);
1679    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x21);
1680    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x0);
1681    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x0);
1682    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x0);
1683    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i8, 0xef);
1684    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i8, 0xed);
1685    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i8, 0xae);
1686    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0xef);
1687    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0xed);
1688    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0xae);
1689
1690    printf("---- VCNT ----\n");
1691    TESTINSN_un("vcnt.8 q0, q1", q0, q1, i32, 0xac3d25eb);
1692    TESTINSN_un("vcnt.8 q11, q14", q11, q14, i32, 0xac3d25eb);
1693    TESTINSN_un("vcnt.8 q6, q2", q6, q2, i32, 0xad0eb);
1694
1695    printf("---- VCLS ----\n");
1696    TESTINSN_un("vcls.s8 q0, q1", q0, q1, i32, 0x21);
1697    TESTINSN_un("vcls.s8 q10, q15", q10, q15, i8, 0x82);
1698    TESTINSN_un("vcls.s16 q0, q1", q0, q1, i32, 0x21);
1699    TESTINSN_un("vcls.s16 q15, q10", q15, q10, i8, 0x82);
1700    TESTINSN_un("vcls.s32 q6, q1", q6, q1, i32, 0x21);
1701    TESTINSN_un("vcls.s32 q10, q5", q10, q5, i8, 0x82);
1702    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0xff);
1703    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0xff);
1704    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0xff);
1705    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0xffef);
1706    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0xffef);
1707    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0xffef);
1708    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0x00);
1709    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0x00);
1710    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0x00);
1711    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0x00ef);
1712    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0x00ef);
1713    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0x00ef);
1714
1715    printf("---- VCLZ ----\n");
1716    TESTINSN_un("vclz.i8 q0, q1", q0, q1, i32, 0x21);
1717    TESTINSN_un("vclz.i8 q10, q15", q10, q15, i8, 0x82);
1718    TESTINSN_un("vclz.i16 q0, q1", q0, q1, i32, 0x21);
1719    TESTINSN_un("vclz.i16 q15, q10", q15, q10, i8, 0x82);
1720    TESTINSN_un("vclz.i32 q6, q1", q6, q1, i32, 0x21);
1721    TESTINSN_un("vclz.i32 q10, q5", q10, q5, i8, 0x82);
1722    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0xff);
1723    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0xff);
1724    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0xff);
1725    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0xffef);
1726    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0xffef);
1727    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0xffef);
1728    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0x00);
1729    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0x00);
1730    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0x00);
1731    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0x00ef);
1732    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0x00ef);
1733    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0x00ef);
1734
1735    printf("---- VSLI ----\n");
1736    TESTINSN_un("vsli.16 q0, q1, #1", q0, q1, i32, -1);
1737    TESTINSN_un("vsli.16 q3, q4, #2", q3, q4, i32, -0x7c);
1738    TESTINSN_un("vsli.32 q2, q5, #31", q2, q5, i32, -1);
1739    TESTINSN_un("vsli.8 q6, q7, #7", q6, q7, i32, 0xffff);
1740    TESTINSN_un("vsli.16 q8, q9, #12", q8, q9, i32, -10);
1741    TESTINSN_un("vsli.32 q10, q11, #5", q10, q11, i32, 10234);
1742    TESTINSN_un("vsli.8 q12, q13, #1", q12, q13, i32, -1);
1743    TESTINSN_un("vsli.16 q14, q15, #11", q14, q15, i32, -1);
1744    TESTINSN_un("vsli.32 q10, q11, #9", q10, q11, i32, 1000);
1745    TESTINSN_un("vsli.8 q7, q13, #7", q7, q13, i32, -1);
1746    TESTINSN_un("vsli.16 q8, q1, #1", q8, q1, i32, 0xabcf);
1747    TESTINSN_un("vsli.32 q12, q3, #15", q12, q3, i32, -0x1b0);
1748    TESTINSN_un("vsli.64 q0, q1, #42", q0, q1, i32, -1);
1749    TESTINSN_un("vsli.64 q6, q7, #12", q6, q7, i32, 0xfac);
1750    TESTINSN_un("vsli.64 q8, q4, #9", q8, q4, i32, 13560);
1751    TESTINSN_un("vsli.64 q9, q12, #11", q9, q12, i32, 98710);
1752
1753    printf("---- VPADDL ----\n");
1754    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 24);
1755    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 140);
1756    TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, 140);
1757    TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, 140);
1758    TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, (1 << 31) + 1);
1759    TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, (1 << 31) + 1);
1760    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, (1 << 31) + 1);
1761    TESTINSN_un("vpaddl.u32 q10, q11", q10, q11, i32, 24);
1762    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 24);
1763    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 140);
1764    TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, 140);
1765    TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, 140);
1766    TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, (1 << 31) + 1);
1767    TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, (1 << 31) + 1);
1768    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, (1 << 31) + 1);
1769    TESTINSN_un("vpaddl.s32 q10, q11", q10, q11, i32, 24);
1770
1771    printf("---- VPADAL ----\n");
1772    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 24);
1773    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 140);
1774    TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, 140);
1775    TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i8, 140);
1776    TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i32, (1 << 31) + 1);
1777    TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, (1 << 31) + 1);
1778    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, (1 << 31) + 1);
1779    TESTINSN_un("vpadal.u32 q10, q11", q10, q11, i32, 24);
1780    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 24);
1781    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 140);
1782    TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, 140);
1783    TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i8, 140);
1784    TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i32, (1 << 31) + 1);
1785    TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, (1 << 31) + 1);
1786    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, (1 << 31) + 1);
1787    TESTINSN_un("vpadal.s32 q10, q11", q10, q11, i32, 24);
1788
1789    printf("---- VZIP ----\n");
1790    TESTINSN_dual("vzip.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
1791    TESTINSN_dual("vzip.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
1792    TESTINSN_dual("vzip.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
1793    TESTINSN_dual("vzip.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1794    TESTINSN_dual("vzip.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1795    TESTINSN_dual("vzip.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
1796
1797    printf("---- VUZP ----\n");
1798    TESTINSN_dual("vuzp.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
1799    TESTINSN_dual("vuzp.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
1800    TESTINSN_dual("vuzp.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
1801    TESTINSN_dual("vuzp.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1802    TESTINSN_dual("vuzp.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1803    TESTINSN_dual("vuzp.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
1804
1805    printf("---- VTRN ----\n");
1806    TESTINSN_dual("vtrn.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
1807    TESTINSN_dual("vtrn.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
1808    TESTINSN_dual("vtrn.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
1809    TESTINSN_dual("vtrn.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1810    TESTINSN_dual("vtrn.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1811    TESTINSN_dual("vtrn.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
1812
1813    printf("---- VSWP ----\n");
1814    TESTINSN_dual("vswp q0, q1", q0, i8, 0x12, q1, i8, 0x34);
1815    TESTINSN_dual("vswp q1, q0", q0, i8, 0x12, q1, i8, 0x34);
1816    TESTINSN_dual("vswp q10, q11", q10, i8, 0x12, q11, i8, 0x34);
1817    TESTINSN_dual("vswp q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1818    TESTINSN_dual("vswp q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1819    TESTINSN_dual("vswp q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
1820
1821    printf("---- VDUP ----\n");
1822    TESTINSN_un("vdup.8 q2, d2[0]", q2, d2, i32, 0xabc4657);
1823    TESTINSN_un("vdup.8 q3, d3[2]", q3, d3, i32, 0x7a1b3);
1824    TESTINSN_un("vdup.8 q1, d0[7]", q1, d0, i32, 0x713aaa);
1825    TESTINSN_un("vdup.8 q0, d4[3]", q0, d4, i32, 0xaa713);
1826    TESTINSN_un("vdup.8 q4, d28[4]", q4, d28, i32, 0x7b1c3);
1827    TESTINSN_un("vdup.16 q7, d19[3]", q7, d19, i32, 0x713ffff);
1828    TESTINSN_un("vdup.16 q15, d31[0]", q15, d31, i32, 0x7f00fa);
1829    TESTINSN_un("vdup.16 q6, d2[0]", q6, d2, i32, 0xffabcde);
1830    TESTINSN_un("vdup.16 q8, d22[3]", q8, d22, i32, 0x713);
1831    TESTINSN_un("vdup.16 q9, d2[0]", q9, d2, i32, 0x713);
1832    TESTINSN_un("vdup.32 q10, d17[1]", q10, d17, i32, 0x713);
1833    TESTINSN_un("vdup.32 q15, d11[0]", q15, d11, i32, 0x3);
1834    TESTINSN_un("vdup.32 q10, d29[1]", q10, d29, i32, 0xf00000aa);
1835    TESTINSN_un("vdup.32 q12, d0[1]", q12, d0, i32, 0xf);
1836    TESTINSN_un("vdup.32 q13, d13[0]", q13, d13, i32, -1);
1837
1838    printf("---- VQDMULL ----\n");
1839    TESTINSN_bin_q("vqdmull.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
1840    TESTINSN_bin_q("vqdmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
1841    TESTINSN_bin_q("vqdmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
1842    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1843    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1844    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1845    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
1846    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1847    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1848    TESTINSN_bin_q("vqdmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
1849    TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1850    TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1851    TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
1852    TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
1853
1854    printf("---- VQDMULL (by scalar) ----\n");
1855    TESTINSN_bin_q("vqdmull.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
1856    TESTINSN_bin_q("vqdmull.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
1857    TESTINSN_bin_q("vqdmull.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
1858    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1859    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1860    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
1861    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
1862    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1863    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1864    TESTINSN_bin_q("vqdmull.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
1865    TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1866    TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1867    TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
1868    TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
1869
1870    printf("---- VQDMLSL ----\n");
1871    TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
1872    TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
1873    TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
1874    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1875    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1876    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1877    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
1878    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1879    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1880    TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
1881    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1882    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1883    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
1884    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
1885
1886    printf("---- VQDMLSL (by scalar) ----\n");
1887    TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
1888    TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
1889    TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
1890    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1891    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1892    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
1893    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
1894    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1895    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1896    TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
1897    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1898    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1899    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
1900    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
1901
1902    printf("---- VQDMLAL ----\n");
1903    TESTINSN_bin_q("vqdmlal.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
1904    TESTINSN_bin_q("vqdmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
1905    TESTINSN_bin_q("vqdmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
1906    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1907    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1908    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1909    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
1910    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1911    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1912    TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
1913    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1914    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1915    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
1916    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
1917
1918    printf("---- VQDMLAL (by scalar) ----\n");
1919    TESTINSN_bin_q("vqdmlal.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
1920    TESTINSN_bin_q("vqdmlal.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
1921    TESTINSN_bin_q("vqdmlal.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
1922    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1923    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1924    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
1925    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
1926    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1927    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1928    TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
1929    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1930    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1931    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
1932    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
1933
1934    printf("---- VQDMULH ----\n");
1935    TESTINSN_bin_q("vqdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
1936    TESTINSN_bin_q("vqdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
1937    TESTINSN_bin_q("vqdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
1938    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
1939    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1940    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
1941    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
1942    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
1943    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1944    TESTINSN_bin_q("vqdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
1945    TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
1946    TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
1947    TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31);
1948    TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30);
1949
1950    printf("---- VQDMULH (by scalar) ----\n");
1951    TESTINSN_bin_q("vqdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120);
1952    TESTINSN_bin_q("vqdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120);
1953    TESTINSN_bin_q("vqdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120);
1954    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1955    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1956    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
1957    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12);
1958    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1959    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1960    TESTINSN_bin_q("vqdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120);
1961    TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31);
1962    TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
1963    TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31);
1964    TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30);
1965
1966    printf("---- VSHL (immediate) ----\n");
1967    TESTINSN_un("vshl.i64 q0, q1, #1", q0, q1, i32, 24);
1968    TESTINSN_un("vshl.i64 q5, q2, #1", q5, q2, i32, (1 << 30));
1969    TESTINSN_un("vshl.i64 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
1970    TESTINSN_un("vshl.i64 q11, q2, #12", q11, q2, i32, -1);
1971    TESTINSN_un("vshl.i64 q15, q12, #63", q15, q12, i32, 5);
1972    TESTINSN_un("vshl.i64 q5, q12, #62", q5, q12, i32, (1 << 31) + 1);
1973    TESTINSN_un("vshl.i32 q0, q1, #1", q0, q1, i32, 24);
1974    TESTINSN_un("vshl.i32 q5, q2, #1", q5, q2, i32, (1 << 30));
1975    TESTINSN_un("vshl.i32 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
1976    TESTINSN_un("vshl.i32 q11, q2, #12", q11, q2, i32, -1);
1977    TESTINSN_un("vshl.i32 q15, q12, #20", q15, q12, i32, 5);
1978    TESTINSN_un("vshl.i32 q5, q12, #30", q5, q12, i32, (1 << 31) + 1);
1979    TESTINSN_un("vshl.i16 q0, q1, #1", q0, q1, i16, 24);
1980    TESTINSN_un("vshl.i16 q5, q2, #1", q5, q2, i32, (1 << 30));
1981    TESTINSN_un("vshl.i16 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
1982    TESTINSN_un("vshl.i16 q11, q2, #12", q11, q2, i16, -1);
1983    TESTINSN_un("vshl.i16 q15, q12, #3", q15, q12, i16, 5);
1984    TESTINSN_un("vshl.i16 q5, q12, #14", q5, q12, i32, (1 << 31) + 1);
1985    TESTINSN_un("vshl.i8 q0, q1, #1", q0, q1, i8, 24);
1986    TESTINSN_un("vshl.i8 q5, q2, #1", q5, q2, i32, (1 << 30));
1987    TESTINSN_un("vshl.i8 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
1988    TESTINSN_un("vshl.i8 q11, q2, #7", q11, q2, i8, -1);
1989    TESTINSN_un("vshl.i8 q15, q12, #3", q15, q12, i8, 5);
1990    TESTINSN_un("vshl.i8 q5, q12, #6", q5, q12, i32, (1 << 31) + 1);
1991
1992    printf("---- VNEG ----\n");
1993    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0x73);
1994    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0x73);
1995    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0x73);
1996    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0xfe);
1997    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0xef);
1998    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0xde);
1999    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i16, 0xfe0a);
2000    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i16, 0xef0b);
2001    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i16, 0xde0c);
2002
2003    printf("---- VQNEG ----\n");
2004    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0x73);
2005    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 1 << 31);
2006    TESTINSN_un_q("vqneg.s16 q0, q1", q0, q1, i32, 1 << 31);
2007    TESTINSN_un_q("vqneg.s8 q0, q1", q0, q1, i32, 1 << 31);
2008    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0x73);
2009    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0x73);
2010    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0xfe);
2011    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0xef);
2012    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0xde);
2013    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i16, 0xfe0a);
2014    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i16, 0xef0b);
2015    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i16, 0xde0c);
2016
2017    printf("---- VREV ----\n");
2018    TESTINSN_un("vrev64.8 q0, q1", q0, q1, i32, 0xaabbccdd);
2019    TESTINSN_un("vrev64.16 q10, q15", q10, q15, i32, 0xaabbccdd);
2020    TESTINSN_un("vrev64.32 q1, q14", q1, q14, i32, 0xaabbccdd);
2021    TESTINSN_un("vrev32.8 q0, q1", q0, q1, i32, 0xaabbccdd);
2022    TESTINSN_un("vrev32.16 q10, q15", q10, q15, i32, 0xaabbccdd);
2023    TESTINSN_un("vrev16.8 q0, q1", q0, q1, i32, 0xaabbccdd);
2024
2025    printf("---- VSHLL ----\n");
2026    TESTINSN_un("vshll.s32 q0, d1, #1", q0, d1, i32, 24);
2027    TESTINSN_un("vshll.s32 q5, d2, #1", q5, d2, i32, (1 << 30));
2028    TESTINSN_un("vshll.s32 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
2029    TESTINSN_un("vshll.u32 q11, d2, #12", q11, d2, i32, -1);
2030    TESTINSN_un("vshll.u32 q15, d12, #20", q15, d12, i32, 5);
2031    TESTINSN_un("vshll.u32 q5, d22, #30", q5, d22, i32, (1 << 31) + 1);
2032    TESTINSN_un("vshll.s16 q0, d1, #1", q0, d1, i16, 24);
2033    TESTINSN_un("vshll.s16 q5, d2, #1", q5, d2, i32, (1 << 30));
2034    TESTINSN_un("vshll.s16 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
2035    TESTINSN_un("vshll.u16 q11, d2, #12", q11, d2, i16, -1);
2036    TESTINSN_un("vshll.u16 q15, d22, #3", q15, d22, i16, 5);
2037    TESTINSN_un("vshll.u16 q5, d12, #14", q5, d12, i32, (1 << 31) + 1);
2038    TESTINSN_un("vshll.s8 q0, d1, #1", q0, d1, i8, 24);
2039    TESTINSN_un("vshll.s8 q5, d2, #1", q5, d2, i32, (1 << 30));
2040    TESTINSN_un("vshll.s8 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
2041    TESTINSN_un("vshll.u8 q11, d2, #7", q11, d2, i8, -1);
2042    TESTINSN_un("vshll.u8 q15, d19, #3", q15, d19, i8, 5);
2043    TESTINSN_un("vshll.u8 q5, d12, #6", q5, d12, i32, (1 << 31) + 1);
2044
2045    printf("---- VSHLL (max shift) ----\n");
2046    TESTINSN_un("vshll.i32 q0, d1, #32", q0, d1, i32, 24);
2047    TESTINSN_un("vshll.i32 q5, d2, #32", q5, d2, i32, (1 << 30));
2048    TESTINSN_un("vshll.i32 q11, d2, #32", q11, d2, i32, -1);
2049    TESTINSN_un("vshll.i32 q15, d12, #32", q15, d12, i32, 5);
2050    TESTINSN_un("vshll.i16 q0, d1, #16", q0, d1, i16, 24);
2051    TESTINSN_un("vshll.i16 q5, d2, #16", q5, d2, i32, (1 << 30));
2052    TESTINSN_un("vshll.i16 q11, d2, #16", q11, d2, i16, -1);
2053    TESTINSN_un("vshll.i16 q15, d22, #16", q15, d22, i16, 5);
2054    TESTINSN_un("vshll.i8 q0, d1, #8", q0, d1, i8, 24);
2055    TESTINSN_un("vshll.i8 q5, d2, #8", q5, d2, i32, (1 << 30));
2056    TESTINSN_un("vshll.i8 q11, d2, #8", q11, d2, i8, -1);
2057    TESTINSN_un("vshll.i8 q15, d19, #8", q15, d19, i8, 5);
2058
2059    printf("---- VMULL ----\n");
2060    TESTINSN_bin("vmull.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2061    TESTINSN_bin("vmull.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2062    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2063    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2064    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2065    TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2066    TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2067    TESTINSN_bin("vmull.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2068    TESTINSN_bin("vmull.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2069    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2070    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2071    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2072    TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2073    TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2074    TESTINSN_bin("vmull.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2075    TESTINSN_bin("vmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2076    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2077    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2078    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2079    TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2080    TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2081    TESTINSN_bin("vmull.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2082    TESTINSN_bin("vmull.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2083    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2084    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2085    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2086    TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2087    TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2088    TESTINSN_bin("vmull.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2089    TESTINSN_bin("vmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2090    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2091    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2092    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2093    TESTINSN_bin("vmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2094    TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2095    TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2096    TESTINSN_bin("vmull.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2097    TESTINSN_bin("vmull.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2098    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2099    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2100    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2101    TESTINSN_bin("vmull.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2102    TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2103    TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2104    TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x1a4b0c, d12, i32, 0xd1e2f0);
2105    TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2106    TESTINSN_bin("vmull.p8 q4, d15, d26", q4, d15, i32, (1 << 14) - 0xabcd, d26, i32, (1 << 13) + 0xaa2);
2107    TESTINSN_bin("vmull.p8 q14, d5, d6", q14, d5, i32, (1 << 28) + 0xefe, d6, i32, (1 << 13) + 0x2bbc2d);
2108    TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2109    TESTINSN_bin("vmull.p8 q10, d27, d31", q10, d27, i32, 1 << 31, d31, i32, 1 << 30);
2110    TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2111    TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2112    TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2113
2114    printf("---- VMLAL ----\n");
2115    TESTINSN_bin("vmlal.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2116    TESTINSN_bin("vmlal.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2117    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2118    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2119    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2120    TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2121    TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2122    TESTINSN_bin("vmlal.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2123    TESTINSN_bin("vmlal.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2124    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2125    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2126    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2127    TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2128    TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2129    TESTINSN_bin("vmlal.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2130    TESTINSN_bin("vmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2131    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2132    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2133    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2134    TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2135    TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2136    TESTINSN_bin("vmlal.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2137    TESTINSN_bin("vmlal.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2138    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2139    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2140    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2141    TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2142    TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2143    TESTINSN_bin("vmlal.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2144    TESTINSN_bin("vmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2145    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2146    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2147    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2148    TESTINSN_bin("vmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2149    TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2150    TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2151    TESTINSN_bin("vmlal.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2152    TESTINSN_bin("vmlal.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2153    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2154    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2155    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2156    TESTINSN_bin("vmlal.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2157    TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2158    TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2159
2160    printf("---- VMLSL ----\n");
2161    TESTINSN_bin("vmlsl.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2162    TESTINSN_bin("vmlsl.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2163    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2164    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2165    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2166    TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2167    TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2168    TESTINSN_bin("vmlsl.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2169    TESTINSN_bin("vmlsl.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2170    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2171    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2172    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2173    TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2174    TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2175    TESTINSN_bin("vmlsl.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2176    TESTINSN_bin("vmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2177    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2178    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2179    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2180    TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2181    TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2182    TESTINSN_bin("vmlsl.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2183    TESTINSN_bin("vmlsl.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2184    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2185    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2186    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2187    TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2188    TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2189    TESTINSN_bin("vmlsl.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2190    TESTINSN_bin("vmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2191    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2192    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2193    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2194    TESTINSN_bin("vmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2195    TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2196    TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2197    TESTINSN_bin("vmlsl.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2198    TESTINSN_bin("vmlsl.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2199    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2200    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2201    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2202    TESTINSN_bin("vmlsl.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2203    TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2204    TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2205
2206    printf("---- VQRDMULH ----\n");
2207    TESTINSN_bin_q("vqrdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
2208    TESTINSN_bin_q("vqrdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
2209    TESTINSN_bin_q("vqrdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
2210    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
2211    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
2212    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
2213    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
2214    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
2215    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
2216    TESTINSN_bin_q("vqrdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
2217    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
2218    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
2219    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
2220    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31);
2221    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30);
2222
2223    printf("---- VQRDMULH (by scalar) ----\n");
2224    TESTINSN_bin_q("vqrdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120);
2225    TESTINSN_bin_q("vqrdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120);
2226    TESTINSN_bin_q("vqrdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120);
2227    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2228    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2229    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
2230    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12);
2231    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
2232    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2233    TESTINSN_bin_q("vqrdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120);
2234    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31);
2235    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
2236    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31);
2237    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30);
2238
2239    printf("---- VADD (fp) ----\n");
2240    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2241    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2242    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2243    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2244    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2245    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2246    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2247    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2248    TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2249    TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2250    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2251    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2252    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2253    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2254    TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2255    TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2256    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2257    TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2258    TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2259    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2260    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2261    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2262    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2263    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2264    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2265    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2266    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2267    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2268    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2269    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2270    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2271    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2272    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2273    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2274    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2275    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2276    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2277    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2278    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2279    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2280
2281    printf("---- VSUB (fp) ----\n");
2282    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2283    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2284    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2285    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2286    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2287    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(24.89), q5, i32, f2u(1346));
2288    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2289    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2290    TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2291    TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2292    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2293    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2294    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2295    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2296    TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2297    TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2298    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2299    TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2300    TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2301    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2302    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2303    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2304    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2305    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2306    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2307    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2308    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2309    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2310    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2311    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2312    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2313    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2314    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2315    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2316    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2317    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2318    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2319    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2320    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2321    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2322
2323    printf("---- VABD (fp) ----\n");
2324    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2325    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2326    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2327    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2328    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2329    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2330    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2331    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2332    TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2333    TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2334    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2335    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2336    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2337    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2338    TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2339    TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2340    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2341    TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2342    TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2343    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2344    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2345    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2346    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2347    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2348    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2349    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2350    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2351    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2352    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2353    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2354    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2355    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2356    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2357    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2358    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2359    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2360    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2361    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2362    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2363    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2364
2365    printf("---- VMUL (fp) ----\n");
2366    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2367    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2368    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2369    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2370    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2371    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2372    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2373    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2374    TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2375    TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2376    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2377    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2378    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2379    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2380    TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2381    TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2382    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2383    TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2384    TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2385    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2386    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2387    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2388    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2389    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2390    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2391    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2392    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2393    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2394    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2395    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2396    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2397    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2398    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2399    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2400    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2401    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2402    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2403    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2404    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2405    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2406
2407    printf("---- VMLA (fp) ----\n");
2408    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2409    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2410    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2411    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2412    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2413    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2414    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2415    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2416    TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2417    TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2418    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2419    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2420    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2421    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2422    TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2423    TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2424    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2425    TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2426    TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2427    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2428    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2429    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2430    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2431    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2432    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2433    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2434    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2435    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2436    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2437    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2438    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2439    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2440    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2441    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2442    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2443    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2444    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2445    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2446    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2447    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2448
2449    printf("---- VMLA (fp by scalar) ----\n");
2450    TESTINSN_bin_f("vmla.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120));
2451    TESTINSN_bin_f("vmla.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120));
2452    TESTINSN_bin_f("vmla.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
2453    TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
2454    TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
2455    TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19));
2456    TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11));
2457    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN));
2458    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0));
2459    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0));
2460    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
2461    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
2462    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN));
2463    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0));
2464    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0));
2465    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
2466    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
2467    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
2468    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
2469    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
2470    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
2471    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
2472    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
2473    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
2474    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
2475    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
2476    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
2477
2478    printf("---- VMLS (fp) ----\n");
2479    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2480    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2481    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2482    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2483    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2484    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2485    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2486    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2487    TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2488    TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2489    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2490    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2491    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2492    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2493    TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2494    TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2495    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2496    TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2497    TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2498    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2499    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2500    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2501    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2502    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2503    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2504    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2505    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2506    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2507    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2508    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2509    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2510    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2511    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2512    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2513    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2514    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2515    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2516    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2517    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2518    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2519
2520    printf("---- VMLS (fp by scalar) ----\n");
2521    TESTINSN_bin_f("vmls.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120));
2522    TESTINSN_bin_f("vmls.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120));
2523    TESTINSN_bin_f("vmls.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
2524    TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
2525    TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
2526    TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19));
2527    TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11));
2528    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN));
2529    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0));
2530    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0));
2531    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
2532    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
2533    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN));
2534    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0));
2535    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0));
2536    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
2537    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
2538    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
2539    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
2540    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
2541    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
2542    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
2543    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
2544    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
2545    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
2546    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
2547    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
2548
2549    printf("---- VCVT (integer <-> fp) ----\n");
2550    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(3.2));
2551    TESTINSN_un("vcvt.u32.f32 q10, q11", q10, q11, i32, f2u(3e22));
2552    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(3e9));
2553    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2554    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2555    TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2556    TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2557    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(3.2));
2558    TESTINSN_un("vcvt.s32.f32 q10, q11", q10, q11, i32, f2u(3e22));
2559    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(3e9));
2560    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2561    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2562    TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2563    TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2564    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, 7);
2565    TESTINSN_un("vcvt.f32.u32 q10, q11", q10, q11, i32, 1 << 31);
2566    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2567    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2568    TESTINSN_un("vcvt.f32.u32 q0, q14", q0, q14, i32, 0x30a0bcef);
2569    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, 7);
2570    TESTINSN_un("vcvt.f32.s32 q10, q11", q10, q11, i32, 1 << 31);
2571    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2572    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2573    TESTINSN_un("vcvt.f32.s32 q0, q14", q0, q14, i32, 0x30a0bcef);
2574    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(NAN));
2575    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(0.0));
2576    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2577    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2578    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(NAN));
2579    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(0.0));
2580    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2581    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2582
2583    printf("---- VCVT (fixed <-> fp) ----\n");
2584    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(3.2));
2585    TESTINSN_un("vcvt.u32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22));
2586    TESTINSN_un("vcvt.u32.f32 q15, q4, #32", q15, q4, i32, f2u(3e9));
2587    TESTINSN_un("vcvt.u32.f32 q15, q4, #7", q15, q4, i32, f2u(-0.5));
2588    TESTINSN_un("vcvt.u32.f32 q15, q4, #4", q15, q4, i32, f2u(-7.1));
2589    TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2590    TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2591    TESTINSN_un("vcvt.s32.f32 q0, q1, #5", q0, q1, i32, f2u(3.2));
2592    TESTINSN_un("vcvt.s32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22));
2593    TESTINSN_un("vcvt.s32.f32 q15, q4, #8", q15, q4, i32, f2u(3e9));
2594    TESTINSN_un("vcvt.s32.f32 q15, q4, #2", q15, q4, i32, f2u(-0.5));
2595    TESTINSN_un("vcvt.s32.f32 q15, q4, #1", q15, q4, i32, f2u(-7.1));
2596    TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2597    TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2598    TESTINSN_un("vcvt.f32.u32 q0, q1, #5", q0, q1, i32, 7);
2599    TESTINSN_un("vcvt.f32.u32 q10, q11, #9", q10, q11, i32, 1 << 31);
2600    TESTINSN_un("vcvt.f32.u32 q0, q1, #4", q0, q1, i32, (1U << 31) + 1);
2601    TESTINSN_un("vcvt.f32.u32 q0, q1, #6", q0, q1, i32, (1U << 31) - 1);
2602    TESTINSN_un("vcvt.f32.u32 q0, q14, #5", q0, q14, i32, 0x30a0bcef);
2603    TESTINSN_un("vcvt.f32.s32 q0, q1, #12", q0, q1, i32, 7);
2604    TESTINSN_un("vcvt.f32.s32 q10, q11, #8", q10, q11, i32, 1 << 31);
2605    TESTINSN_un("vcvt.f32.s32 q0, q1, #2", q0, q1, i32, (1U << 31) + 1);
2606    TESTINSN_un("vcvt.f32.s32 q0, q1, #1", q0, q1, i32, (1U << 31) - 1);
2607    TESTINSN_un("vcvt.f32.s32 q0, q14, #6", q0, q14, i32, 0x30a0bcef);
2608    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN));
2609    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0));
2610    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY));
2611    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY));
2612    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN));
2613    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0));
2614    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY));
2615    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY));
2616
2617    printf("---- VMAX (fp) ----\n");
2618    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2619    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2620    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2621    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2622    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2623    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2624    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2625    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2626    TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2627    TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2628    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2629    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2630    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2631    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2632    TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2633    TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2634    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2635    TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2636    TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2637    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2638    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2639    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2640    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2641    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2642    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2643    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2644    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2645    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2646    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2647    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2648    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2649    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2650    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2651    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2652    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2653    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2654    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2655    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2656    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2657    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2658    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2659    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2660    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2661    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2662    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2663    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2664
2665    printf("---- VMIN (fp) ----\n");
2666    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2667    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2668    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2669    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2670    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2671    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2672    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2673    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2674    TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2675    TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2676    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2677    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2678    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2679    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2680    TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2681    TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2682    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2683    TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2684    TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2685    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2686    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2687    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2688    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2689    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2690    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2691    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2692    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2693    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2694    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2695    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2696    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2697    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2698    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2699    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2700    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2701    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2702    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2703    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2704    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2705    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2706    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2707    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2708    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2709    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2710    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2711    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2712
2713    printf("---- VRECPE ----\n");
2714    TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2));
2715    TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22));
2716    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9));
2717    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-0.5));
2718    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-7.1));
2719    TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2720    TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2721    TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2));
2722    TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22));
2723    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9));
2724    TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2725    TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2726    TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2727    TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2728    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7);
2729    TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31);
2730    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2731    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2732    TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
2733    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7);
2734    TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31);
2735    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2736    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2737    TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
2738    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN));
2739    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0));
2740    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2741    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2742    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN));
2743    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0));
2744    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2745    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2746
2747    printf("---- VRECPS ----\n");
2748    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2749    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2750    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2751    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2752    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2753    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2754    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2755    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2756    TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2757    TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2758    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2759    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2760    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2761    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2762    TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2763    TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2764    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2765    TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2766    TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2767    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2768    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2769    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2770    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2771    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2772    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2773    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2774    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2775    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2776    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2777    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2778    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2779    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2780    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2781    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2782    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2783    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2784    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2785    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2786    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2787    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2788
2789    printf("---- VABS (fp) ----\n");
2790    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2));
2791    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22));
2792    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9));
2793    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2794    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2795    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2796    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2797    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2));
2798    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22));
2799    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9));
2800    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2801    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2802    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2803    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2804    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7);
2805    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31);
2806    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2807    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2808    TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
2809    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7);
2810    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31);
2811    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2812    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2813    TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
2814    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN));
2815    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0));
2816    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2817    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2818    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN));
2819    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0));
2820    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2821    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2822
2823    printf("---- VCGT (fp) ----\n");
2824    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
2825    TESTINSN_bin("vcgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
2826    TESTINSN_bin("vcgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
2827    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2828    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2829    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2830    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2831    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2832    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2833    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2834    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2835    TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2836    TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2837    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2838    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2839    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2840    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2841    TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2842    TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2843    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2844    TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2845    TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2846    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2847    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2848    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2849    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2850    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2851    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2852    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2853    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2854    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2855    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2856    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2857    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2858    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2859    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2860    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2861    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2862    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2863    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2864    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2865    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2866    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2867    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2868    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2869    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2870    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2871    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2872    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2873
2874    printf("---- VCGE (fp) ----\n");
2875    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
2876    TESTINSN_bin("vcge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
2877    TESTINSN_bin("vcge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
2878    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2879    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2880    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2881    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2882    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2883    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2884    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2885    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2886    TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2887    TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2888    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2889    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2890    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2891    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2892    TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2893    TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2894    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2895    TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2896    TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2897    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2898    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2899    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2900    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2901    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2902    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2903    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2904    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2905    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2906    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2907    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2908    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2909    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2910    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2911    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2912    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2913    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2914    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2915    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2916    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2917    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2918    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2919    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2920    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2921    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2922    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2923    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2924
2925    printf("---- VACGT (fp) ----\n");
2926    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
2927    TESTINSN_bin("vacgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
2928    TESTINSN_bin("vacgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
2929    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2930    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2931    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2932    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2933    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2934    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2935    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2936    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2937    TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2938    TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2939    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2940    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2941    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2942    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2943    TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2944    TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2945    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2946    TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2947    TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2948    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2949    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2950    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2951    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2952    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2953    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2954    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2955    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2956    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2957    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2958    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2959    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2960    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2961    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2962    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2963    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2964    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2965    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2966    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2967    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2968    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2969    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2970    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2971    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2972    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2973    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2974    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2975
2976    printf("---- VACGE (fp) ----\n");
2977    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
2978    TESTINSN_bin("vacge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
2979    TESTINSN_bin("vacge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
2980    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2981    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2982    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2983    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2984    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2985    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2986    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2987    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2988    TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2989    TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2990    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2991    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2992    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2993    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2994    TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2995    TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2996    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2997    TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2998    TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2999    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
3000    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
3001    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
3002    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
3003    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
3004    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
3005    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
3006    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
3007    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
3008    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
3009    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
3010    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
3011    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
3012    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
3013    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
3014    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
3015    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
3016    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
3017    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
3018    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
3019    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
3020    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
3021    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
3022    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
3023    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
3024    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
3025    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
3026
3027    printf("---- VCEQ (fp) ----\n");
3028    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
3029    TESTINSN_bin("vceq.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
3030    TESTINSN_bin("vceq.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
3031    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
3032    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
3033    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
3034    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
3035    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
3036    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
3037    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
3038    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
3039    TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
3040    TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
3041    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
3042    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
3043    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
3044    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
3045    TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
3046    TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
3047    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
3048    TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
3049    TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
3050    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
3051    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
3052    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
3053    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
3054    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
3055    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
3056    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
3057    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
3058    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
3059    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
3060    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
3061    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
3062    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
3063    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
3064    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
3065    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
3066    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
3067    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
3068    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
3069    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
3070    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
3071    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
3072    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
3073    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
3074    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
3075    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
3076    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
3077
3078    printf("---- VCEQ (fp) #0 ----\n");
3079    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3080    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x1);
3081    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3082    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3083    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3084    TESTINSN_un("vceq.f32 q10, q15, #0", q10, q15, i32, 0x0);
3085    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3086    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3087    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3088    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3089
3090    printf("---- VCGT (fp) #0 ----\n");
3091    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3092    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x1);
3093    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3094    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3095    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3096    TESTINSN_un("vcgt.f32 q10, q15, #0", q10, q15, i32, 0x0);
3097    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3098    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3099    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3100    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3101
3102    printf("---- VCLT (fp) #0 ----\n");
3103    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3104    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x1);
3105    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3106    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3107    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3108    TESTINSN_un("vclt.f32 q10, q15, #0", q10, q15, i32, 0x0);
3109    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3110    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3111    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3112    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3113
3114    printf("---- VCGE (fp) #0 ----\n");
3115    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3116    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x1);
3117    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3118    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3119    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3120    TESTINSN_un("vcge.f32 q10, q15, #0", q10, q15, i32, 0x0);
3121    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3122    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3123    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3124    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3125
3126    printf("---- VCLE (fp) #0 ----\n");
3127    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3128    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x1);
3129    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3130    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3131    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3132    TESTINSN_un("vcle.f32 q10, q15, #0", q10, q15, i32, 0x0);
3133    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3134    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3135    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3136    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3137
3138    printf("---- VNEG (fp) ----\n");
3139    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x01000000);
3140    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x1);
3141    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, 1 << 31);
3142    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(23.04));
3143    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(-23.04));
3144    TESTINSN_un("vneg.f32 q10, q15", q10, q15, i32, 0x0);
3145    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(NAN));
3146    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(0.0));
3147    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
3148    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
3149
3150    printf("---- VRSQRTS ----\n");
3151    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
3152    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
3153    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
3154    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
3155    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
3156    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
3157    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
3158    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
3159    TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
3160    TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
3161    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
3162    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
3163    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
3164    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
3165    TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
3166    TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
3167    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
3168    TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
3169    TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
3170    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
3171    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
3172    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
3173    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
3174    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
3175    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
3176    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
3177    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
3178    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
3179    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
3180    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
3181    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
3182    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
3183    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
3184    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
3185    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
3186    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
3187    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
3188    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
3189    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
3190    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
3191
3192    printf("---- VRSQRTE (fp) ----\n");
3193    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2));
3194    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22));
3195    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9));
3196    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5));
3197    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1));
3198    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
3199    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
3200    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2));
3201    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22));
3202    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9));
3203    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5));
3204    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1));
3205    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
3206    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
3207    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7);
3208    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31);
3209    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
3210    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
3211    TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
3212    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7);
3213    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31);
3214    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
3215    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
3216    TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
3217    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(NAN));
3218    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(0.0));
3219    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
3220    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
3221
3222    return 0;
3223}
3224