1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* How to compile:
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown       -marm -o neon128-a neon128.c
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   or
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown       -mthumb -o neon128-t neon128.c
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown*/
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h>
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <math.h>
16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifndef __thumb__
18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// ARM
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MOVE_to_FPSCR_from_R4 \
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t"
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MOVE_to_R4_from_FPSCR \
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t"
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifdef __thumb__
26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// Thumb
27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MOVE_to_FPSCR_from_R4 \
28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t"
29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MOVE_to_R4_from_FPSCR \
30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t"
31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif
32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic inline unsigned int f2u(float x) {
34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    union {
35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        float f;
36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        unsigned int u;
37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    } cvt;
38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    cvt.f = x;
39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    return cvt.u;
40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* test macros to generate and output the result of a single instruction */
43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownconst unsigned int mem[] = {
45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d,
46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown};
50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_imm(instruction, QD, imm) \
52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", #0x55" "\n\t" \
57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction ", #" #imm "\n\t" \
58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #QD "}\n\t" \
59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out) \
61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, "memory" \
62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \
64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[3], out[2], out[1], out[0]); \
65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}\
66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int out[4];   \
68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int addr = 0; \
69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   \
70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   __asm__ volatile( \
71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "mov %1, %2\n\t" \
72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vldmia %1!, {" #QD "}\n\t" \
73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction ", #" #imm "\n\t" \
74ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vstmia %0, {" #QD "}\n\t" \
75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : \
76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : "r" (out), "r" (addr), "r" (mem) \
77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : #QD, "%2", "memory" \
78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 ); \
79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \
80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction, out[3], out[2], out[1], out[0]); \
81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \
84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", #0x55" "\n\t" \
89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %1\n\t" \
90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #QD "}\n\t" \
92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval) \
94ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, "memory" \
95ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
96ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x\n", \
97ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[3], out[2], out[1], out[0], QMval); \
98ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} \
99ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int out[4]; \
101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int addr = 0; \
102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   \
103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   __asm__ volatile( \
104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "mov %2, %3\n\t" \
105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vldmia %2!, {" #QD "}\n\t" \
106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vldmia %2!, {" #QM "}\n\t" \
107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction "\n\t" \
108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vstmia %0, {" #QD "}\n\t" \
109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : \
110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : #QD, #QM, "%2", "memory" \
112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 ); \
113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x\n", \
114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction, out[3], out[2], out[1], out[0], QMval); \
115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \
119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int fpscr; \
122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", #0x55" "\n\t" \
125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, #0\n\t" \
126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_FPSCR_from_R4 \
127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %2\n\t" \
128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %1, {" #QD "}\n\t" \
130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_R4_from_FPSCR \
131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov %0, r4" \
132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "=r" (fpscr) \
133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval) \
134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, "memory", "r4" \
135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown          "  fpscr: %08x\n", \
138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \
139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} \
140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int out[4]; \
142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int fpscr; \
143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int addr = 0; \
144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   \
145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   __asm__ volatile( \
146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vmov.i8 " #QD ", #0x55" "\n\t" \
147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "mov r4, #0\n\t" \
148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 MOVE_to_FPSCR_from_R4 \
149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "mov %3, %4\n\t" \
150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vldmia %3!, {" #QM "}\n\t" \
151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction "\n\t" \
152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vstmia %1, {" #QD "}\n\t" \
153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 MOVE_to_R4_from_FPSCR \
154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "mov %0, r4" \
155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : "=r" (fpscr) \
156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \
157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : #QD, #QM, "memory", "r4" \
158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 ); \
159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "  fpscr: %08x\n", \
161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \
162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", #0x55" "\n\t" \
170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %1\n\t" \
171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QNtype " " #QN ", %2\n\t" \
172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #QD "}\n\t" \
174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval), "r" (QNval) \
176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, #QN, "memory" \
177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Qn (" #QNtype ")0x%08x\n", \
180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} \
182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*{ \
183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      unsigned int out[4]; \
184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      unsigned int addr = 0; \
185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      \
186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      __asm__ volatile( \
187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "mov %0, %4\n\t" \
188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "vldmia %0!, {" #QM "}\n\t" \
189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "vmov.i8 " #QD ", #0x55" "\n\t" \
190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "vdup." #QNtype " " #QN ", %3\n\t" \
191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             instruction "\n\t" \
192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "vstmia %1, {" #QD "}\n\t" \
193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             : "+r" (addr) \
194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \
195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             : #QD, #QM, #QN, "memory" \
196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             ); \
197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	          "  Qn (" #QNtype ")0x%08x\n", \
199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	          instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} */
201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup.i32 " #QD ", %3\n\t" \
208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %1\n\t" \
209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QNtype " " #QN ", %2\n\t" \
210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #QD "}\n\t" \
212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval), "r" (QNval), "r" (0x3f800000) \
214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, #QN, "memory" \
215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Qn (" #QNtype ")0x%08x\n", \
218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} \
220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int out[4]; \
222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int addr = 0; \
223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   \
224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   __asm__ volatile( \
225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vdup.i32 " #QD ", %3\n\t" \
226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "mov %4, %5\n\t" \
227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vldmia %4!, {" #QM "}\n\t" \
228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vdup." #QNtype " " #QN ", %2\n\t" \
229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction "\n\t" \
230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vstmia %0, {" #QD "}\n\t" \
231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : \
232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \
233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : #QD, #QM, #QN, "memory" \
234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 ); \
235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "  Qn (" #QNtype ")0x%08x\n", \
237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int fpscr; \
244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", #0x55" "\n\t" \
247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, #0\n\t" \
248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_FPSCR_from_R4 \
249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %2\n\t" \
250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QNtype " " #QN ", %3\n\t" \
251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %1, {" #QD "}\n\t" \
253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_R4_from_FPSCR \
254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov %0, r4" \
255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "=r" (fpscr) \
256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval), "r" (QNval) \
257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, #QN, "memory", "r4" \
258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \
262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} \
263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      unsigned int out[4]; \
265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      unsigned int fpscr; \
266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      unsigned int addr = 0; \
267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      \
268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      __asm__ volatile( \
269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "vmov.i8 " #QD ", #0x55" "\n\t" \
270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "mov r4, #0\n\t" \
271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             MOVE_to_FPSCR_from_R4 \
272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "mov %4, %5\n\t" \
273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "vldmia %4!, {" #QM "}\n\t" \
274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "vdup." #QNtype " " #QN ", %3\n\t" \
275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             instruction "\n\t" \
276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "vstmia %1, {" #QD "}\n\t" \
277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             MOVE_to_R4_from_FPSCR \
278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "mov %0, r4" \
279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             : "=r" (fpscr) \
280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem)  \
281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             : #QD, #QM, #QN, "memory", "r4" \
282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             ); \
283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	             instruction, out[1], out[0], QMval, QNval, fpscr); \
286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	          "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	          instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \
289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \
292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out1[4]; \
294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out2[4]; \
295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %2\n\t" \
298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QNtype " " #QN ", %3\n\t" \
299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #QM "}\n\t" \
301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %1, {" #QN "}\n\t" \
302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval) \
304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QM, #QN, "memory" \
305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x  Qn 0x%08x 0x%08x 0x%08x 0x%08x" \
307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Qm (" #QMtype ")0x%08x  Qn (" #QNtype ")0x%08x\n", \
308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out1[3], out1[2], out1[1], out1[0], \
309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      out2[3], out2[2], out2[1], out2[0], QMval, QNval); \
310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} \
311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int out1[4]; \
313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int out2[4]; \
314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   unsigned int addr = 0;    \
315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   \
316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   __asm__ volatile( \
317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "mov %4, %5\n\t" \
318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vldmia %4!, {" #QM "}\n\t" \
319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vdup." #QNtype " " #QN ", %3\n\t" \
320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction "\n\t" \
321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vstmia %0, {" #QM "}\n\t" \
322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 "vstmia %1, {" #QN "}\n\t" \
323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : \
324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \
325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 : #QM, #QN, "%4", "memory" \
326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 ); \
327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x  Qn 0x%08x 0x%08x 0x%08x 0x%08x\nQm (" \
328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#QMtype ")0x%08x" "  Qn (" #QNtype ")0x%08x\n", \
329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 instruction, out1[3], out1[2], out1[1], out1[0],\
330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown	 out2[3], out2[2], out2[1], out2[0], QMval, QNval); \
331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#if 0
334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \
335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out[4]; \
337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vmov.i8 " #QD ", #0x55" "\n\t" \
340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QMtype " " #QM ", %1\n\t" \
341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction ", #" #imm "\n\t" \
342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %0, {" #QD "}\n\t" \
343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : \
344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out), "r" (QMval) \
345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QD, #QM, "memory" \
346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x", \
348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out[3], out[2], out[1], out[0], QMval); \
349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovint main(int argc, char **argv)
353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{
354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("----- VMOV (immediate) -----\n");
355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i32 q0", q0, 0x7);
356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i16 q1", q1, 0x7);
357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i8 q2", q2, 0x7);
358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i32 q5", q5, 0x700);
359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i16 q7", q7, 0x700);
360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i32 q10", q10, 0x70000);
361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i32 q12", q12, 0x7000000);
362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i32 q13", q13, 0x7FF);
363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i32 q14", q14, 0x7FFFF);
364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.i64 q15", q15, 0xFF0000FF00FFFF00);
365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.f32 q0", q0, 0.328125);
366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmov.f32 q0", q0, -0.328125);
367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("----- VMVN (immediate) -----\n");
369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i32 q0", q0, 0x7);
370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i16 q1", q1, 0x7);
371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i8 q2", q2, 0x7);
372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i32 q5", q5, 0x700);
373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i16 q7", q7, 0x700);
374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i32 q10", q10, 0x70000);
375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i32 q13", q13, 0x7000000);
376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i32 q11", q11, 0x7FF);
377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i32 q14", q14, 0x7FFFF);
378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vmvn.i64 q15", q15, 0xFF0000FF00FFFF00);
379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("----- VORR (immediate) -----\n");
381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vorr.i32 q0", q0, 0x7);
382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vorr.i16 q2", q2, 0x7);
383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vorr.i32 q8", q8, 0x700);
384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vorr.i16 q6", q6, 0x700);
385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vorr.i32 q14", q14, 0x70000);
386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vorr.i32 q15", q15, 0x7000000);
387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("----- VBIC (immediate) -----\n");
389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vbic.i32 q0", q0, 0x7);
390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vbic.i16 q3", q3, 0x7);
391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vbic.i32 q5", q5, 0x700);
392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vbic.i16 q8", q8, 0x700);
393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vbic.i32 q10", q10, 0x70000);
394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_imm("vbic.i32 q15", q15, 0x7000000);
395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMVN (register) ----\n");
397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmvn q0, q1", q0, q1, i32, 24);
398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmvn q10, q15", q10, q15, i32, 24);
399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmvn q0, q14", q0, q14, i32, 24);
400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMOV (register) ----\n");
402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmov q0, q1", q0, q1, i32, 24);
403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmov q10, q15", q10, q15, i32, 24);
404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmov q0, q14", q0, q14, i32, 24);
405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VDUP (ARM core register) (tested indirectly) ----\n");
407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmov q0, q1", q0, q1, i8, 7);
408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmov q10, q11", q10, q11, i16, 7);
409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmov q0, q15", q0, q15, i32, 7);
410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VADD ----\n");
412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120);
423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSUB ----\n");
425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120);
436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VAND ----\n");
438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vand q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vand q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vand q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vand q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VBIC ----\n");
444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbic q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbic q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbic q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbic q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VORR ----\n");
450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vorr q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vorr q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vorr q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vorr q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VORN ----\n");
456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vorn q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vorn q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vorn q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vorn q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VEOR ----\n");
462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("veor q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("veor q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("veor q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("veor q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("veor q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("veor q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VBSL ----\n");
472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbsl q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbsl q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbsl q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbsl q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbsl q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbsl q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VBIT ----\n");
482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbit q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbit q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbit q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbit q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbit q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbit q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VBIF ----\n");
492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbif q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbif q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbif q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbif q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbif q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vbif q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VEXT ----\n");
502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vext.8 q0, q1, q2, #0", q0, q1, i8, 0x77, q2, i8, 0xff);
503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vext.8 q0, q1, q2, #1", q0, q1, i8, 0x77, q2, i8, 0xff);
504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vext.8 q0, q1, q2, #9", q0, q1, i8, 0x77, q2, i8, 0xff);
505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vext.8 q0, q1, q2, #15", q0, q1, i8, 0x77, q2, i8, 0xff);
506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vext.8 q10, q11, q12, #4", q10, q11, i8, 0x77, q12, i8, 0xff);
507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vext.8 q0, q5, q15, #12", q0, q5, i8, 0x77, q15, i8, 0xff);
508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VHADD ----\n");
510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121);
515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121);
524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VHSUB ----\n");
530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vhsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQADD ----\n");
548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQSUB ----\n");
566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VRHADD ----\n");
584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCGT ----\n");
615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2);
627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2);
633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCGE ----\n");
658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2);
670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2);
676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSHL (register) ----\n");
701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1);
702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8);
703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4);
704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2);
705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1);
706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11);
707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2);
708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12);
709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21);
710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20);
711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4);
712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.s64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30);
713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1);
714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8);
715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4);
716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2);
717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1);
718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11);
719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2);
720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12);
721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21);
722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20);
723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4);
724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vshl.u64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30);
725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQSHL (register) ----\n");
727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQSHL / VQSHLU (immediate) ----\n");
777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q0, q1, #1", q0, q1, i32, 1);
778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q15, q14, #1", q15, q14, i32, -127);
779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #0", q5, q4, i32, -127);
780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, 16);
781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, 16);
782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #59", q5, q4, i32, 16);
783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #58", q5, q4, i32, 16);
784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #17", q5, q4, i32, 16);
785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, -1);
786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, -1);
787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q10, q11, #1", q10, q11, i32, 1);
789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q15, q14, #1", q15, q14, i32, -127);
790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #0", q5, q4, i32, -127);
791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, 16);
792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #28", q5, q4, i32, 16);
793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #27", q5, q4, i32, 16);
794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #26", q5, q4, i32, 16);
795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #17", q5, q4, i32, 16);
796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, -1);
797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #29", q5, q4, i32, -1);
798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q9, q8, #1", q9, q8, i32, 1);
800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q15, q14, #1", q15, q14, i32, -127);
801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q5, q4, #0", q5, q4, i32, -127);
802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q9, q8, #15", q9, q8, i32, 16);
803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, 16);
804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q5, q4, #11", q5, q4, i32, 16);
805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q5, q4, #10", q5, q4, i32, 16);
806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q5, q4, #4", q5, q4, i32, 16);
807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q5, q4, #15", q5, q4, i32, -1);
808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, -1);
809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q0, q1, #1", q0, q1, i32, 1);
811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q15, q14, #1", q15, q14, i32, -127);
812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #0", q5, q4, i32, -127);
813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, 16);
814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #4", q5, q4, i32, 16);
815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #3", q5, q4, i32, 16);
816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, 16);
817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #1", q5, q4, i32, 16);
818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, -1);
819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #5", q5, q4, i32, -1);
820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q0, q1, #1", q0, q1, i32, 1);
822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q15, q14, #1", q15, q14, i32, -127);
823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #0", q5, q4, i32, -127);
824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, 16);
825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, 16);
826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #59", q5, q4, i32, 16);
827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #58", q5, q4, i32, 16);
828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #17", q5, q4, i32, 16);
829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, -1);
830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, -1);
831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q10, q11, #1", q10, q11, i32, 1);
833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q15, q14, #1", q15, q14, i32, -127);
834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #0", q5, q4, i32, -127);
835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, 16);
836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #28", q5, q4, i32, 16);
837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #27", q5, q4, i32, 16);
838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #26", q5, q4, i32, 16);
839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #17", q5, q4, i32, 16);
840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, -1);
841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #29", q5, q4, i32, -1);
842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q9, q8, #1", q9, q8, i32, 1);
844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q15, q14, #1", q15, q14, i32, -127);
845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q5, q4, #0", q5, q4, i32, -127);
846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q9, q8, #15", q9, q8, i32, 16);
847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, 16);
848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q5, q4, #11", q5, q4, i32, 16);
849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q5, q4, #10", q5, q4, i32, 16);
850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q5, q4, #4", q5, q4, i32, 16);
851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q5, q4, #15", q5, q4, i32, -1);
852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, -1);
853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q0, q1, #1", q0, q1, i32, 1);
855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q15, q14, #1", q15, q14, i32, -127);
856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #0", q5, q4, i32, -127);
857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, 16);
858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #4", q5, q4, i32, 16);
859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #3", q5, q4, i32, 16);
860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, 16);
861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #1", q5, q4, i32, 16);
862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, -1);
863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #5", q5, q4, i32, -1);
864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q0, q1, #1", q0, q1, i32, 1);
866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q15, q14, #1", q15, q14, i32, -127);
867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #0", q5, q4, i32, -127);
868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, 16);
869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, 16);
870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #59", q5, q4, i32, 16);
871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #58", q5, q4, i32, 16);
872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #17", q5, q4, i32, 16);
873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, -1);
874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, -1);
875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q10, q11, #1", q10, q11, i32, 1);
877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q15, q14, #1", q15, q14, i32, -127);
878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #0", q5, q4, i32, -127);
879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, 16);
880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #28", q5, q4, i32, 16);
881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #27", q5, q4, i32, 16);
882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #26", q5, q4, i32, 16);
883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #17", q5, q4, i32, 16);
884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, -1);
885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #29", q5, q4, i32, -1);
886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q9, q8, #1", q9, q8, i32, 1);
888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q15, q14, #1", q15, q14, i32, -127);
889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q5, q4, #0", q5, q4, i32, -127);
890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q9, q8, #15", q9, q8, i32, 16);
891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, 16);
892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q5, q4, #11", q5, q4, i32, 16);
893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q5, q4, #10", q5, q4, i32, 16);
894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q5, q4, #4", q5, q4, i32, 16);
895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q5, q4, #15", q5, q4, i32, -1);
896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, -1);
897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q0, q1, #1", q0, q1, i32, 1);
899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q15, q14, #1", q15, q14, i32, -127);
900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #0", q5, q4, i32, -127);
901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, 16);
902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #4", q5, q4, i32, 16);
903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #3", q5, q4, i32, 16);
904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, 16);
905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #1", q5, q4, i32, 16);
906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, -1);
907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #5", q5, q4, i32, -1);
908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQRSHL (register) ----\n");
911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VRSHL (register) ----\n");
983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
1000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
1001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
1011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
1012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
1013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
1014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
1015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
1016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
1017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
1018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
1020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
1021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
1022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
1023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
1024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
1025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
1026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
1027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
1028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
1029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
1030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
1031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
1032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
1033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
1034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
1035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
1036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
1037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
1038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
1042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
1045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
1048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
1049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
1050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
1051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
1052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMAX (integer) ----\n");
1055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
1056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121);
1057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
1058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
1060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
1061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
1064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
1067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120);
1072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
1073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
1075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMIN (integer) ----\n");
1087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
1088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121);
1089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
1091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
1092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
1093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
1096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
1099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120);
1104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
1106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
1107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VABD ----\n");
1119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
1121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120);
1122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
1125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
1126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
1127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
1130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
1133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, -140, q2, i32, 120);
1139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
1141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
1142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VABA ----\n");
1154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
1156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
1160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
1161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
1162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
1165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
1168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
1172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
1176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
1177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
1183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
1186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaba.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VABAL ----\n");
1189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
1190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121);
1191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
1195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
1200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
1203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120);
1206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
1207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabal.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120);
1222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VABDL ----\n");
1224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
1225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121);
1226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
1230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
1235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
1238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120);
1241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
1242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
1245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
1246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
1247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
1250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
1253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
1256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabdl.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120);
1257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VTST ----\n");
1259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
1260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120);
1261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120);
1262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120);
1263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
1265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2);
1267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
1268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2);
1269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vtst.32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCEQ ----\n");
1272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
1273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120);
1274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120);
1275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120);
1276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
1278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
1279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2);
1280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 14) + 1);
1281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2);
1282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
1283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLA ----\n");
1285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120);
1286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, 120);
1287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
1288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q7, q1, q2", q7, q1, i32, 0x140, q2, i32, 0x120);
1289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120);
1290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
1292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q14, q5, q9", q14, q5, i32, (1 << 14) + 1, q9, i32, (1 << 13) + 2);
1293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
1296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, -120);
1298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLS ----\n");
1300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120);
1301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
1302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
1303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
1306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
1309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q10, q11, q15", q10, q11, i32, -24, q15, i32, 120);
1311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMUL ----\n");
1313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
1314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
1315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
1316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
1317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
1319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 25) + 0xfeb2, q12, i32, (1 << 13) + 0xdf);
1321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
1322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
1323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
1324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
1325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
1327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3);
1328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f);
1329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMUL (by scalar) ----\n");
1331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
1332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q15, q8, d7[1]", q15, q8, i32, 140, d4, i32, -120);
1333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
1334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
1338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLA (by scalar) ----\n");
1342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
1343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120);
1344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
1345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
1349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLS (by scalar) ----\n");
1353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
1354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120);
1355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
1356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
1360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMULL (by scalar) ----\n");
1364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
1365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
1366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
1374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
1375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLAL (by scalar) ----\n");
1384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
1385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
1386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
1394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
1395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLSL (by scalar) ----\n");
1404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
1405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
1406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
1414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
1415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
1416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
1418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
1420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
1422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VRSHR ----\n");
1424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s8 q0, q1, #0", q0, q1, i32, -1);
1425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s8 q0, q1, #1", q0, q1, i32, -1);
1426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s16 q3, q4, #2", q3, q4, i32, -0x7c);
1427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s32 q2, q5, #31", q2, q5, i32, -1);
1428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s8 q6, q7, #7", q6, q7, i32, 0xffff);
1429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s16 q8, q9, #12", q8, q9, i32, -10);
1430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s32 q10, q11, #5", q10, q11, i32, 10234);
1431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.u8 q12, q13, #1", q12, q13, i32, -1);
1432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.u16 q14, q15, #11", q14, q15, i32, -1);
1433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.u32 q10, q11, #9", q10, q11, i32, 1000);
1434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.u8 q7, q13, #7", q7, q13, i32, -1);
1435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
1436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
1437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.u64 q0, q1, #42", q0, q1, i32, -1);
1438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s64 q6, q7, #12", q6, q7, i32, 0xfac);
1439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.u64 q8, q4, #9", q8, q4, i32, 13560);
1440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrshr.s64 q9, q12, #11", q9, q12, i32, 98710);
1441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VRSRA ----\n");
1443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.s8 q0, q1, #1", q0, q1, i32, -1);
1444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.s16 q3, q4, #2", q3, q4, i32, -0x7c);
1445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.s32 q2, q5, #31", q2, q5, i32, -1);
1446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.s8 q6, q7, #7", q6, q7, i32, 0xffff);
1447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.s16 q8, q9, #12", q8, q9, i32, -10);
1448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.s32 q10, q11, #5", q10, q11, i32, 10234);
1449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.u8 q12, q13, #1", q12, q13, i32, -1);
1450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.u16 q14, q15, #11", q14, q15, i32, -1);
1451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.u32 q10, q11, #9", q10, q11, i32, 1000);
1452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.u8 q7, q13, #7", q7, q13, i32, -1);
1453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
1454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
1455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.u64 q0, q1, #42", q0, q1, i32, -1);
1456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.s64 q6, q7, #12", q6, q7, i32, 0xfac);
1457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.u64 q8, q4, #9", q8, q4, i32, 13560);
1458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsra.s64 q9, q12, #11", q9, q12, i32, 98710);
1459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSHR ----\n");
1461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s8 q0, q1, #0", q0, q1, i32, -1);
1462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s8 q0, q1, #1", q0, q1, i32, -1);
1463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s16 q3, q4, #2", q3, q4, i32, -0x7c);
1464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s32 q2, q5, #31", q2, q5, i32, -1);
1465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s8 q6, q7, #7", q6, q7, i32, 0xffff);
1466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s16 q8, q9, #12", q8, q9, i32, -10);
1467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s32 q10, q11, #5", q10, q11, i32, 10234);
1468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.u8 q12, q13, #1", q12, q13, i32, -1);
1469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.u16 q14, q15, #11", q14, q15, i32, -1);
1470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.u32 q10, q11, #9", q10, q11, i32, 1000);
1471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.u8 q7, q13, #7", q7, q13, i32, -1);
1472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
1473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
1474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.u64 q0, q1, #42", q0, q1, i32, -1);
1475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s64 q6, q7, #12", q6, q7, i32, 0xfac);
1476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.u64 q8, q4, #9", q8, q4, i32, 13560);
1477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshr.s64 q9, q12, #11", q9, q12, i32, 98710);
1478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSRA ----\n");
1480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.s8 q0, q1, #1", q0, q1, i32, -1);
1481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.s16 q3, q4, #2", q3, q4, i32, -0x7c);
1482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.s32 q2, q5, #31", q2, q5, i32, -1);
1483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.s8 q6, q7, #7", q6, q7, i32, 0xffff);
1484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.s16 q8, q9, #12", q8, q9, i32, -10);
1485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.s32 q10, q11, #5", q10, q11, i32, 10234);
1486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.u8 q12, q13, #1", q12, q13, i32, -1);
1487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.u16 q14, q15, #11", q14, q15, i32, -1);
1488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.u32 q10, q11, #9", q10, q11, i32, 1000);
1489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.u8 q7, q13, #7", q7, q13, i32, -1);
1490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
1491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
1492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.u64 q0, q1, #42", q0, q1, i32, -1);
1493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.s64 q6, q7, #12", q6, q7, i32, 0xfac);
1494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.u64 q8, q4, #9", q8, q4, i32, 13560);
1495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsra.s64 q9, q12, #11", q9, q12, i32, 98710);
1496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSRI ----\n");
1498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.16 q0, q1, #1", q0, q1, i32, -1);
1499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.16 q3, q4, #2", q3, q4, i32, -0x7c);
1500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.32 q2, q5, #31", q2, q5, i32, -1);
1501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.8 q6, q7, #7", q6, q7, i32, 0xffff);
1502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.16 q8, q9, #12", q8, q9, i32, -10);
1503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.32 q10, q11, #5", q10, q11, i32, 10234);
1504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.8 q12, q13, #1", q12, q13, i32, -1);
1505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.16 q14, q15, #11", q14, q15, i32, -1);
1506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.32 q10, q11, #9", q10, q11, i32, 1000);
1507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.8 q7, q13, #7", q7, q13, i32, -1);
1508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.16 q8, q1, #5", q8, q1, i32, 0xabcf);
1509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.32 q12, q3, #15", q12, q3, i32, -0x1b0);
1510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.64 q0, q1, #42", q0, q1, i32, -1);
1511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.64 q6, q7, #12", q6, q7, i32, 0xfac);
1512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.64 q8, q4, #9", q8, q4, i32, 13560);
1513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsri.64 q9, q12, #11", q9, q12, i32, 98710);
1514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMOVL ----\n");
1516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i32, 0x42);
1517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i32, 0x42);
1518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i32, 0x42);
1519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i32, 0x42);
1520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i32, 0x42);
1521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i32, 0x42);
1522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i8, 0xed);
1523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i8, 0xed);
1524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i8, 0xed);
1525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i8, 0xed);
1526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i8, 0xed);
1527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i8, 0xed);
1528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VABS ----\n");
1530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0x73);
1531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0x73);
1532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0x73);
1533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0xfe);
1534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0xef);
1535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0xde);
1536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i16, 0xfe0a);
1537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i16, 0xef0b);
1538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i16, 0xde0c);
1539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQABS ----\n");
1541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0x73);
1542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 1 << 31);
1543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s16 q0, q1", q0, q1, i32, 1 << 31);
1544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s8 q0, q1", q0, q1, i32, 1 << 31);
1545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0x73);
1546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0x73);
1547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0xfe);
1548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0xef);
1549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0xde);
1550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i16, 0xfe0a);
1551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i16, 0xef0b);
1552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i16, 0xde0c);
1553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VADDW ----\n");
1555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12);
1557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12);
1558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2);
1563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2);
1564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VADDL ----\n");
1569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12);
1571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12);
1572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2);
1577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2);
1578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12);
1583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12);
1584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2);
1589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2);
1590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSUBW ----\n");
1595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12);
1597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12);
1598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
1601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2);
1603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2);
1604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
1607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSUBL ----\n");
1609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12);
1611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12);
1612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
1615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2);
1617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2);
1618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
1621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12);
1623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12);
1624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
1627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2);
1629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2);
1630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
1633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCEQ #0 ----\n");
1635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x21);
1636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x21);
1637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x21);
1638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x0);
1639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x0);
1640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x0);
1641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCGT #0 ----\n");
1643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x21);
1644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x21);
1645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x21);
1646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x0);
1647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x0);
1648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x0);
1649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i8, 0xef);
1650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i8, 0xed);
1651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i8, 0xae);
1652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCGE #0 ----\n");
1654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x21);
1655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x21);
1656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x21);
1657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x0);
1658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x0);
1659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x0);
1660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i8, 0xef);
1661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i8, 0xed);
1662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i8, 0xae);
1663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0xef);
1664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0xed);
1665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0xae);
1666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCLE #0 ----\n");
1668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x21);
1669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x21);
1670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x21);
1671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x0);
1672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x0);
1673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x0);
1674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i8, 0xef);
1675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i8, 0xed);
1676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i8, 0xae);
1677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCLT #0 ----\n");
1679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x21);
1680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x21);
1681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x21);
1682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x0);
1683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x0);
1684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x0);
1685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i8, 0xef);
1686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i8, 0xed);
1687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i8, 0xae);
1688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0xef);
1689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0xed);
1690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0xae);
1691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCNT ----\n");
1693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcnt.8 q0, q1", q0, q1, i32, 0xac3d25eb);
1694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcnt.8 q11, q14", q11, q14, i32, 0xac3d25eb);
1695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcnt.8 q6, q2", q6, q2, i32, 0xad0eb);
1696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCLS ----\n");
1698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s8 q0, q1", q0, q1, i32, 0x21);
1699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s8 q10, q15", q10, q15, i8, 0x82);
1700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s16 q0, q1", q0, q1, i32, 0x21);
1701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s16 q15, q10", q15, q10, i8, 0x82);
1702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s32 q6, q1", q6, q1, i32, 0x21);
1703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s32 q10, q5", q10, q5, i8, 0x82);
1704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0xff);
1705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0xff);
1706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0xff);
1707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0xffef);
1708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0xffef);
1709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0xffef);
1710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0x00);
1711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0x00);
1712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0x00);
1713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0x00ef);
1714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0x00ef);
1715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0x00ef);
1716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCLZ ----\n");
1718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i8 q0, q1", q0, q1, i32, 0x21);
1719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i8 q10, q15", q10, q15, i8, 0x82);
1720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i16 q0, q1", q0, q1, i32, 0x21);
1721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i16 q15, q10", q15, q10, i8, 0x82);
1722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i32 q6, q1", q6, q1, i32, 0x21);
1723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i32 q10, q5", q10, q5, i8, 0x82);
1724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0xff);
1725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0xff);
1726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0xff);
1727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0xffef);
1728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0xffef);
1729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0xffef);
1730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0x00);
1731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0x00);
1732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0x00);
1733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0x00ef);
1734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0x00ef);
1735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0x00ef);
1736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSLI ----\n");
1738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.16 q0, q1, #1", q0, q1, i32, -1);
1739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.16 q3, q4, #2", q3, q4, i32, -0x7c);
1740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.32 q2, q5, #31", q2, q5, i32, -1);
1741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.8 q6, q7, #7", q6, q7, i32, 0xffff);
1742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.16 q8, q9, #12", q8, q9, i32, -10);
1743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.32 q10, q11, #5", q10, q11, i32, 10234);
1744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.8 q12, q13, #1", q12, q13, i32, -1);
1745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.16 q14, q15, #11", q14, q15, i32, -1);
1746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.32 q10, q11, #9", q10, q11, i32, 1000);
1747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.8 q7, q13, #7", q7, q13, i32, -1);
1748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.16 q8, q1, #1", q8, q1, i32, 0xabcf);
1749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.32 q12, q3, #15", q12, q3, i32, -0x1b0);
1750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.64 q0, q1, #42", q0, q1, i32, -1);
1751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.64 q6, q7, #12", q6, q7, i32, 0xfac);
1752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.64 q8, q4, #9", q8, q4, i32, 13560);
1753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vsli.64 q9, q12, #11", q9, q12, i32, 98710);
1754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VPADDL ----\n");
1756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 24);
1757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 140);
1758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, 140);
1759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, 140);
1760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, (1 << 31) + 1);
1761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, (1 << 31) + 1);
1762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, (1 << 31) + 1);
1763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.u32 q10, q11", q10, q11, i32, 24);
1764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 24);
1765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 140);
1766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, 140);
1767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, 140);
1768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, (1 << 31) + 1);
1769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, (1 << 31) + 1);
1770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, (1 << 31) + 1);
1771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpaddl.s32 q10, q11", q10, q11, i32, 24);
1772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VPADAL ----\n");
1774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 24);
1775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 140);
1776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, 140);
1777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i8, 140);
1778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i32, (1 << 31) + 1);
1779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, (1 << 31) + 1);
1780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, (1 << 31) + 1);
1781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.u32 q10, q11", q10, q11, i32, 24);
1782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 24);
1783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 140);
1784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, 140);
1785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i8, 140);
1786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i32, (1 << 31) + 1);
1787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, (1 << 31) + 1);
1788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, (1 << 31) + 1);
1789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vpadal.s32 q10, q11", q10, q11, i32, 24);
1790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VZIP ----\n");
1792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vzip.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
1793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vzip.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
1794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vzip.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
1795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vzip.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vzip.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vzip.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
1798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VUZP ----\n");
1800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vuzp.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
1801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vuzp.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
1802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vuzp.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
1803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vuzp.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vuzp.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vuzp.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
1806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VTRN ----\n");
1808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vtrn.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
1809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vtrn.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
1810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vtrn.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
1811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vtrn.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vtrn.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vtrn.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
1814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSWP ----\n");
1816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vswp q0, q1", q0, i8, 0x12, q1, i8, 0x34);
1817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vswp q1, q0", q0, i8, 0x12, q1, i8, 0x34);
1818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vswp q10, q11", q10, i8, 0x12, q11, i8, 0x34);
1819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vswp q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vswp q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
1821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_dual("vswp q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
1822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VDUP ----\n");
1824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.8 q2, d2[0]", q2, d2, i32, 0xabc4657);
1825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.8 q3, d3[2]", q3, d3, i32, 0x7a1b3);
1826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.8 q1, d0[7]", q1, d0, i32, 0x713aaa);
1827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.8 q0, d4[3]", q0, d4, i32, 0xaa713);
1828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.8 q4, d28[4]", q4, d28, i32, 0x7b1c3);
1829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.16 q7, d19[3]", q7, d19, i32, 0x713ffff);
1830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.16 q15, d31[0]", q15, d31, i32, 0x7f00fa);
1831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.16 q6, d2[0]", q6, d2, i32, 0xffabcde);
1832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.16 q8, d22[3]", q8, d22, i32, 0x713);
1833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.16 q9, d2[0]", q9, d2, i32, 0x713);
1834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.32 q10, d17[1]", q10, d17, i32, 0x713);
1835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.32 q15, d11[0]", q15, d11, i32, 0x3);
1836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.32 q10, d29[1]", q10, d29, i32, 0xf00000aa);
1837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.32 q12, d0[1]", q12, d0, i32, 0xf);
1838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vdup.32 q13, d13[0]", q13, d13, i32, -1);
1839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQDMULL ----\n");
1841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
1842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
1843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
1844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
1848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
1851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
1854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
1855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQDMULL (by scalar) ----\n");
1857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
1858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
1859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
1860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
1863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
1864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
1867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
1870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
1871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQDMLSL ----\n");
1873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
1874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
1875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
1876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
1880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
1883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
1886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
1887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQDMLSL (by scalar) ----\n");
1889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
1890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
1891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
1892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
1895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
1896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
1899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
1902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
1903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQDMLAL ----\n");
1905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
1906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
1907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
1908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
1911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
1912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
1915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
1917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
1918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
1919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQDMLAL (by scalar) ----\n");
1921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
1922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
1923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
1924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
1927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
1928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
1930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
1931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
1933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
1934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
1935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQDMULH ----\n");
1937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
1938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
1939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
1940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
1941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
1943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
1944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
1945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
1946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
1947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
1948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
1949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31);
1950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30);
1951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQDMULH (by scalar) ----\n");
1953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120);
1954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120);
1955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120);
1956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
1957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
1959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12);
1960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
1961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
1962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120);
1963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31);
1964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
1965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31);
1966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30);
1967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSHL (immediate) ----\n");
1969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i64 q0, q1, #1", q0, q1, i32, 24);
1970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i64 q5, q2, #1", q5, q2, i32, (1 << 30));
1971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i64 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
1972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i64 q11, q2, #12", q11, q2, i32, -1);
1973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i64 q15, q12, #63", q15, q12, i32, 5);
1974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i64 q5, q12, #62", q5, q12, i32, (1 << 31) + 1);
1975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i32 q0, q1, #1", q0, q1, i32, 24);
1976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i32 q5, q2, #1", q5, q2, i32, (1 << 30));
1977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i32 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
1978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i32 q11, q2, #12", q11, q2, i32, -1);
1979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i32 q15, q12, #20", q15, q12, i32, 5);
1980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i32 q5, q12, #30", q5, q12, i32, (1 << 31) + 1);
1981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i16 q0, q1, #1", q0, q1, i16, 24);
1982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i16 q5, q2, #1", q5, q2, i32, (1 << 30));
1983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i16 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
1984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i16 q11, q2, #12", q11, q2, i16, -1);
1985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i16 q15, q12, #3", q15, q12, i16, 5);
1986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i16 q5, q12, #14", q5, q12, i32, (1 << 31) + 1);
1987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i8 q0, q1, #1", q0, q1, i8, 24);
1988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i8 q5, q2, #1", q5, q2, i32, (1 << 30));
1989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i8 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
1990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i8 q11, q2, #7", q11, q2, i8, -1);
1991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i8 q15, q12, #3", q15, q12, i8, 5);
1992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshl.i8 q5, q12, #6", q5, q12, i32, (1 << 31) + 1);
1993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
1994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VNEG ----\n");
1995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0x73);
1996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0x73);
1997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0x73);
1998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0xfe);
1999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0xef);
2000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0xde);
2001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i16, 0xfe0a);
2002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i16, 0xef0b);
2003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i16, 0xde0c);
2004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQNEG ----\n");
2006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0x73);
2007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 1 << 31);
2008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s16 q0, q1", q0, q1, i32, 1 << 31);
2009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s8 q0, q1", q0, q1, i32, 1 << 31);
2010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0x73);
2011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0x73);
2012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0xfe);
2013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0xef);
2014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0xde);
2015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i16, 0xfe0a);
2016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i16, 0xef0b);
2017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i16, 0xde0c);
2018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VREV ----\n");
2020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrev64.8 q0, q1", q0, q1, i32, 0xaabbccdd);
2021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrev64.16 q10, q15", q10, q15, i32, 0xaabbccdd);
2022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrev64.32 q1, q14", q1, q14, i32, 0xaabbccdd);
2023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrev32.8 q0, q1", q0, q1, i32, 0xaabbccdd);
2024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrev32.16 q10, q15", q10, q15, i32, 0xaabbccdd);
2025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrev16.8 q0, q1", q0, q1, i32, 0xaabbccdd);
2026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSHLL ----\n");
2028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s32 q0, d1, #1", q0, d1, i32, 24);
2029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s32 q5, d2, #1", q5, d2, i32, (1 << 30));
2030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s32 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
2031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u32 q11, d2, #12", q11, d2, i32, -1);
2032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u32 q15, d12, #20", q15, d12, i32, 5);
2033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u32 q5, d22, #30", q5, d22, i32, (1 << 31) + 1);
2034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s16 q0, d1, #1", q0, d1, i16, 24);
2035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s16 q5, d2, #1", q5, d2, i32, (1 << 30));
2036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s16 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
2037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u16 q11, d2, #12", q11, d2, i16, -1);
2038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u16 q15, d22, #3", q15, d22, i16, 5);
2039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u16 q5, d12, #14", q5, d12, i32, (1 << 31) + 1);
2040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s8 q0, d1, #1", q0, d1, i8, 24);
2041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s8 q5, d2, #1", q5, d2, i32, (1 << 30));
2042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.s8 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
2043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u8 q11, d2, #7", q11, d2, i8, -1);
2044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u8 q15, d19, #3", q15, d19, i8, 5);
2045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.u8 q5, d12, #6", q5, d12, i32, (1 << 31) + 1);
2046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSHLL (max shift) ----\n");
2048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i32 q0, d1, #32", q0, d1, i32, 24);
2049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i32 q5, d2, #32", q5, d2, i32, (1 << 30));
2050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i32 q11, d2, #32", q11, d2, i32, -1);
2051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i32 q15, d12, #32", q15, d12, i32, 5);
2052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i16 q0, d1, #16", q0, d1, i16, 24);
2053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i16 q5, d2, #16", q5, d2, i32, (1 << 30));
2054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i16 q11, d2, #16", q11, d2, i16, -1);
2055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i16 q15, d22, #16", q15, d22, i16, 5);
2056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i8 q0, d1, #8", q0, d1, i8, 24);
2057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i8 q5, d2, #8", q5, d2, i32, (1 << 30));
2058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i8 q11, d2, #8", q11, d2, i8, -1);
2059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vshll.i8 q15, d19, #8", q15, d19, i8, 5);
2060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMULL ----\n");
2062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x1a4b0c, d12, i32, 0xd1e2f0);
2107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q4, d15, d26", q4, d15, i32, (1 << 14) - 0xabcd, d26, i32, (1 << 13) + 0xaa2);
2109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q14, d5, d6", q14, d5, i32, (1 << 28) + 0xefe, d6, i32, (1 << 13) + 0x2bbc2d);
2110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q10, d27, d31", q10, d27, i32, 1 << 31, d31, i32, 1 << 30);
2112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLAL ----\n");
2117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLSL ----\n");
2163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
2185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
2186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
2188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
2189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
2191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
2200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
2201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
2203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
2205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
2206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
2207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQRDMULH ----\n");
2209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
2210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
2211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
2212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
2213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
2214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
2215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
2216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
2217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
2218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
2219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
2220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
2221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
2222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31);
2223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30);
2224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VQRDMULH (by scalar) ----\n");
2226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120);
2227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120);
2228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120);
2229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
2230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
2232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12);
2233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
2234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
2235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120);
2236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31);
2237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
2238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31);
2239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30);
2240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VADD (fp) ----\n");
2242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VSUB (fp) ----\n");
2284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(24.89), q5, i32, f2u(1346));
2290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VABD (fp) ----\n");
2326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMUL (fp) ----\n");
2368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMUL (fp by scalar) ----\n");
2410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120));
2411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120));
2412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
2413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
2414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
2415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19));
2416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11));
2417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN));
2418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0));
2419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0));
2420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
2421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
2422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN));
2423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0));
2424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0));
2425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
2426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
2427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
2428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
2429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
2430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
2431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
2432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
2433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
2434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
2435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
2436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
2437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLA (fp) ----\n");
2439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2459b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2460b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2461b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2462b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2463b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2464b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2465b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2466b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2467b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2468b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2469b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2470b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2471b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2472b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2473b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2474b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2475b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2476b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2477b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2478b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2479b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2480b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLA (fp by scalar) ----\n");
2481b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120));
2482b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120));
2483b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
2484b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
2485b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
2486b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19));
2487b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11));
2488b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN));
2489b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0));
2490b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0));
2491b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
2492b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
2493b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN));
2494b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0));
2495b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0));
2496b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
2497b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
2498b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
2499b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
2500b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
2501b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
2502b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
2503b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
2504b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
2505b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
2506b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
2507b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
2508b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2509b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLS (fp) ----\n");
2510b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2511b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2512b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2513b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2514b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2515b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2516b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2517b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2518b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2519b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2520b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2521b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2522b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2523b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2524b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2525b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2526b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2527b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2528b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2529b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2530b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2531b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2532b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2533b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2534b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2535b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2536b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2537b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2538b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2539b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2540b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2541b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2542b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2543b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2544b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2545b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2546b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2547b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2548b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2549b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2550b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2551b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMLS (fp by scalar) ----\n");
2552b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120));
2553b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120));
2554b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
2555b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
2556b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
2557b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19));
2558b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11));
2559b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN));
2560b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0));
2561b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0));
2562b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
2563b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
2564b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN));
2565b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0));
2566b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0));
2567b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
2568b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
2569b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
2570b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
2571b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
2572b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
2573b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
2574b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
2575b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
2576b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
2577b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
2578b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
2579b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2580b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCVT (integer <-> fp) ----\n");
2581b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(3.2));
2582b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q10, q11", q10, q11, i32, f2u(3e22));
2583b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(3e9));
2584b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2585b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2586b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2587b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2588b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(3.2));
2589b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q10, q11", q10, q11, i32, f2u(3e22));
2590b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(3e9));
2591b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2592b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2593b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2594b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2595b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, 7);
2596b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q10, q11", q10, q11, i32, 1 << 31);
2597b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2598b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2599b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q0, q14", q0, q14, i32, 0x30a0bcef);
2600b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, 7);
2601b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q10, q11", q10, q11, i32, 1 << 31);
2602b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2603b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2604b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q0, q14", q0, q14, i32, 0x30a0bcef);
2605b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(NAN));
2606b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(0.0));
2607b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2608b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2609b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(NAN));
2610b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(0.0));
2611b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2612b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2613b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2614b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCVT (fixed <-> fp) ----\n");
2615b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(3.2));
2616b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22));
2617b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q15, q4, #32", q15, q4, i32, f2u(3e9));
2618b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q15, q4, #7", q15, q4, i32, f2u(-0.5));
2619b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q15, q4, #4", q15, q4, i32, f2u(-7.1));
2620b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2621b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2622b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1, #5", q0, q1, i32, f2u(3.2));
2623b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22));
2624b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q15, q4, #8", q15, q4, i32, f2u(3e9));
2625b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q15, q4, #2", q15, q4, i32, f2u(-0.5));
2626b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q15, q4, #1", q15, q4, i32, f2u(-7.1));
2627b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2628b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2629b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q0, q1, #5", q0, q1, i32, 7);
2630b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q10, q11, #9", q10, q11, i32, 1 << 31);
2631b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q0, q1, #4", q0, q1, i32, (1U << 31) + 1);
2632b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q0, q1, #6", q0, q1, i32, (1U << 31) - 1);
2633b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.u32 q0, q14, #5", q0, q14, i32, 0x30a0bcef);
2634b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q0, q1, #12", q0, q1, i32, 7);
2635b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q10, q11, #8", q10, q11, i32, 1 << 31);
2636b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q0, q1, #2", q0, q1, i32, (1U << 31) + 1);
2637b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q0, q1, #1", q0, q1, i32, (1U << 31) - 1);
2638b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.f32.s32 q0, q14, #6", q0, q14, i32, 0x30a0bcef);
2639b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN));
2640b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0));
2641b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY));
2642b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY));
2643b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN));
2644b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0));
2645b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY));
2646b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY));
2647b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2648b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMAX (fp) ----\n");
2649b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2650b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2651b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2652b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2653b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2654b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2655b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2656b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2657b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2658b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2659b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2660b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2661b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2662b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2663b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2664b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2665b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2666b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2667b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2668b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2669b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2670b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2671b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2672b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2673b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2674b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2675b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2676b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2677b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2678b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2679b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2680b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2681b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2682b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2683b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2684b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2685b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2686b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2687b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2688b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2689b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2690b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2691b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2692b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2693b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2694b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2695b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2696b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VMIN (fp) ----\n");
2697b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2698b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2699b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2700b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2701b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2702b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2703b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2704b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2705b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2706b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2707b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2708b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2709b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2710b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2711b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2712b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2713b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2714b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2715b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2716b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2717b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2718b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2719b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2720b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2721b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2722b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2723b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2724b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2725b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2726b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2727b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2728b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2729b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2730b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2731b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2732b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2733b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2734b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2735b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2736b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2737b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2738b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2739b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2740b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2741b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2742b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2743b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2744b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VRECPE ----\n");
2745b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2));
2746b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22));
2747b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9));
2748b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-0.5));
2749b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-7.1));
2750b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2751b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2752b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2));
2753b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22));
2754b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9));
2755b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2756b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2757b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2758b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2759b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7);
2760b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31);
2761b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2762b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2763b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
2764b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7);
2765b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31);
2766b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2767b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2768b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
2769b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN));
2770b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0));
2771b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2772b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2773b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN));
2774b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0));
2775b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2776b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2777b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2778b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VRECPS ----\n");
2779b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2780b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2781b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2782b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2783b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2784b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2785b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2786b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2787b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2788b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2789b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2790b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2791b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2792b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2793b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2794b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2795b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2796b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2797b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2798b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2799b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2800b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2801b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2802b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2803b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2804b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2805b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2806b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2807b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2808b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2809b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2810b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2811b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2812b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2813b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2814b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2815b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2816b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2817b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2818b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2819b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2820b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VABS (fp) ----\n");
2821b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2));
2822b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22));
2823b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9));
2824b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2825b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2826b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2827b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2828b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2));
2829b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22));
2830b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9));
2831b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5));
2832b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1));
2833b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
2834b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
2835b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7);
2836b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31);
2837b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2838b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2839b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
2840b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7);
2841b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31);
2842b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
2843b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
2844b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
2845b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN));
2846b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0));
2847b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2848b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2849b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN));
2850b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0));
2851b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
2852b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
2853b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2854b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCGT (fp) ----\n");
2855b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
2856b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
2857b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
2858b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2859b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2860b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2861b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2862b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2863b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2864b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2865b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2866b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2867b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2868b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2869b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2870b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2871b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2872b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2873b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2874b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2875b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2876b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2877b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2878b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2879b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2880b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2881b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2882b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2883b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2884b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2885b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2886b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2887b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2888b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2889b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2890b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2891b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2892b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2893b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2894b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2895b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2896b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2897b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2898b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2899b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2900b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2901b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2902b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2903b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2904b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2905b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCGE (fp) ----\n");
2906b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
2907b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
2908b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
2909b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2910b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2911b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2912b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2913b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2914b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2915b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2916b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2917b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2918b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2919b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2920b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2921b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2922b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2923b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2924b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2925b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2926b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2927b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2928b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2929b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2930b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2931b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2932b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2933b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2934b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2935b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2936b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2937b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2938b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2939b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2940b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2941b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2942b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2943b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2944b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2945b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2946b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2947b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2948b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
2949b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
2950b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
2951b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
2952b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
2953b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
2954b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
2955b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
2956b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VACGT (fp) ----\n");
2957b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
2958b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
2959b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
2960b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
2961b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
2962b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
2963b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
2964b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
2965b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
2966b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
2967b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
2968b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
2969b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
2970b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
2971b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
2972b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
2973b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
2974b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
2975b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
2976b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
2977b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
2978b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
2979b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
2980b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
2981b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
2982b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
2983b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
2984b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
2985b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
2986b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
2987b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
2988b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
2989b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
2990b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
2991b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
2992b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
2993b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
2994b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
2995b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
2996b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
2997b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
2998b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
2999b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
3000b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
3001b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
3002b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
3003b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
3004b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
3005b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
3006b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3007b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VACGE (fp) ----\n");
3008b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
3009b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
3010b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
3011b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
3012b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
3013b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
3014b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
3015b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
3016b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
3017b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
3018b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
3019b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
3020b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
3021b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
3022b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
3023b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
3024b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
3025b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
3026b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
3027b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
3028b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
3029b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
3030b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
3031b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
3032b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
3033b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
3034b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
3035b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
3036b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
3037b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
3038b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
3039b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
3040b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
3041b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
3042b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
3043b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
3044b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
3045b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
3046b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
3047b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
3048b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
3049b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
3050b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
3051b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
3052b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
3053b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
3054b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
3055b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
3056b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
3057b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3058b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCEQ (fp) ----\n");
3059b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
3060b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
3061b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
3062b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
3063b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
3064b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
3065b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
3066b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
3067b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
3068b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
3069b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
3070b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
3071b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
3072b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
3073b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
3074b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
3075b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
3076b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
3077b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
3078b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
3079b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
3080b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
3081b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
3082b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
3083b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
3084b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
3085b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
3086b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
3087b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
3088b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
3089b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
3090b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
3091b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
3092b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
3093b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
3094b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
3095b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
3096b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
3097b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
3098b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
3099b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
3100b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
3101b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
3102b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
3103b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
3104b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
3105b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
3106b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
3107b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
3108b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3109b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCEQ (fp) #0 ----\n");
3110b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3111b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x1);
3112b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3113b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3114b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3115b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q10, q15, #0", q10, q15, i32, 0x0);
3116b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3117b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3118b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3119b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3120b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3121b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCGT (fp) #0 ----\n");
3122b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3123b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x1);
3124b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3125b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3126b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3127b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q10, q15, #0", q10, q15, i32, 0x0);
3128b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3129b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3130b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3131b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3132b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3133b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCLT (fp) #0 ----\n");
3134b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3135b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x1);
3136b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3137b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3138b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3139b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q10, q15, #0", q10, q15, i32, 0x0);
3140b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3141b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3142b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3143b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3144b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3145b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCGE (fp) #0 ----\n");
3146b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3147b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x1);
3148b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3149b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3150b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3151b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q10, q15, #0", q10, q15, i32, 0x0);
3152b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3153b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3154b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3155b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3156b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3157b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VCLE (fp) #0 ----\n");
3158b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
3159b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x1);
3160b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
3161b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
3162b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
3163b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q10, q15, #0", q10, q15, i32, 0x0);
3164b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
3165b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
3166b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
3167b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
3168b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3169b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VNEG (fp) ----\n");
3170b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x01000000);
3171b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x1);
3172b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, 1 << 31);
3173b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(23.04));
3174b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(-23.04));
3175b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q10, q15", q10, q15, i32, 0x0);
3176b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(NAN));
3177b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(0.0));
3178b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
3179b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
3180b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3181b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VRSQRTS ----\n");
3182b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
3183b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
3184b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
3185b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
3186b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
3187b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
3188b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
3189b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
3190b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
3191b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
3192b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
3193b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
3194b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
3195b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
3196b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
3197b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
3198b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
3199b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
3200b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
3201b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
3202b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
3203b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
3204b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
3205b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
3206b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
3207b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
3208b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
3209b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
3210b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
3211b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
3212b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
3213b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
3214b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
3215b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
3216b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
3217b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
3218b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
3219b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
3220b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
3221b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
3222b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3223b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    printf("---- VRSQRTE (fp) ----\n");
3224b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2));
3225b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22));
3226b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9));
3227b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5));
3228b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1));
3229b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
3230b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
3231b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2));
3232b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22));
3233b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9));
3234b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5));
3235b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1));
3236b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
3237b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
3238b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7);
3239b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31);
3240b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
3241b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
3242b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
3243b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7);
3244b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31);
3245b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
3246b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
3247b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
3248b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(NAN));
3249b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(0.0));
3250b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
3251b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
3252b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3253b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    return 0;
3254b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3255b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3256b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* How to compile:
3257b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3258b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
3259b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov       -marm -o neon128-a neon128.c
3260b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3261b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   or
3262b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3263b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov   gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \
3264b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov       -mthumb -o neon128-t neon128.c
3265b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3266b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov*/
3267b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3268b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <stdio.h>
3269b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#include <math.h>
3270b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3271b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifndef __thumb__
3272b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// ARM
3273b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define MOVE_to_FPSCR_from_R4 \
3274b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t"
3275b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define MOVE_to_R4_from_FPSCR \
3276b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t"
3277b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
3278b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3279b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#ifdef __thumb__
3280b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// Thumb
3281b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define MOVE_to_FPSCR_from_R4 \
3282b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t"
3283b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define MOVE_to_R4_from_FPSCR \
3284b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t"
3285b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#endif
3286b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3287b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanovstatic inline unsigned int f2u(float x) {
3288b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    union {
3289b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        float f;
3290b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov        unsigned int u;
3291b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    } cvt;
3292b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    cvt.f = x;
3293b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov    return cvt.u;
3294b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3295b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3296b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov/* test macros to generate and output the result of a single instruction */
3297b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3298b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_imm(instruction, QD, imm) \
3299b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
3300b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out[4]; \
3301b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
3302b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
3303b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vmov.i8 " #QD ", #0x55" "\n\t" \
3304b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction ", #" #imm "\n\t" \
3305b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %0, {" #QD "}\n\t" \
3306b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : \
3307b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out) \
3308b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QD, "memory" \
3309b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
3310b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \
3311b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out[3], out[2], out[1], out[0]); \
3312b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3313b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3314b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \
3315b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
3316b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out[4]; \
3317b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
3318b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
3319b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vmov.i8 " #QD ", #0x55" "\n\t" \
3320b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QMtype " " #QM ", %1\n\t" \
3321b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction "\n\t" \
3322b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %0, {" #QD "}\n\t" \
3323b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : \
3324b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out), "r" (QMval) \
3325b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QD, #QM, "memory" \
3326b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
3327b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x\n", \
3328b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out[3], out[2], out[1], out[0], QMval); \
3329b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3330b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3331b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \
3332b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
3333b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out[4]; \
3334b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int fpscr; \
3335b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
3336b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
3337b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vmov.i8 " #QD ", #0x55" "\n\t" \
3338b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "mov r4, #0\n\t" \
3339b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      MOVE_to_FPSCR_from_R4 \
3340b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QMtype " " #QM ", %2\n\t" \
3341b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction "\n\t" \
3342b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %1, {" #QD "}\n\t" \
3343b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      MOVE_to_R4_from_FPSCR \
3344b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "mov %0, r4" \
3345b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "=r" (fpscr) \
3346b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out), "r" (QMval) \
3347b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QD, #QM, "memory", "r4" \
3348b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
3349b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
3350b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov          "  fpscr: %08x\n", \
3351b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \
3352b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3353b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3354b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
3355b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
3356b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out[4]; \
3357b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
3358b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
3359b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vmov.i8 " #QD ", #0x55" "\n\t" \
3360b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QMtype " " #QM ", %1\n\t" \
3361b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QNtype " " #QN ", %2\n\t" \
3362b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction "\n\t" \
3363b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %0, {" #QD "}\n\t" \
3364b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : \
3365b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out), "r" (QMval), "r" (QNval) \
3366b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QD, #QM, #QN, "memory" \
3367b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
3368b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
3369b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "  Qn (" #QNtype ")0x%08x\n", \
3370b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
3371b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3372b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3373b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
3374b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
3375b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out[4]; \
3376b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
3377b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
3378b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup.i32 " #QD ", %3\n\t" \
3379b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QMtype " " #QM ", %1\n\t" \
3380b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QNtype " " #QN ", %2\n\t" \
3381b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction "\n\t" \
3382b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %0, {" #QD "}\n\t" \
3383b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : \
3384b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out), "r" (QMval), "r" (QNval), "r" (0x3f800000) \
3385b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QD, #QM, #QN, "memory" \
3386b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
3387b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
3388b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "  Qn (" #QNtype ")0x%08x\n", \
3389b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
3390b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3391b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3392b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
3393b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
3394b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out[4]; \
3395b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int fpscr; \
3396b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
3397b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
3398b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vmov.i8 " #QD ", #0x55" "\n\t" \
3399b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "mov r4, #0\n\t" \
3400b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      MOVE_to_FPSCR_from_R4 \
3401b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QMtype " " #QM ", %2\n\t" \
3402b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QNtype " " #QN ", %3\n\t" \
3403b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction "\n\t" \
3404b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %1, {" #QD "}\n\t" \
3405b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      MOVE_to_R4_from_FPSCR \
3406b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "mov %0, r4" \
3407b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "=r" (fpscr) \
3408b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out), "r" (QMval), "r" (QNval) \
3409b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QD, #QM, #QN, "memory", "r4" \
3410b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
3411b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
3412b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "  Qn (" #QNtype ")0x%08x  fpscr: %08x\n", \
3413b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \
3414b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3415b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3416b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \
3417b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
3418b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out1[4]; \
3419b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out2[4]; \
3420b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
3421b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
3422b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QMtype " " #QM ", %2\n\t" \
3423b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QNtype " " #QN ", %3\n\t" \
3424b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction "\n\t" \
3425b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %0, {" #QM "}\n\t" \
3426b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %1, {" #QN "}\n\t" \
3427b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : \
3428b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval) \
3429b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QM, #QN, "memory" \
3430b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
3431b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x  Qn 0x%08x 0x%08x 0x%08x 0x%08x" \
3432b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "  Qm (" #QMtype ")0x%08x  Qn (" #QNtype ")0x%08x\n", \
3433b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out1[3], out1[2], out1[1], out1[0], \
3434b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      out2[3], out2[2], out2[1], out2[0], QMval, QNval); \
3435b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3436b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3437b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov// Ditto TESTING_bin(), but in QD all zeros
3438b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_bin_0s(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
3439b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov{ \
3440b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  unsigned int out[4]; \
3441b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov\
3442b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  __asm__ volatile( \
3443b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vmov.i8 " #QD ", #0x00" "\n\t" \
3444b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QMtype " " #QM ", %1\n\t" \
3445b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vdup." #QNtype " " #QN ", %2\n\t" \
3446b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction "\n\t" \
3447b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "vstmia %0, {" #QD "}\n\t" \
3448b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : \
3449b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : "r" (out), "r" (QMval), "r" (QNval) \
3450b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      : #QD, #QM, #QN, "memory" \
3451b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      ); \
3452b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov  printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
3453b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      "  Qn (" #QNtype ")0x%08x\n", \
3454b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov      instruction, out[3], out[2], out[1], out[0], QMval, QNval); \
3455b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov}
3456b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov
3457b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#if 0
3458b32f58018498ea2225959b0ba11c18f0c433deefEvgeniy Stepanov#define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \
3459ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
3460ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
3461ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
3462ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
3463ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", #0x55" "\n\t" \
3464ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %1\n\t" \
3465ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction ", #" #imm "\n\t" \
3466ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #QD "}\n\t" \
3467ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
3468ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval) \
3469ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, "memory" \
3470ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
3471ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x", \
3472ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[3], out[2], out[1], out[0], QMval); \
3473ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
3474ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif
3475ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3476ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main(int argc, char **argv)
3477ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
3478ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VMOV (immediate) -----\n");
3479ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i32 q0", q0, 0x7);
3480ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i16 q1", q1, 0x7);
3481ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i8 q2", q2, 0x7);
3482ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i32 q5", q5, 0x700);
3483ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i16 q7", q7, 0x700);
3484ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i32 q10", q10, 0x70000);
3485ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i32 q12", q12, 0x7000000);
3486ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i32 q13", q13, 0x7FF);
3487ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i32 q14", q14, 0x7FFFF);
3488ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmov.i64 q15", q15, 0xFF0000FF00FFFF00);
3489ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3490ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VMVN (immediate) -----\n");
3491ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i32 q0", q0, 0x7);
3492ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i16 q1", q1, 0x7);
3493ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i8 q2", q2, 0x7);
3494ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i32 q5", q5, 0x700);
3495ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i16 q7", q7, 0x700);
3496ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i32 q10", q10, 0x70000);
3497ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i32 q13", q13, 0x7000000);
3498ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i32 q11", q11, 0x7FF);
3499ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i32 q14", q14, 0x7FFFF);
3500ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vmvn.i64 q15", q15, 0xFF0000FF00FFFF00);
3501ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3502ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VORR (immediate) -----\n");
3503ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vorr.i32 q0", q0, 0x7);
3504ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vorr.i16 q2", q2, 0x7);
3505ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vorr.i32 q8", q8, 0x700);
3506ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vorr.i16 q6", q6, 0x700);
3507ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vorr.i32 q14", q14, 0x70000);
3508ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vorr.i32 q15", q15, 0x7000000);
3509ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3510ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VBIC (immediate) -----\n");
3511ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vbic.i32 q0", q0, 0x7);
3512ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vbic.i16 q3", q3, 0x7);
3513ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vbic.i32 q5", q5, 0x700);
3514ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vbic.i16 q8", q8, 0x700);
3515ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vbic.i32 q10", q10, 0x70000);
3516ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_imm("vbic.i32 q15", q15, 0x7000000);
3517ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3518ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMVN (register) ----\n");
3519ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmvn q0, q1", q0, q1, i32, 24);
3520ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmvn q10, q15", q10, q15, i32, 24);
3521ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmvn q0, q14", q0, q14, i32, 24);
3522ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3523ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMOV (register) ----\n");
3524ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmov q0, q1", q0, q1, i32, 24);
3525ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmov q10, q15", q10, q15, i32, 24);
3526ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmov q0, q14", q0, q14, i32, 24);
3527ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3528ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VDUP (ARM core register) (tested indirectly) ----\n");
3529ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmov q0, q1", q0, q1, i8, 7);
3530ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmov q10, q11", q10, q11, i16, 7);
3531ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmov q0, q15", q0, q15, i32, 7);
3532ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3533ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VADD ----\n");
3534ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3535ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3536ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3537ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3538ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3539ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3540ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3541ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3542ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3543ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3544ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120);
3545ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3546ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSUB ----\n");
3547ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3548ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3549ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3550ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3551ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3552ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3553ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3554ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3555ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3556ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3557ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120);
3558ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3559ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VAND ----\n");
3560ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vand q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
3561ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vand q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
3562ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vand q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
3563ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vand q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
3564ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3565ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VBIC ----\n");
3566ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbic q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
3567ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbic q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
3568ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbic q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
3569ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbic q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
3570ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3571ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VORR ----\n");
3572ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vorr q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
3573ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vorr q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
3574ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vorr q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
3575ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vorr q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
3576ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3577ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VORN ----\n");
3578ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vorn q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
3579ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vorn q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
3580ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vorn q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
3581ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vorn q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
3582ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3583ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VEOR ----\n");
3584ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
3585ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("veor q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
3586ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("veor q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
3587ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("veor q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
3588ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
3589ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("veor q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
3590ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("veor q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
3591ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("veor q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
3592ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3593ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VBSL ----\n");
3594ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
3595ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbsl q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
3596ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbsl q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
3597ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbsl q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
3598ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
3599ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbsl q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
3600ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbsl q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
3601ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbsl q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
3602ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3603ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VBIT ----\n");
3604ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
3605ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbit q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
3606ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbit q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
3607ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbit q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
3608ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
3609ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbit q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
3610ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbit q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
3611ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbit q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
3612ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3613ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VBIF ----\n");
3614ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77);
3615ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbif q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57);
3616ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbif q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed);
3617ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbif q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff);
3618ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73);
3619ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbif q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff);
3620ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbif q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff);
3621ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vbif q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f);
3622ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3623ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VEXT ----\n");
3624ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vext.8 q0, q1, q2, #0", q0, q1, i8, 0x77, q2, i8, 0xff);
3625ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vext.8 q0, q1, q2, #1", q0, q1, i8, 0x77, q2, i8, 0xff);
3626ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vext.8 q0, q1, q2, #9", q0, q1, i8, 0x77, q2, i8, 0xff);
3627ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vext.8 q0, q1, q2, #15", q0, q1, i8, 0x77, q2, i8, 0xff);
3628ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vext.8 q10, q11, q12, #4", q10, q11, i8, 0x77, q12, i8, 0xff);
3629ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vext.8 q0, q5, q15, #12", q0, q5, i8, 0x77, q15, i8, 0xff);
3630ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3631ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VHADD ----\n");
3632ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3633ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3634ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3635ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3636ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121);
3637ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3638ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3639ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3640ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3641ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3642ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3643ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3644ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3645ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121);
3646ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3647ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3648ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3649ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3650ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3651ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VHSUB ----\n");
3652ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3653ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3654ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3655ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3656ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3657ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3658ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3659ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3660ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3661ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3662ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3663ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3664ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3665ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3666ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3667ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vhsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3668ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3669ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQADD ----\n");
3670ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3671ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3672ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3673ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3674ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3675ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3676ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3677ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3678ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3679ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3680ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3681ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3682ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3683ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3684ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3685ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3686ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3687ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQSUB ----\n");
3688ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3689ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3690ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3691ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3692ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3693ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3694ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3695ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3696ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
3697ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3698ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3699ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3700ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3701ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3702ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3703ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3704ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3705ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VRHADD ----\n");
3706ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
3707ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
3708ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3709ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3710ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3711ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
3712ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3713ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3714ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
3715ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3716ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3717ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
3718ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
3719ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
3720ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3721ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
3722ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3723ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3724ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3725ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3726ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3727ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
3728ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3729ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3730ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3731ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
3732ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
3733ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
3734ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3735ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3736ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCGT ----\n");
3737ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
3738ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
3739ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3740ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3741ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3742ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3743ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3744ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3745ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
3746ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
3747ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
3748ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2);
3749ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3750ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3751ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
3752ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3753ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3754ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2);
3755ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3756ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3757ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3758ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
3759ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3760ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3761ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3762ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3763ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3764ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3765ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
3766ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
3767ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
3768ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3769ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3770ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3771ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3772ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3773ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3774ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3775ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3776ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3777ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3778ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3779ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCGE ----\n");
3780ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
3781ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
3782ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3783ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3784ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3785ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3786ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3787ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3788ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
3789ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
3790ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140);
3791ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2);
3792ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3793ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3794ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
3795ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3796ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3797ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2);
3798ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3799ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3800ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3801ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
3802ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3803ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3804ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
3805ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3806ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3807ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
3808ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
3809ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
3810ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
3811ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3812ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3813ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2);
3814ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3815ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3816ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
3817ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3818ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3819ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2);
3820ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3821ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3822ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSHL (register) ----\n");
3823ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1);
3824ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8);
3825ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4);
3826ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2);
3827ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1);
3828ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11);
3829ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2);
3830ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12);
3831ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21);
3832ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20);
3833ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4);
3834ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.s64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30);
3835ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1);
3836ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8);
3837ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4);
3838ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2);
3839ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1);
3840ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11);
3841ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2);
3842ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12);
3843ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21);
3844ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20);
3845ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4);
3846ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vshl.u64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30);
3847ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3848ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQSHL (register) ----\n");
3849ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
3850ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
3851ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
3852ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
3853ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
3854ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
3855ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
3856ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
3857ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
3858ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
3859ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
3860ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
3861ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
3862ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
3863ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
3864ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
3865ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
3866ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
3867ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
3868ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
3869ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
3870ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
3871ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
3872ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3873ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
3874ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
3875ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
3876ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
3877ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
3878ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
3879ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
3880ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
3881ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
3882ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
3883ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
3884ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
3885ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
3886ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
3887ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
3888ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
3889ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
3890ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
3891ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
3892ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
3893ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
3894ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
3895ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
3896ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
3897ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
3898ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQSHL / VQSHLU (immediate) ----\n");
3899ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q0, q1, #1", q0, q1, i32, 1);
3900ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q15, q14, #1", q15, q14, i32, -127);
3901ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #0", q5, q4, i32, -127);
3902ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, 16);
3903ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, 16);
3904ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #59", q5, q4, i32, 16);
3905ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #58", q5, q4, i32, 16);
3906ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #17", q5, q4, i32, 16);
3907ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, -1);
3908ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, -1);
3909ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
3910ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q10, q11, #1", q10, q11, i32, 1);
3911ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q15, q14, #1", q15, q14, i32, -127);
3912ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #0", q5, q4, i32, -127);
3913ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, 16);
3914ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #28", q5, q4, i32, 16);
3915ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #27", q5, q4, i32, 16);
3916ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #26", q5, q4, i32, 16);
3917ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #17", q5, q4, i32, 16);
3918ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, -1);
3919ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #29", q5, q4, i32, -1);
3920ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
3921ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q9, q8, #1", q9, q8, i32, 1);
3922ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q15, q14, #1", q15, q14, i32, -127);
3923ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q5, q4, #0", q5, q4, i32, -127);
3924ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q9, q8, #15", q9, q8, i32, 16);
3925ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, 16);
3926ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q5, q4, #11", q5, q4, i32, 16);
3927ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q5, q4, #10", q5, q4, i32, 16);
3928ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q5, q4, #4", q5, q4, i32, 16);
3929ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q5, q4, #15", q5, q4, i32, -1);
3930ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, -1);
3931ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
3932ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q0, q1, #1", q0, q1, i32, 1);
3933ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q15, q14, #1", q15, q14, i32, -127);
3934ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #0", q5, q4, i32, -127);
3935ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, 16);
3936ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #4", q5, q4, i32, 16);
3937ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #3", q5, q4, i32, 16);
3938ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, 16);
3939ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #1", q5, q4, i32, 16);
3940ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, -1);
3941ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #5", q5, q4, i32, -1);
3942ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
3943ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q0, q1, #1", q0, q1, i32, 1);
3944ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q15, q14, #1", q15, q14, i32, -127);
3945ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #0", q5, q4, i32, -127);
3946ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, 16);
3947ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, 16);
3948ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #59", q5, q4, i32, 16);
3949ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #58", q5, q4, i32, 16);
3950ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #17", q5, q4, i32, 16);
3951ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, -1);
3952ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, -1);
3953ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
3954ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q10, q11, #1", q10, q11, i32, 1);
3955ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q15, q14, #1", q15, q14, i32, -127);
3956ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #0", q5, q4, i32, -127);
3957ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, 16);
3958ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #28", q5, q4, i32, 16);
3959ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #27", q5, q4, i32, 16);
3960ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #26", q5, q4, i32, 16);
3961ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #17", q5, q4, i32, 16);
3962ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, -1);
3963ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #29", q5, q4, i32, -1);
3964ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
3965ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q9, q8, #1", q9, q8, i32, 1);
3966ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q15, q14, #1", q15, q14, i32, -127);
3967ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q5, q4, #0", q5, q4, i32, -127);
3968ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q9, q8, #15", q9, q8, i32, 16);
3969ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, 16);
3970ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q5, q4, #11", q5, q4, i32, 16);
3971ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q5, q4, #10", q5, q4, i32, 16);
3972ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q5, q4, #4", q5, q4, i32, 16);
3973ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q5, q4, #15", q5, q4, i32, -1);
3974ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, -1);
3975ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
3976ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q0, q1, #1", q0, q1, i32, 1);
3977ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q15, q14, #1", q15, q14, i32, -127);
3978ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #0", q5, q4, i32, -127);
3979ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, 16);
3980ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #4", q5, q4, i32, 16);
3981ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #3", q5, q4, i32, 16);
3982ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, 16);
3983ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #1", q5, q4, i32, 16);
3984ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, -1);
3985ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #5", q5, q4, i32, -1);
3986ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
3987ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q0, q1, #1", q0, q1, i32, 1);
3988ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q15, q14, #1", q15, q14, i32, -127);
3989ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #0", q5, q4, i32, -127);
3990ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, 16);
3991ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, 16);
3992ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #59", q5, q4, i32, 16);
3993ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #58", q5, q4, i32, 16);
3994ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #17", q5, q4, i32, 16);
3995ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, -1);
3996ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, -1);
3997ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
3998ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q10, q11, #1", q10, q11, i32, 1);
3999ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q15, q14, #1", q15, q14, i32, -127);
4000ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #0", q5, q4, i32, -127);
4001ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, 16);
4002ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #28", q5, q4, i32, 16);
4003ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #27", q5, q4, i32, 16);
4004ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #26", q5, q4, i32, 16);
4005ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #17", q5, q4, i32, 16);
4006ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, -1);
4007ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #29", q5, q4, i32, -1);
4008ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
4009ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q9, q8, #1", q9, q8, i32, 1);
4010ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q15, q14, #1", q15, q14, i32, -127);
4011ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q5, q4, #0", q5, q4, i32, -127);
4012ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q9, q8, #15", q9, q8, i32, 16);
4013ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, 16);
4014ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q5, q4, #11", q5, q4, i32, 16);
4015ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q5, q4, #10", q5, q4, i32, 16);
4016ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q5, q4, #4", q5, q4, i32, 16);
4017ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q5, q4, #15", q5, q4, i32, -1);
4018ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, -1);
4019ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2);
4020ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q0, q1, #1", q0, q1, i32, 1);
4021ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q15, q14, #1", q15, q14, i32, -127);
4022ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #0", q5, q4, i32, -127);
4023ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, 16);
4024ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #4", q5, q4, i32, 16);
4025ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #3", q5, q4, i32, 16);
4026ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, 16);
4027ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #1", q5, q4, i32, 16);
4028ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, -1);
4029ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #5", q5, q4, i32, -1);
4030ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2);
4031ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4032ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQRSHL (register) ----\n");
4033ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
4034ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
4035ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
4036ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
4037ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
4038ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
4039ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
4040ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
4041ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
4042ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
4043ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
4044ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
4045ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
4046ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
4047ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
4048ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
4049ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
4050ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
4051ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4052ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4053ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4054ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4055ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4056ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4057ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4058ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4059ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4060ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4061ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4062ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4063ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
4064ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
4065ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
4066ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
4067ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
4068ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4069ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
4070ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
4071ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
4072ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
4073ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
4074ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
4075ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
4076ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
4077ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
4078ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
4079ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
4080ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
4081ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
4082ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
4083ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
4084ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
4085ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
4086ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
4087ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
4088ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4089ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4090ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4091ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4092ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4093ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4094ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4095ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4096ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4097ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4098ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
4099ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
4100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
4101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
4102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VRSHL (register) ----\n");
4105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
4106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
4107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
4108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
4109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
4110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
4111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
4112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
4113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
4114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
4115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
4116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
4117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
4118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
4119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
4120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
4121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
4122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
4123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0);
4135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
4136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
4137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
4138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
4139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
4140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1);
4142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1);
4143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3);
4144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14);
4145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26);
4146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60);
4147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30);
4148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4);
4149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9);
4150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7);
4151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1);
4152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3);
4153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31);
4154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3);
4155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1);
4156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31);
4157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13);
4158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30);
4159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40);
4160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1);
4164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1);
4167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1);
4170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30);
4171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3);
4172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16);
4173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2);
4174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMAX (integer) ----\n");
4177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
4178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121);
4179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
4180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
4182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
4183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
4186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
4189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
4193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120);
4194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
4195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
4197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMIN (integer) ----\n");
4209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
4210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121);
4211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
4213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
4214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
4215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
4218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
4221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
4225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120);
4226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120);
4228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140);
4229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VABD ----\n");
4241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
4242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
4243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120);
4244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
4247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
4248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
4249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
4252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
4255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
4259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, -140, q2, i32, 120);
4261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
4263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
4264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VABA ----\n");
4276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
4277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121);
4278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2);
4282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
4283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
4284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3);
4287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2);
4290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120);
4294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2);
4298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200);
4299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3);
4305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2);
4308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaba.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VABAL ----\n");
4311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
4312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121);
4313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
4317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
4318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
4319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
4322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
4325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120);
4328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
4329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
4333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
4334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4335ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4336ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4337ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4338ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4339ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4340ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4341ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4342ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4343ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabal.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120);
4344ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4345ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VABDL ----\n");
4346ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
4347ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121);
4348ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4349ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4350ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4351ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2);
4352ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
4353ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
4354ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4355ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4356ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3);
4357ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4358ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4359ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2);
4360ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4361ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4362ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120);
4363ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120);
4364ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4365ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4366ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120);
4367ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2);
4368ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200);
4369ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4370ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4371ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2);
4372ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4373ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4374ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3);
4375ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4376ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4377ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2);
4378ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabdl.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120);
4379ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4380ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VTST ----\n");
4381ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
4382ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120);
4383ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120);
4384ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120);
4385ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4386ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
4387ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4388ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2);
4389ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
4390ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2);
4391ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vtst.32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4392ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4393ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCEQ ----\n");
4394ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
4395ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120);
4396ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120);
4397ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120);
4398ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4399ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1);
4400ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2);
4401ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2);
4402ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 14) + 1);
4403ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2);
4404ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120);
4405ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4406ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLA ----\n");
4407ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120);
4408ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, 120);
4409ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
4410ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q7, q1, q2", q7, q1, i32, 0x140, q2, i32, 0x120);
4411ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120);
4412ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
4413ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
4414ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q14, q5, q9", q14, q5, i32, (1 << 14) + 1, q9, i32, (1 << 13) + 2);
4415ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
4416ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
4417ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
4418ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
4419ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, -120);
4420ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4421ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLS ----\n");
4422ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120);
4423ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
4424ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
4425ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4426ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
4427ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
4428ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
4429ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
4430ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
4431ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
4432ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q10, q11, q15", q10, q11, i32, -24, q15, i32, 120);
4433ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4434ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMUL ----\n");
4435ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
4436ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
4437ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
4438ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120);
4439ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
4440ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
4441ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
4442ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 25) + 0xfeb2, q12, i32, (1 << 13) + 0xdf);
4443ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
4444ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
4445ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2);
4446ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
4447ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
4448ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
4449ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3);
4450ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f);
4451ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4452ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMUL (by scalar) ----\n");
4453ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
4454ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q15, q8, d7[1]", q15, q8, i32, 140, d4, i32, -120);
4455ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
4456ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4457ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4458ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4459ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
4460ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4461ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4462ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4463ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLA (by scalar) ----\n");
4464ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
4465ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120);
4466ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
4467ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4468ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4469ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4470ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
4471ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4472ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4473ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4474ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLS (by scalar) ----\n");
4475ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120);
4476ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120);
4477ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120);
4478ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4479ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4480ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4481ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
4482ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4483ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4484ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4485ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMULL (by scalar) ----\n");
4486ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
4487ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
4488ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
4489ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4490ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4491ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4492ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
4493ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4494ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4495ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
4496ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
4497ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
4498ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4499ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4500ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4501ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
4502ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4503ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4504ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4505ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLAL (by scalar) ----\n");
4506ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
4507ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
4508ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
4509ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4510ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4511ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4512ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
4513ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4514ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4515ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
4516ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
4517ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
4518ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4519ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4520ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4521ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
4522ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4523ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4524ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4525ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLSL (by scalar) ----\n");
4526ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120);
4527ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120);
4528ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
4529ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4530ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4531ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4532ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
4533ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4534ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4535ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120);
4536ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120);
4537ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120);
4538ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4539ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
4540ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4541ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12);
4542ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4543ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
4544ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4545ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VRSHR ----\n");
4546ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s8 q0, q1, #0", q0, q1, i32, -1);
4547ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s8 q0, q1, #1", q0, q1, i32, -1);
4548ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s16 q3, q4, #2", q3, q4, i32, -0x7c);
4549ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s32 q2, q5, #31", q2, q5, i32, -1);
4550ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s8 q6, q7, #7", q6, q7, i32, 0xffff);
4551ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s16 q8, q9, #12", q8, q9, i32, -10);
4552ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s32 q10, q11, #5", q10, q11, i32, 10234);
4553ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.u8 q12, q13, #1", q12, q13, i32, -1);
4554ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.u16 q14, q15, #11", q14, q15, i32, -1);
4555ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.u32 q10, q11, #9", q10, q11, i32, 1000);
4556ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.u8 q7, q13, #7", q7, q13, i32, -1);
4557ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
4558ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
4559ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.u64 q0, q1, #42", q0, q1, i32, -1);
4560ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s64 q6, q7, #12", q6, q7, i32, 0xfac);
4561ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.u64 q8, q4, #9", q8, q4, i32, 13560);
4562ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrshr.s64 q9, q12, #11", q9, q12, i32, 98710);
4563ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4564ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VRSRA ----\n");
4565ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.s8 q0, q1, #1", q0, q1, i32, -1);
4566ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.s16 q3, q4, #2", q3, q4, i32, -0x7c);
4567ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.s32 q2, q5, #31", q2, q5, i32, -1);
4568ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.s8 q6, q7, #7", q6, q7, i32, 0xffff);
4569ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.s16 q8, q9, #12", q8, q9, i32, -10);
4570ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.s32 q10, q11, #5", q10, q11, i32, 10234);
4571ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.u8 q12, q13, #1", q12, q13, i32, -1);
4572ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.u16 q14, q15, #11", q14, q15, i32, -1);
4573ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.u32 q10, q11, #9", q10, q11, i32, 1000);
4574ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.u8 q7, q13, #7", q7, q13, i32, -1);
4575ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
4576ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
4577ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.u64 q0, q1, #42", q0, q1, i32, -1);
4578ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.s64 q6, q7, #12", q6, q7, i32, 0xfac);
4579ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.u64 q8, q4, #9", q8, q4, i32, 13560);
4580ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsra.s64 q9, q12, #11", q9, q12, i32, 98710);
4581ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4582ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSHR ----\n");
4583ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s8 q0, q1, #0", q0, q1, i32, -1);
4584ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s8 q0, q1, #1", q0, q1, i32, -1);
4585ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s16 q3, q4, #2", q3, q4, i32, -0x7c);
4586ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s32 q2, q5, #31", q2, q5, i32, -1);
4587ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s8 q6, q7, #7", q6, q7, i32, 0xffff);
4588ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s16 q8, q9, #12", q8, q9, i32, -10);
4589ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s32 q10, q11, #5", q10, q11, i32, 10234);
4590ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.u8 q12, q13, #1", q12, q13, i32, -1);
4591ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.u16 q14, q15, #11", q14, q15, i32, -1);
4592ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.u32 q10, q11, #9", q10, q11, i32, 1000);
4593ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.u8 q7, q13, #7", q7, q13, i32, -1);
4594ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
4595ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
4596ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.u64 q0, q1, #42", q0, q1, i32, -1);
4597ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s64 q6, q7, #12", q6, q7, i32, 0xfac);
4598ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.u64 q8, q4, #9", q8, q4, i32, 13560);
4599ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshr.s64 q9, q12, #11", q9, q12, i32, 98710);
4600ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4601ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSRA ----\n");
4602ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.s8 q0, q1, #1", q0, q1, i32, -1);
4603ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.s16 q3, q4, #2", q3, q4, i32, -0x7c);
4604ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.s32 q2, q5, #31", q2, q5, i32, -1);
4605ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.s8 q6, q7, #7", q6, q7, i32, 0xffff);
4606ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.s16 q8, q9, #12", q8, q9, i32, -10);
4607ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.s32 q10, q11, #5", q10, q11, i32, 10234);
4608ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.u8 q12, q13, #1", q12, q13, i32, -1);
4609ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.u16 q14, q15, #11", q14, q15, i32, -1);
4610ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.u32 q10, q11, #9", q10, q11, i32, 1000);
4611ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.u8 q7, q13, #7", q7, q13, i32, -1);
4612ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf);
4613ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0);
4614ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.u64 q0, q1, #42", q0, q1, i32, -1);
4615ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.s64 q6, q7, #12", q6, q7, i32, 0xfac);
4616ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.u64 q8, q4, #9", q8, q4, i32, 13560);
4617ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsra.s64 q9, q12, #11", q9, q12, i32, 98710);
4618ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4619ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSRI ----\n");
4620ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.16 q0, q1, #1", q0, q1, i32, -1);
4621ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.16 q3, q4, #2", q3, q4, i32, -0x7c);
4622ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.32 q2, q5, #31", q2, q5, i32, -1);
4623ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.8 q6, q7, #7", q6, q7, i32, 0xffff);
4624ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.16 q8, q9, #12", q8, q9, i32, -10);
4625ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.32 q10, q11, #5", q10, q11, i32, 10234);
4626ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.8 q12, q13, #1", q12, q13, i32, -1);
4627ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.16 q14, q15, #11", q14, q15, i32, -1);
4628ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.32 q10, q11, #9", q10, q11, i32, 1000);
4629ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.8 q7, q13, #7", q7, q13, i32, -1);
4630ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.16 q8, q1, #5", q8, q1, i32, 0xabcf);
4631ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.32 q12, q3, #15", q12, q3, i32, -0x1b0);
4632ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.64 q0, q1, #42", q0, q1, i32, -1);
4633ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.64 q6, q7, #12", q6, q7, i32, 0xfac);
4634ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.64 q8, q4, #9", q8, q4, i32, 13560);
4635ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsri.64 q9, q12, #11", q9, q12, i32, 98710);
4636ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4637ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMOVL ----\n");
4638ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i32, 0x42);
4639ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i32, 0x42);
4640ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i32, 0x42);
4641ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i32, 0x42);
4642ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i32, 0x42);
4643ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i32, 0x42);
4644ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i8, 0xed);
4645ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i8, 0xed);
4646ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i8, 0xed);
4647ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i8, 0xed);
4648ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i8, 0xed);
4649ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i8, 0xed);
4650ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4651ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VABS ----\n");
4652ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0x73);
4653ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0x73);
4654ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0x73);
4655ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0xfe);
4656ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0xef);
4657ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0xde);
4658ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s32 q0, q1", q0, q1, i16, 0xfe0a);
4659ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s16 q15, q4", q15, q4, i16, 0xef0b);
4660ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.s8 q8, q7", q8, q7, i16, 0xde0c);
4661ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4662ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQABS ----\n");
4663ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0x73);
4664ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 1 << 31);
4665ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s16 q0, q1", q0, q1, i32, 1 << 31);
4666ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s8 q0, q1", q0, q1, i32, 1 << 31);
4667ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0x73);
4668ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0x73);
4669ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0xfe);
4670ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0xef);
4671ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0xde);
4672ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i16, 0xfe0a);
4673ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i16, 0xef0b);
4674ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i16, 0xde0c);
4675ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4676ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VADDW ----\n");
4677ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
4678ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12);
4679ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12);
4680ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
4681ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
4682ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
4683ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
4684ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2);
4685ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2);
4686ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
4687ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
4688ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
4689ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4690ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VADDL ----\n");
4691ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
4692ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12);
4693ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12);
4694ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
4695ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
4696ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
4697ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
4698ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2);
4699ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2);
4700ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
4701ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
4702ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
4703ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
4704ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12);
4705ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12);
4706ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
4707ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
4708ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
4709ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
4710ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2);
4711ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2);
4712ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
4713ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
4714ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
4715ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4716ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSUBW ----\n");
4717ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
4718ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12);
4719ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12);
4720ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
4721ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
4722ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12);
4723ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
4724ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2);
4725ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2);
4726ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
4727ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
4728ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2);
4729ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4730ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSUBL ----\n");
4731ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
4732ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12);
4733ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12);
4734ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
4735ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
4736ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12);
4737ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
4738ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2);
4739ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2);
4740ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
4741ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
4742ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2);
4743ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
4744ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12);
4745ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12);
4746ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
4747ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
4748ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12);
4749ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
4750ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2);
4751ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2);
4752ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
4753ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
4754ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2);
4755ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4756ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCEQ #0 ----\n");
4757ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x21);
4758ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x21);
4759ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x21);
4760ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x0);
4761ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x0);
4762ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x0);
4763ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4764ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCGT #0 ----\n");
4765ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x21);
4766ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x21);
4767ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x21);
4768ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x0);
4769ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x0);
4770ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x0);
4771ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i8, 0xef);
4772ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i8, 0xed);
4773ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i8, 0xae);
4774ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4775ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCGE #0 ----\n");
4776ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x21);
4777ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x21);
4778ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x21);
4779ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x0);
4780ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x0);
4781ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x0);
4782ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i8, 0xef);
4783ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i8, 0xed);
4784ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i8, 0xae);
4785ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0xef);
4786ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0xed);
4787ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0xae);
4788ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4789ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCLE #0 ----\n");
4790ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x21);
4791ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x21);
4792ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x21);
4793ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x0);
4794ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x0);
4795ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x0);
4796ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i8, 0xef);
4797ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i8, 0xed);
4798ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i8, 0xae);
4799ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4800ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCLT #0 ----\n");
4801ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x21);
4802ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x21);
4803ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x21);
4804ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x0);
4805ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x0);
4806ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x0);
4807ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i8, 0xef);
4808ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i8, 0xed);
4809ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i8, 0xae);
4810ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0xef);
4811ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0xed);
4812ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0xae);
4813ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4814ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCNT ----\n");
4815ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcnt.8 q0, q1", q0, q1, i32, 0xac3d25eb);
4816ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcnt.8 q11, q14", q11, q14, i32, 0xac3d25eb);
4817ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcnt.8 q6, q2", q6, q2, i32, 0xad0eb);
4818ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4819ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCLS ----\n");
4820ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s8 q0, q1", q0, q1, i32, 0x21);
4821ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s8 q10, q15", q10, q15, i8, 0x82);
4822ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s16 q0, q1", q0, q1, i32, 0x21);
4823ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s16 q15, q10", q15, q10, i8, 0x82);
4824ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s32 q6, q1", q6, q1, i32, 0x21);
4825ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s32 q10, q5", q10, q5, i8, 0x82);
4826ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0xff);
4827ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0xff);
4828ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0xff);
4829ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0xffef);
4830ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0xffef);
4831ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0xffef);
4832ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0x00);
4833ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0x00);
4834ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0x00);
4835ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0x00ef);
4836ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0x00ef);
4837ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0x00ef);
4838ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4839ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCLZ ----\n");
4840ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i8 q0, q1", q0, q1, i32, 0x21);
4841ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i8 q10, q15", q10, q15, i8, 0x82);
4842ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i16 q0, q1", q0, q1, i32, 0x21);
4843ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i16 q15, q10", q15, q10, i8, 0x82);
4844ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i32 q6, q1", q6, q1, i32, 0x21);
4845ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i32 q10, q5", q10, q5, i8, 0x82);
4846ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0xff);
4847ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0xff);
4848ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0xff);
4849ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0xffef);
4850ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0xffef);
4851ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0xffef);
4852ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0x00);
4853ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0x00);
4854ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0x00);
4855ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0x00ef);
4856ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0x00ef);
4857ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0x00ef);
4858ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4859ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSLI ----\n");
4860ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.16 q0, q1, #1", q0, q1, i32, -1);
4861ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.16 q3, q4, #2", q3, q4, i32, -0x7c);
4862ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.32 q2, q5, #31", q2, q5, i32, -1);
4863ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.8 q6, q7, #7", q6, q7, i32, 0xffff);
4864ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.16 q8, q9, #12", q8, q9, i32, -10);
4865ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.32 q10, q11, #5", q10, q11, i32, 10234);
4866ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.8 q12, q13, #1", q12, q13, i32, -1);
4867ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.16 q14, q15, #11", q14, q15, i32, -1);
4868ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.32 q10, q11, #9", q10, q11, i32, 1000);
4869ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.8 q7, q13, #7", q7, q13, i32, -1);
4870ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.16 q8, q1, #1", q8, q1, i32, 0xabcf);
4871ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.32 q12, q3, #15", q12, q3, i32, -0x1b0);
4872ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.64 q0, q1, #42", q0, q1, i32, -1);
4873ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.64 q6, q7, #12", q6, q7, i32, 0xfac);
4874ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.64 q8, q4, #9", q8, q4, i32, 13560);
4875ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vsli.64 q9, q12, #11", q9, q12, i32, 98710);
4876ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4877ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VPADDL ----\n");
4878ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 24);
4879ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 140);
4880ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, 140);
4881ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, 140);
4882ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, (1 << 31) + 1);
4883ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, (1 << 31) + 1);
4884ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, (1 << 31) + 1);
4885ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.u32 q10, q11", q10, q11, i32, 24);
4886ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 24);
4887ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 140);
4888ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, 140);
4889ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, 140);
4890ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, (1 << 31) + 1);
4891ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, (1 << 31) + 1);
4892ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, (1 << 31) + 1);
4893ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpaddl.s32 q10, q11", q10, q11, i32, 24);
4894ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4895ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VPADAL ----\n");
4896ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 24);
4897ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 140);
4898ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, 140);
4899ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i8, 140);
4900ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i32, (1 << 31) + 1);
4901ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, (1 << 31) + 1);
4902ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, (1 << 31) + 1);
4903ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.u32 q10, q11", q10, q11, i32, 24);
4904ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 24);
4905ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 140);
4906ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, 140);
4907ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i8, 140);
4908ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i32, (1 << 31) + 1);
4909ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, (1 << 31) + 1);
4910ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, (1 << 31) + 1);
4911ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vpadal.s32 q10, q11", q10, q11, i32, 24);
4912ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4913ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VZIP ----\n");
4914ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vzip.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
4915ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vzip.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
4916ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vzip.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
4917ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vzip.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
4918ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vzip.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
4919ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vzip.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
4920ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4921ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VUZP ----\n");
4922ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vuzp.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
4923ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vuzp.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
4924ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vuzp.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
4925ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vuzp.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
4926ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vuzp.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
4927ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vuzp.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
4928ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4929ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VTRN ----\n");
4930ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vtrn.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34);
4931ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vtrn.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34);
4932ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vtrn.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34);
4933ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vtrn.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
4934ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vtrn.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
4935ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vtrn.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
4936ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4937ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSWP ----\n");
4938ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vswp q0, q1", q0, i8, 0x12, q1, i8, 0x34);
4939ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vswp q1, q0", q0, i8, 0x12, q1, i8, 0x34);
4940ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vswp q10, q11", q10, i8, 0x12, q11, i8, 0x34);
4941ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vswp q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
4942ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vswp q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d);
4943ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_dual("vswp q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d);
4944ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4945ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VDUP ----\n");
4946ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.8 q2, d2[0]", q2, d2, i32, 0xabc4657);
4947ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.8 q3, d3[2]", q3, d3, i32, 0x7a1b3);
4948ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.8 q1, d0[7]", q1, d0, i32, 0x713aaa);
4949ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.8 q0, d4[3]", q0, d4, i32, 0xaa713);
4950ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.8 q4, d28[4]", q4, d28, i32, 0x7b1c3);
4951ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.16 q7, d19[3]", q7, d19, i32, 0x713ffff);
4952ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.16 q15, d31[0]", q15, d31, i32, 0x7f00fa);
4953ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.16 q6, d2[0]", q6, d2, i32, 0xffabcde);
4954ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.16 q8, d22[3]", q8, d22, i32, 0x713);
4955ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.16 q9, d2[0]", q9, d2, i32, 0x713);
4956ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.32 q10, d17[1]", q10, d17, i32, 0x713);
4957ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.32 q15, d11[0]", q15, d11, i32, 0x3);
4958ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.32 q10, d29[1]", q10, d29, i32, 0xf00000aa);
4959ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.32 q12, d0[1]", q12, d0, i32, 0xf);
4960ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vdup.32 q13, d13[0]", q13, d13, i32, -1);
4961ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4962ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQDMULL ----\n");
4963ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
4964ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
4965ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
4966ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4967ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
4968ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
4969ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
4970ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4971ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
4972ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
4973ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
4974ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
4975ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
4976ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
4977ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4978ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQDMULL (by scalar) ----\n");
4979ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
4980ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
4981ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
4982ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4983ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
4984ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
4985ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
4986ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
4987ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
4988ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
4989ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
4990ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
4991ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
4992ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
4993ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
4994ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQDMLSL ----\n");
4995ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
4996ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
4997ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
4998ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
4999ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5000ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
5001ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
5002ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
5003ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5004ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
5005ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5006ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5007ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
5008ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5009ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5010ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQDMLSL (by scalar) ----\n");
5011ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
5012ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
5013ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
5014ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5015ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
5016ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
5017ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
5018ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
5019ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
5020ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
5021ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
5022ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
5023ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
5024ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
5025ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5026ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQDMLAL ----\n");
5027ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120);
5028ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
5029ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5030ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5031ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5032ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2);
5033ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
5034ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
5035ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5036ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
5037ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5038ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5039ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
5040ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5041ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5042ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQDMLAL (by scalar) ----\n");
5043ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120);
5044ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120);
5045ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120);
5046ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5047ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
5048ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
5049ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12);
5050ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
5051ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2);
5052ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120);
5053ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
5054ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31);
5055ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31);
5056ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30);
5057ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5058ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQDMULH ----\n");
5059ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
5060ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
5061ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
5062ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
5063ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
5064ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
5065ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
5066ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
5067ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
5068ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
5069ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
5070ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
5071ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31);
5072ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30);
5073ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5074ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQDMULH (by scalar) ----\n");
5075ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120);
5076ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120);
5077ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120);
5078ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5079ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5080ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
5081ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12);
5082ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
5083ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5084ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120);
5085ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31);
5086ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
5087ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31);
5088ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30);
5089ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5090ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSHL (immediate) ----\n");
5091ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i64 q0, q1, #1", q0, q1, i32, 24);
5092ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i64 q5, q2, #1", q5, q2, i32, (1 << 30));
5093ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i64 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
5094ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i64 q11, q2, #12", q11, q2, i32, -1);
5095ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i64 q15, q12, #63", q15, q12, i32, 5);
5096ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i64 q5, q12, #62", q5, q12, i32, (1 << 31) + 1);
5097ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i32 q0, q1, #1", q0, q1, i32, 24);
5098ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i32 q5, q2, #1", q5, q2, i32, (1 << 30));
5099ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i32 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
5100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i32 q11, q2, #12", q11, q2, i32, -1);
5101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i32 q15, q12, #20", q15, q12, i32, 5);
5102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i32 q5, q12, #30", q5, q12, i32, (1 << 31) + 1);
5103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i16 q0, q1, #1", q0, q1, i16, 24);
5104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i16 q5, q2, #1", q5, q2, i32, (1 << 30));
5105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i16 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
5106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i16 q11, q2, #12", q11, q2, i16, -1);
5107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i16 q15, q12, #3", q15, q12, i16, 5);
5108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i16 q5, q12, #14", q5, q12, i32, (1 << 31) + 1);
5109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i8 q0, q1, #1", q0, q1, i8, 24);
5110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i8 q5, q2, #1", q5, q2, i32, (1 << 30));
5111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i8 q9, q12, #2", q9, q12, i32, (1 << 31) + 2);
5112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i8 q11, q2, #7", q11, q2, i8, -1);
5113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i8 q15, q12, #3", q15, q12, i8, 5);
5114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshl.i8 q5, q12, #6", q5, q12, i32, (1 << 31) + 1);
5115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VNEG ----\n");
5117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0x73);
5118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0x73);
5119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0x73);
5120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0xfe);
5121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0xef);
5122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0xde);
5123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s32 q0, q1", q0, q1, i16, 0xfe0a);
5124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s16 q15, q4", q15, q4, i16, 0xef0b);
5125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.s8 q8, q7", q8, q7, i16, 0xde0c);
5126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQNEG ----\n");
5128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0x73);
5129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 1 << 31);
5130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s16 q0, q1", q0, q1, i32, 1 << 31);
5131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s8 q0, q1", q0, q1, i32, 1 << 31);
5132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0x73);
5133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0x73);
5134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0xfe);
5135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0xef);
5136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0xde);
5137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i16, 0xfe0a);
5138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i16, 0xef0b);
5139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i16, 0xde0c);
5140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VREV ----\n");
5142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrev64.8 q0, q1", q0, q1, i32, 0xaabbccdd);
5143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrev64.16 q10, q15", q10, q15, i32, 0xaabbccdd);
5144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrev64.32 q1, q14", q1, q14, i32, 0xaabbccdd);
5145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrev32.8 q0, q1", q0, q1, i32, 0xaabbccdd);
5146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrev32.16 q10, q15", q10, q15, i32, 0xaabbccdd);
5147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrev16.8 q0, q1", q0, q1, i32, 0xaabbccdd);
5148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSHLL ----\n");
5150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s32 q0, d1, #1", q0, d1, i32, 24);
5151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s32 q5, d2, #1", q5, d2, i32, (1 << 30));
5152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s32 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
5153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u32 q11, d2, #12", q11, d2, i32, -1);
5154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u32 q15, d12, #20", q15, d12, i32, 5);
5155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u32 q5, d22, #30", q5, d22, i32, (1 << 31) + 1);
5156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s16 q0, d1, #1", q0, d1, i16, 24);
5157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s16 q5, d2, #1", q5, d2, i32, (1 << 30));
5158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s16 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
5159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u16 q11, d2, #12", q11, d2, i16, -1);
5160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u16 q15, d22, #3", q15, d22, i16, 5);
5161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u16 q5, d12, #14", q5, d12, i32, (1 << 31) + 1);
5162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s8 q0, d1, #1", q0, d1, i8, 24);
5163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s8 q5, d2, #1", q5, d2, i32, (1 << 30));
5164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.s8 q9, d12, #2", q9, d12, i32, (1 << 31) + 2);
5165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u8 q11, d2, #7", q11, d2, i8, -1);
5166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u8 q15, d19, #3", q15, d19, i8, 5);
5167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.u8 q5, d12, #6", q5, d12, i32, (1 << 31) + 1);
5168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSHLL (max shift) ----\n");
5170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i32 q0, d1, #32", q0, d1, i32, 24);
5171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i32 q5, d2, #32", q5, d2, i32, (1 << 30));
5172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i32 q11, d2, #32", q11, d2, i32, -1);
5173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i32 q15, d12, #32", q15, d12, i32, 5);
5174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i16 q0, d1, #16", q0, d1, i16, 24);
5175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i16 q5, d2, #16", q5, d2, i32, (1 << 30));
5176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i16 q11, d2, #16", q11, d2, i16, -1);
5177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i16 q15, d22, #16", q15, d22, i16, 5);
5178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i8 q0, d1, #8", q0, d1, i8, 24);
5179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i8 q5, d2, #8", q5, d2, i32, (1 << 30));
5180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i8 q11, d2, #8", q11, d2, i8, -1);
5181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vshll.i8 q15, d19, #8", q15, d19, i8, 5);
5182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMULL ----\n");
5184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
5213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
5214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
5216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
5218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
5220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
5221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
5222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
5224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
5226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
5228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x1a4b0c, d12, i32, 0xd1e2f0);
5229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q4, d15, d26", q4, d15, i32, (1 << 14) - 0xabcd, d26, i32, (1 << 13) + 0xaa2);
5231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q14, d5, d6", q14, d5, i32, (1 << 28) + 0xefe, d6, i32, (1 << 13) + 0x2bbc2d);
5232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q10, d27, d31", q10, d27, i32, 1 << 31, d31, i32, 1 << 30);
5234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLAL ----\n");
5239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
5268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
5269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
5271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
5273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
5275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
5276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
5277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
5279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
5281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
5283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLSL ----\n");
5285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1);
5307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120);
5308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2);
5310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d);
5311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30);
5313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
5314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
5315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
5317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
5319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
5321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a);
5322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120);
5323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12);
5325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120);
5327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31);
5328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31);
5329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQRDMULH ----\n");
5331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120);
5332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120);
5333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120);
5334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2);
5335ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
5336ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2);
5337ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12);
5338ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2);
5339ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2);
5340ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120);
5341ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
5342ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
5343ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31);
5344ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31);
5345ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30);
5346ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5347ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VQRDMULH (by scalar) ----\n");
5348ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120);
5349ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120);
5350ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120);
5351ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2);
5352ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5353ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2);
5354ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12);
5355ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2);
5356ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2);
5357ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120);
5358ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31);
5359ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1);
5360ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31);
5361ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30);
5362ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5363ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VADD (fp) ----\n");
5364ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5365ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5366ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5367ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5368ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5369ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5370ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5371ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5372ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5373ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5374ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5375ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5376ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5377ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5378ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5379ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5380ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5381ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5382ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5383ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5384ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5385ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5386ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5387ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5388ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5389ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5390ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5391ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5392ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5393ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5394ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5395ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5396ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5397ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5398ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5399ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5400ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5401ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5402ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5403ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5404ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5405ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSUB (fp) ----\n");
5406ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5407ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5408ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5409ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5410ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5411ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(24.89), q5, i32, f2u(1346));
5412ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5413ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5414ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5415ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5416ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5417ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5418ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5419ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5420ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5421ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5422ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5423ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5424ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5425ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5426ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5427ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5428ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5429ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5430ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5431ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5432ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5433ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5434ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5435ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5436ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5437ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5438ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5439ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5440ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5441ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5442ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5443ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5444ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5445ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5446ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5447ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VABD (fp) ----\n");
5448ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5449ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5450ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5451ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5452ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5453ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5454ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5455ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5456ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5457ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5458ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5459ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5460ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5461ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5462ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5463ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5464ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5465ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5466ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5467ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5468ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5469ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5470ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5471ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5472ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5473ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5474ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5475ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5476ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5477ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5478ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5479ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5480ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5481ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5482ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5483ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5484ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5485ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5486ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5487ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5488ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5489ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMUL (fp) ----\n");
5490ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5491ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5492ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5493ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5494ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5495ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5496ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5497ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5498ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5499ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5500ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5501ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5502ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5503ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5504ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5505ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5506ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5507ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5508ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5509ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5510ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5511ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5512ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5513ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5514ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5515ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5516ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5517ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5518ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5519ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5520ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5521ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5522ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5523ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5524ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5525ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5526ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5527ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5528ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5529ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5530ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5531ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLA (fp) ----\n");
5532ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5533ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5534ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5535ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5536ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5537ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5538ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5539ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5540ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5541ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5542ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5543ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5544ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5545ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5546ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5547ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5548ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5549ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5550ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5551ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5552ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5553ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5554ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5555ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5556ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5557ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5558ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5559ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5560ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5561ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5562ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5563ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5564ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5565ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5566ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5567ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5568ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5569ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5570ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5571ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5572ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5573ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLA (fp by scalar) ----\n");
5574ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120));
5575ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120));
5576ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
5577ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
5578ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
5579ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19));
5580ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11));
5581ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN));
5582ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0));
5583ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0));
5584ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
5585ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
5586ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN));
5587ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0));
5588ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0));
5589ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
5590ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
5591ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
5592ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
5593ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
5594ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
5595ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
5596ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
5597ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
5598ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
5599ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
5600ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
5601ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5602ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLS (fp) ----\n");
5603ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5604ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5605ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5606ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5607ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5608ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5609ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5610ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5611ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5612ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5613ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5614ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5615ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5616ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5617ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5618ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5619ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5620ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5621ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5622ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5623ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5624ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5625ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5626ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5627ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5628ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5629ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5630ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5631ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5632ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5633ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5634ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5635ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5636ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5637ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5638ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5639ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5640ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5641ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5642ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5643ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5644ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLS (fp by scalar) ----\n");
5645ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120));
5646ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120));
5647ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2);
5648ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12);
5649ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2);
5650ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19));
5651ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11));
5652ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN));
5653ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0));
5654ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0));
5655ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY));
5656ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY));
5657ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN));
5658ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0));
5659ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0));
5660ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY));
5661ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY));
5662ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN));
5663ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0));
5664ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0));
5665ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY));
5666ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY));
5667ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN));
5668ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0));
5669ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0));
5670ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY));
5671ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY));
5672ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5673ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCVT (integer <-> fp) ----\n");
5674ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(3.2));
5675ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q10, q11", q10, q11, i32, f2u(3e22));
5676ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(3e9));
5677ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-0.5));
5678ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-7.1));
5679ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
5680ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
5681ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(3.2));
5682ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q10, q11", q10, q11, i32, f2u(3e22));
5683ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(3e9));
5684ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-0.5));
5685ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-7.1));
5686ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
5687ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
5688ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, 7);
5689ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q10, q11", q10, q11, i32, 1 << 31);
5690ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) + 1);
5691ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) - 1);
5692ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q0, q14", q0, q14, i32, 0x30a0bcef);
5693ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, 7);
5694ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q10, q11", q10, q11, i32, 1 << 31);
5695ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) + 1);
5696ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) - 1);
5697ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q0, q14", q0, q14, i32, 0x30a0bcef);
5698ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(NAN));
5699ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(0.0));
5700ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
5701ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
5702ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(NAN));
5703ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(0.0));
5704ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
5705ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
5706ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5707ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCVT (fixed <-> fp) ----\n");
5708ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(3.2));
5709ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22));
5710ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q15, q4, #32", q15, q4, i32, f2u(3e9));
5711ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q15, q4, #7", q15, q4, i32, f2u(-0.5));
5712ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q15, q4, #4", q15, q4, i32, f2u(-7.1));
5713ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
5714ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
5715ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1, #5", q0, q1, i32, f2u(3.2));
5716ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22));
5717ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q15, q4, #8", q15, q4, i32, f2u(3e9));
5718ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q15, q4, #2", q15, q4, i32, f2u(-0.5));
5719ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q15, q4, #1", q15, q4, i32, f2u(-7.1));
5720ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
5721ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
5722ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q0, q1, #5", q0, q1, i32, 7);
5723ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q10, q11, #9", q10, q11, i32, 1 << 31);
5724ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q0, q1, #4", q0, q1, i32, (1U << 31) + 1);
5725ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q0, q1, #6", q0, q1, i32, (1U << 31) - 1);
5726ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.u32 q0, q14, #5", q0, q14, i32, 0x30a0bcef);
5727ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q0, q1, #12", q0, q1, i32, 7);
5728ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q10, q11, #8", q10, q11, i32, 1 << 31);
5729ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q0, q1, #2", q0, q1, i32, (1U << 31) + 1);
5730ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q0, q1, #1", q0, q1, i32, (1U << 31) - 1);
5731ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.f32.s32 q0, q14, #6", q0, q14, i32, 0x30a0bcef);
5732ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN));
5733ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0));
5734ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY));
5735ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY));
5736ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN));
5737ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0));
5738ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY));
5739ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY));
5740ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5741ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMAX (fp) ----\n");
5742ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5743ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5744ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5745ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5746ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5747ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5748ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5749ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5750ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5751ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5752ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5753ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5754ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5755ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5756ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5757ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5758ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5759ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5760ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5761ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5762ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
5763ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
5764ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
5765ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
5766ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
5767ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
5768ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5769ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5770ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5771ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5772ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5773ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5774ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5775ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5776ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5777ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5778ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5779ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5780ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5781ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5782ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5783ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5784ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5785ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5786ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5787ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5788ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5789ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMIN (fp) ----\n");
5790ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5791ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5792ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5793ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5794ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5795ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5796ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5797ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5798ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5799ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5800ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5801ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5802ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5803ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5804ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5805ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5806ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5807ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5808ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5809ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5810ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
5811ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
5812ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
5813ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
5814ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
5815ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
5816ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5817ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5818ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5819ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5820ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5821ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5822ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5823ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5824ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5825ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5826ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5827ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5828ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5829ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5830ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5831ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5832ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5833ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5834ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5835ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5836ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5837ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VRECPE ----\n");
5838ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2));
5839ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22));
5840ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9));
5841ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-0.5));
5842ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-7.1));
5843ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
5844ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
5845ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2));
5846ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22));
5847ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9));
5848ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-0.5));
5849ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-7.1));
5850ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
5851ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
5852ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7);
5853ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31);
5854ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
5855ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
5856ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
5857ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7);
5858ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31);
5859ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
5860ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
5861ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
5862ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN));
5863ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0));
5864ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
5865ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
5866ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN));
5867ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0));
5868ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
5869ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
5870ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5871ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VRECPS ----\n");
5872ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5873ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5874ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5875ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5876ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5877ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5878ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5879ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5880ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5881ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5882ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5883ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5884ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5885ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5886ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5887ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5888ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5889ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5890ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5891ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5892ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5893ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5894ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5895ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5896ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5897ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5898ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5899ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5900ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5901ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5902ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5903ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5904ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5905ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5906ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5907ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5908ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5909ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5910ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5911ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5912ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5913ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VABS (fp) ----\n");
5914ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2));
5915ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22));
5916ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9));
5917ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5));
5918ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1));
5919ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
5920ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
5921ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2));
5922ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22));
5923ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9));
5924ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5));
5925ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1));
5926ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
5927ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
5928ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7);
5929ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31);
5930ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
5931ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
5932ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
5933ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7);
5934ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31);
5935ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
5936ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
5937ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
5938ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN));
5939ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0));
5940ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
5941ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
5942ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN));
5943ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0));
5944ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
5945ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
5946ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5947ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCGT (fp) ----\n");
5948ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
5949ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
5950ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
5951ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
5952ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
5953ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
5954ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
5955ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
5956ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
5957ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
5958ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
5959ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
5960ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
5961ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
5962ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
5963ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
5964ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
5965ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
5966ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
5967ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
5968ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
5969ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
5970ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
5971ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
5972ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
5973ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
5974ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
5975ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
5976ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
5977ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
5978ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
5979ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
5980ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
5981ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
5982ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
5983ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
5984ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
5985ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
5986ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
5987ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
5988ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
5989ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
5990ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
5991ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
5992ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
5993ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
5994ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
5995ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
5996ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
5997ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
5998ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCGE (fp) ----\n");
5999ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
6000ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
6001ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
6002ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
6003ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
6004ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
6005ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
6006ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
6007ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
6008ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
6009ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
6010ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
6011ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
6012ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
6013ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
6014ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
6015ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
6016ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
6017ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
6018ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
6019ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
6020ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
6021ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
6022ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
6023ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
6024ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
6025ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
6026ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
6027ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
6028ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
6029ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
6030ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
6031ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
6032ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
6033ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
6034ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
6035ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
6036ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
6037ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
6038ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
6039ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
6040ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
6041ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
6042ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
6043ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
6044ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
6045ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
6046ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
6047ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
6048ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6049ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VACGT (fp) ----\n");
6050ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
6051ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
6052ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
6053ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
6054ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
6055ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
6056ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
6057ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
6058ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
6059ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
6060ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
6061ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
6062ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
6063ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
6064ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
6065ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
6066ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
6067ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
6068ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
6069ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
6070ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
6071ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
6072ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
6073ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
6074ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
6075ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
6076ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
6077ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
6078ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
6079ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
6080ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
6081ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
6082ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
6083ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
6084ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
6085ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
6086ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
6087ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
6088ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
6089ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
6090ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
6091ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
6092ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
6093ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
6094ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
6095ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
6096ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
6097ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
6098ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
6099ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VACGE (fp) ----\n");
6101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
6102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
6103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
6104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
6105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
6106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
6107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
6108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
6109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
6110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
6111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
6112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
6113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
6114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
6115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
6116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
6117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
6118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
6119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
6120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
6121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
6122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
6123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
6124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
6125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
6126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
6127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
6128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
6129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
6130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
6131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
6132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
6133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
6134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
6135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
6136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
6137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
6138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
6139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
6140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
6141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
6142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
6143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
6144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
6145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
6146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
6147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
6148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
6149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
6150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCEQ (fp) ----\n");
6152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5));
6153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52));
6154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45));
6155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
6156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
6157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
6158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
6159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
6160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
6161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
6162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
6163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
6164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
6165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
6166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
6167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
6168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
6169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
6170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
6171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
6172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
6173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
6174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
6175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0));
6176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0));
6177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0));
6178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0));
6179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0));
6180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0));
6181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
6182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
6183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
6184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
6185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
6186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
6187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
6188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
6189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
6190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
6191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
6192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
6193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
6194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
6195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
6196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
6197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
6198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
6199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
6200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
6201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCEQ (fp) #0 ----\n");
6203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
6204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x1);
6205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
6206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
6207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
6208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q10, q15, #0", q10, q15, i32, 0x0);
6209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
6210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
6211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
6212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
6213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCGT (fp) #0 ----\n");
6215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
6216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x1);
6217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
6218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
6219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
6220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q10, q15, #0", q10, q15, i32, 0x0);
6221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
6222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
6223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
6224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
6225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCLT (fp) #0 ----\n");
6227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
6228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x1);
6229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
6230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
6231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
6232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q10, q15, #0", q10, q15, i32, 0x0);
6233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
6234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
6235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
6236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
6237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCGE (fp) #0 ----\n");
6239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
6240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x1);
6241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
6242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
6243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
6244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q10, q15, #0", q10, q15, i32, 0x0);
6245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
6246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
6247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
6248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
6249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCLE (fp) #0 ----\n");
6251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x01000000);
6252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x1);
6253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, 1 << 31);
6254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(23.04));
6255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04));
6256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q10, q15, #0", q10, q15, i32, 0x0);
6257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(NAN));
6258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(0.0));
6259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY));
6260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY));
6261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VNEG (fp) ----\n");
6263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x01000000);
6264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x1);
6265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, 1 << 31);
6266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(23.04));
6267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(-23.04));
6268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q10, q15", q10, q15, i32, 0x0);
6269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(NAN));
6270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(0.0));
6271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
6272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
6273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VRSQRTS ----\n");
6275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687));
6276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346));
6277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476));
6278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065));
6279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76));
6280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346));
6281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089));
6282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065));
6283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009));
6284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575));
6285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107));
6286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6));
6287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109));
6288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752));
6289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47));
6290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676));
6291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876));
6292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245));
6293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076));
6294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797));
6295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN));
6296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0));
6297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0));
6298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY));
6299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY));
6300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN));
6301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0));
6302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0));
6303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY));
6304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY));
6305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN));
6306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0));
6307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0));
6308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY));
6309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY));
6310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN));
6311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0));
6312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0));
6313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY));
6314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY));
6315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VRSQRTE (fp) ----\n");
6317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2));
6318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22));
6319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9));
6320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5));
6321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1));
6322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
6323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
6324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2));
6325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22));
6326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9));
6327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5));
6328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1));
6329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0));
6330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0));
6331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7);
6332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31);
6333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
6334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
6335ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
6336ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7);
6337ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31);
6338ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1);
6339ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1);
6340ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef);
6341ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(NAN));
6342ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(0.0));
6343ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(INFINITY));
6344ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(-INFINITY));
6345ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6346ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    return 0;
6347ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
6348