1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* Can be compiled both as ARM or Thumb using
3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown   gcc -Wall -g -O0 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -m{arm,thumb} -o vfp vfp.c
4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown*/
5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <stdio.h>
7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <string.h>
8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#include <math.h>
9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
10ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifndef __thumb__
11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// ARM
12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MOVE_to_FPSCR_from_R4 \
13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t"
14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MOVE_to_R4_from_FPSCR \
15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t"
16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif
17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifdef __thumb__
19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// Thumb
20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MOVE_to_FPSCR_from_R4 \
21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t"
22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define MOVE_to_R4_from_FPSCR \
23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t"
24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif
25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic inline unsigned int f2u(float x) {
27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    union {
28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        float f;
29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        unsigned int u;
30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    } cvt;
31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    cvt.f = x;
32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    return cvt.u;
33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic inline unsigned int f2u0(double x) {
36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    union {
37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        double f;
38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        unsigned int u[2];
39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    } cvt;
40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    cvt.f = x;
41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    return cvt.u[0];
42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic inline unsigned int f2u1(double x) {
45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    union {
46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        double f;
47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        unsigned int u[2];
48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    } cvt;
49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    cvt.f = x;
50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    return cvt.u[1];
51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* test macros to generate and output the result of a single instruction */
54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownconst unsigned int mem[] = {
56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d,
57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown};
61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vmovf32_imm(instruction, DD, imm) \
63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction ", #"#imm"\n\t"\
68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #DD "}\n\t" \
69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out) \
71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, "memory" \
72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s, #" #imm " :: Sd 0x%08x\n", \
74ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0]); \
75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vmov_core_single(instruction, RN, SD, SDval) \
78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf(#SD" 0x%08x\t",  SDval); \
82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", #0\n\t" \
84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.f32 " #SD ", %1\n\t" \
85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #RN ", [%0]\n\t" \
87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (SDval) \
89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #RN, "memory" \
90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: "#RN" 0x%08x\n", \
92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0]); \
93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
94ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
95ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vmov_single_core(instruction, SD, RN, RNval) \
96ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
97ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
98ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
99ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf(#RN" 0x%08x\t",  RNval); \
100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %1\n\t" \
102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", #0x40000000\n\t" \
103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t"\
104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD "}\n\t" \
105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (RNval) \
107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #RN, "memory" \
108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: "#SD" 0x%08x\n", \
110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0]); \
111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vmov_2core_2single(instruction, RD1, RD2, SN, SM, SNval, SMval) \
114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("\t\t\t "#SN" 0x%08x "#SM" 0x%08x\n",  SNval, SMval); \
118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SN ", %1\n\t" \
120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SM ", %2\n\t" \
121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RD1 ", #0x4\n\t" \
122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RD2 ", #0x4\n\t" \
123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t"\
124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #RD1 ", [%0]\n\t" \
125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #RD2 ", [%0, #+4]\n\t" \
126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (SNval), "r" (SMval) \
128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #RD1, #RD2, #SN, #SM, "memory" \
129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: "#RD1" 0x%08x "#RD2" 0x%08x\n", \
131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], out[1]); \
132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vmov_2single_2core(instruction, SD1, SD2, RN, RM, RNval, RMval) \
135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("\t\t\t "#RN" 0x%08x "#RM" 0x%08x\n",  RNval, RMval); \
139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %1\n\t" \
141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RM ", %2\n\t" \
142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD1 ", #0x40000000\n\t" \
143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD2 ", #0x40000000\n\t" \
144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t"\
145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD1 ", " #SD2 " }\n\t" \
146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (RNval), "r" (RMval) \
148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD1, #SD2, #RN, #RM, "memory" \
149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: "#SD1" 0x%08x "#SD2" 0x%08x\n", \
151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], out[1]); \
152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vmov_double_2core(instruction, DD, RN, RM, RNval, RMval) \
155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf(#RN" 0x%08x "#RM" 0x%08x\t",  RNval, RMval); \
159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %1\n\t" \
161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RM ", %2\n\t" \
162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #DD ", #0x55\n\t" \
163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t"\
164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #DD "}\n\t" \
165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (RNval), "r" (RMval) \
167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #RN, #RM, "memory" \
168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: "#DD" 0x%08x 0x%08x\n", \
170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], out[1]); \
171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vmov_2core_double(instruction, RD1, RD2, DN, DNval0, DNval1) \
174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf(#DN" 0x%08x 0x%08x\t",  DNval0, DNval1); \
178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RD1 ", #55\n\t" \
180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RD2 ", #55\n\t" \
181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DN ", %1, %2\n\t" \
182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #RD1 ", [%0]\n\t" \
184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #RD2 ", [%0, #+4]\n\t" \
185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (DNval0), "r" (DNval1) \
187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DN, #RD1, #RD2, "memory" \
188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: "#RD1" 0x%08x "#RD2" 0x%08x\n", \
190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], out[1]); \
191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_un_f64(instruction, DD, DM, DMtype, DMval0, DMval1) \
194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #DD ", #0x55" "\n\t" \
199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DM ", %1, %2 \n\t" \
200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #DD "}\n\t" \
202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (DMval0), "r" (DMval1) \
204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #DM, "memory" \
205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Dd 0x%08x 0x%08x  Dm (" #DMtype ")0x%08x %08x\n", \
207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], DMval1, DMval0); \
208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_un_f32(instruction, SD, SM, SMtype, SMval) \
211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.f32 " #SM ", %1\n\t" \
216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.f32 " #SD ", %2\n\t" \
217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD "}\n\t" \
219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (SMval), "r" (0xffffaaaa) \
221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #SM, "memory" \
222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Sd 0x%08x Sm (" #SMtype ")0x%08x\n", \
224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], SMval); \
225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_un_cvt_ds(instruction, DD, SM, SMval) \
228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SM ", %1\n\t" \
233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DD ", %2, %2\n\t" \
234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #DD "}\n\t" \
236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (SMval), "r" (0xffffaaaa) \
238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #SM, "memory" \
239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Dd 0x%08x 0x%08x  Sm 0x%08x\n", \
241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], SMval); \
242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_un_cvt_sd(instruction, SD, DM, DMval0, DMval1) \
245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", %3\n\t" \
250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DM ", %1, %2\n\t" \
251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD "}\n\t" \
253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (DMval0), "r" (DMval1), "r" (0xffffaaaa) \
255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #DM, "memory" \
256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Sd 0x%08x  Dm 0x%08x %08x\n", \
258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], DMval1, DMval0); \
259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_cvt_i32_f64(instruction, SD, DM, DMval0, DMval1) \
262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DM ", %1, %2\n\t" \
267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", %3\n\t" \
268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD "}\n\t" \
270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (DMval0), "r" (DMval1), "r" (0xffffaaaa) \
272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #DM, "memory" \
273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("%s :: Sd 0x%08x Dm 0x%08x %08x\n", \
275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], DMval1, DMval0); \
276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_cvt_f64_i32(instruction, DD, SM, SMval) \
279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SM ", %1\n\t" \
284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DD ", %2, %2\n\t" \
285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #DD "}\n\t" \
287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (SMval), "r" (0xfffffff0) \
289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #SM, "memory" \
290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown printf("%s :: Dd 0x%08x %08x Sm 0x%08x\n", \
292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], out[1], SMval); \
293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_un_f64_q_vmrs(instruction, DD, DM, DMtype, DMval, RN) \
296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int fpscr; \
299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #DD ", #0x55" "\n\t" \
302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, #0\n\t" \
303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0xEEE14A10 @ vmsr FPSCR, "#RN"\n\t" \
304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #DMtype " " #DM ", %2\n\t" \
305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %1, {" #DD "}\n\t" \
307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ".word 0xEEF14A10 @ vmrs "#RN", FPSCR\n\t" \
308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov %0, r4" \
309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "=r" (fpscr) \
310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (DMval) \
311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #DM, "memory", #RN \
312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Dd 0x%08x 0x%08x  Dm (" #DMtype ")0x%08x  fpscr %08x\n", \
314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], DMval, fpscr); \
315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_core_to_scalar(instruction, DD, DM, DMval) \
318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #DD ", #0x55" "\n\t" \
323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #DM ", %1\n\t" \
324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #DD "}\n\t" \
326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (DMval) \
328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #DM, "memory" \
329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Dd 0x%08x 0x%08x  Dm 0x%08x\n", \
331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], DMval); \
332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vldr_f64(instruction, DD, RN, RNval, imm) \
335ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
336ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
337ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
338ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
339ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #DD ", #0x55" "\n\t" \
340ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %1\n\t" \
341ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
342ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #DD "}\n\t" \
343ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
344ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (RNval) \
345ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #RN, "memory" \
346ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
347ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Dd 0x%08x 0x%08x  *(int*) (Rn + shift) 0x%04x\n", \
348ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], *(int*) (RNval + imm)); \
349ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
350ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
351ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vldr_f32(instruction, SD, RN, RNval, imm) \
352ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
353ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
354ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
355ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
356ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", %3" "\n\t" \
357ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %1\n\t" \
358ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
359ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD "}\n\t" \
360ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
361ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (RNval), "r" (imm), "r" (0xffffffaa) \
362ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #RN, "memory" \
363ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
364ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Sd 0x%08x  *(int*) (Rn + shift) 0x%04x\n", \
365ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], *(int*) (RNval + imm)); \
366ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
367ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
368ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vstr64(instruction, DD, DDval, RM, RMval, imm) \
369ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
370ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
371ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
372ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
373ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #DD ", #" #DDval "\n\t" \
374ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "add %1, %1, #" #imm "\n\t" \
375ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RM ", #0x55\n\t" \
376ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #RM ", [%1]\n\t" \
377ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #RM ", [%1, #4]\n\t" \
378ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "sub %1, %1, #" #imm "\n\t" \
379ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RM ", %1\n\t" \
380ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
381ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #DD "}\n\t" \
382ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
383ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (RMval) \
384ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #RM, "memory" \
385ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
386ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Dd 0x%08x 0x%08x  *(int*) (Rm + shift) 0x%04x\n", \
387ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], *(int*) (RMval + imm)); \
388ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
389ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
390ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vstr32(instruction, SD, RM, RMval, imm) \
391ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
392ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
393ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
394ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
395ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", #0xbe280000\n\t" \
396ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RM ", #0x55\n\t" \
397ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #RM ", [%1, #" #imm "]\n\t" \
398ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RM ", %1\n\t" \
399ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
400ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD "}\n\t" \
401ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
402ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (RMval) \
403ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #RM, "memory" \
404ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
405ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Sd 0x%08x,  *(int*) (Rm + shift) 0x%04x\n", \
406ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], *(int*) (RMval + imm)); \
407ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
408ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
409ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \
410ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
411ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
412ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
413ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
414ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #QD ", #0x55" "\n\t" \
415ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %1\n\t" \
416ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
417ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str " #QD ", [%0]\n\t" \
418ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
419ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval) \
420ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, "memory" \
421ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
422ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Rd 0x%08x  Qm (" #QMtype ")0x%08x\n", \
423ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], QMval); \
424ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
425ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
426ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \
427ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
428ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[8]; \
429ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
430ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
431ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD1 ", #0x55" "\n\t" \
432ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD2 ", #0x55" "\n\t" \
433ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD3 ", #0x55" "\n\t" \
434ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD4 ", #0x55" "\n\t" \
435ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction ", [%1]\n\t" \
436ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, %0\n\t" \
437ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {" #QD1 "}\n\t" \
438ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {" #QD2 "}\n\t" \
439ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {" #QD3 "}\n\t" \
440ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {" #QD4 "}\n\t" \
441ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov %0, r4\n\t" \
442ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
443ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (mem) \
444ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
445ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
446ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
447ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown          "0x%08x 0x%08x 0x%08x 0x%08x\n", \
448ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], out[1], out[2], out[3], out[4],\
449ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown          out[5], out[6], out[7]); \
450ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
451ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
452ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VSTMIAnoWB(instruction, RN, QD, QDval) \
453ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
454ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
455ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
456ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
457ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", " #QDval "\n\t" \
458ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %0\n\t" \
459ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
460ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
461ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (mem) \
462ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, "memory", #RN \
463ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
464ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Result 0x%08x 0x%08x\n", \
465ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], out[1]); \
466ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
467ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
468ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VSTMIAnoWB32(instruction, RN, SD, SDval) \
469ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
470ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
471ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
472ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
473ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", %2\n\t" \
474ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %0\n\t" \
475ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
476ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
477ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (mem), "r" (SDval) \
478ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, "memory", #RN \
479ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
480ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Result 0x%08x\n", \
481ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0]); \
482ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
483ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
484ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VSTMIAWB(RN, QD1, QD2) \
485ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
486ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
487ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
488ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
489ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD1 ", #0xa0" "\n\t"  \
490ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD2 ", #0xb1" "\n\t" \
491ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %0\n\t" \
492ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN "!, {" #QD1 "}\n\t" \
493ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN "!, {" #QD2 "}\n\t" \
494ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
495ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (mem) \
496ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD1, #QD2, "memory", #RN \
497ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
498ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("vstmia "#RN"!, "#QD1"; vstmia "#RN"!, "#QD2" :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
499ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         out[0], out[1], out[2], out[3]); \
500ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
501ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
502ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VSTMIAWB32(RN, SD1, SD2) \
503ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
504ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
505ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
506ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
507ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD1 ", #0xbff80000" "\n\t" \
508ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD2 ", #0x3fa80000" "\n\t" \
509ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %0\n\t" \
510ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN "!, {" #SD1 "}\n\t" \
511ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN "!, {" #SD2 "}\n\t" \
512ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
513ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (mem) \
514ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD1, #SD2, "memory", #RN \
515ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
516ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("vstmia " #RN "!, "#SD1"; vstmia "#RN"!, "#SD2" :: Result 0x%08x 0x%08x\n", \
517ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         out[0], out[1]); \
518ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
519ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
520ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VSTMDB(RN, QD1, QD2) \
521ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
522ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    unsigned int out[4]; \
523ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    long endout = (long) out + 8; \
524ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
525ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
526ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD1 ", #0xaa" "\n\t" \
527ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD2 ", #0xbb" "\n\t" \
528ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %0\n\t" \
529ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmdb " #RN "!, {" #QD1 "}\n\t" \
530ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmdb " #RN "!, {" #QD2 "}\n\t" \
531ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov %0, " #RN "\n\t" \
532ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
533ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (endout), "r" (mem) \
534ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD1, #QD2, "memory", #RN \
535ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
536ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("vstmdb " #RN "!, " #QD2 "; vstmdb " #RN "!, " #QD2 \
537ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         " :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
538ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         out[0], out[1], out[2], out[3]); \
539ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
540ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
541ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VLDMIAnoWB(instruction, RN, QD) \
542ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
543ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int in[2] = {0xaa0, 0xbb1}; \
544ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
545ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
546ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
547ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", #0x55" "\n\t" \
548ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %0\n\t" \
549ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
550ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %1\n\t" \
551ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN ", {" #QD "}\n\t" \
552ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
553ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (in), "r" (out), "r" (mem) \
554ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, "memory", #RN \
555ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
556ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
557ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         instruction, out[0], out[1], out[2], out[3]); \
558ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
559ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
560ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VLDMIAWB(RN, QD1, QD2) \
561ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
562ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int in[4] = {0xaa0, 0xbb1, 0xcc2, 0xdd3}; \
563ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[4]; \
564ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
565ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
566ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD1 ", #0x55" "\n\t" \
567ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD2 ", #0x55" "\n\t" \
568ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %0\n\t" \
569ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vldmia " #RN "!, {" #QD1 "}\n\t" \
570ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vldmia " #RN "!, {" #QD2 "}\n\t" \
571ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %1\n\t" \
572ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN "!, {" #QD1 "}\n\t" \
573ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN "!, {" #QD2 "}\n\t" \
574ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
575ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (in), "r" (out), "r" (mem) \
576ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD1, #QD2, "memory", #RN \
577ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
578ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
579ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         out[0], out[1], out[2], out[3]); \
580ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
581ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
582ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VLDMDB(RN, QD1, QD2) \
583ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
584ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    unsigned int in[4] = {0xaa0, 0xbb1, 0xcc2, 0xdd3}; \
585ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    unsigned int out[4]; \
586ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    long endin = (long) in + 16; \
587ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
588ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
589ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD1 ", #0x55" "\n\t" \
590ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD2 ", #0x55" "\n\t" \
591ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %0\n\t" \
592ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vldmdb " #RN "!, {" #QD1 "}\n\t" \
593ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vldmdb " #RN "!, {" #QD2 "}\n\t" \
594ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #RN ", %1\n\t" \
595ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN "!, {" #QD1 "}\n\t" \
596ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia " #RN "!, {" #QD2 "}\n\t" \
597ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
598ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (endin), "r" (out), "r" (mem) \
599ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD1, #QD2, "memory", #RN \
600ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
601ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
602ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown         out[0], out[1], out[2], out[3]); \
603ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
604ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
605ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VLDR(instruction, dD, rN, rNval, offset) \
606ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
607ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
608ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
609ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
610ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #dD ", #0x55\n\t" \
611ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov " #rN ", %1\n\t" \
612ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction ", #" #offset "]\n\t" \
613ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #dD "}\n\t" \
614ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
615ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (rNval) \
616ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #dD, "memory" \
617ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
618ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf("%s :: dD 0x%08x 0x%08x  rN 0x%08x\n", \
619ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], rNval); \
620ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
621ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
622ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
623ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vpush_vpop_f32(S1, Sval1, S2, Sval2, S3, Sval3, S4, S5, S6) \
624ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
625ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[6]; \
626ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
627ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
628ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#S4", %4\n\t" \
629ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#S5", %4\n\t" \
630ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#S6", %4\n\t" \
631ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#S1", %1\n\t" \
632ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#S2", %2\n\t" \
633ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#S3", %3\n\t" \
634ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vpush {"#S1", "#S2"}\n\t" \
635ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vpush {"#S3"}\n\t" \
636ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vpop  {"#S4"}\n\t" \
637ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vpop  {"#S5", "#S6"}\n\t" \
638ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, %0\n\t" \
639ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#S1"}\n\t" \
640ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#S2"}\n\t" \
641ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#S3"}\n\t" \
642ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#S4"}\n\t" \
643ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#S5"}\n\t" \
644ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#S6"}\n\t" \
645ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov %0, r4\n\t" \
646ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
647ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (Sval1), "r" (Sval2), "r" (Sval3), "r" (0x55555555) \
648ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #S1, #S2, #S3, #S4, #S5, #S6, "r4", "memory" \
649ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
650ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf(#S1" 0x%08x "#S2" 0x%08x "#S3" 0x%08x "#S4" 0x%08x "\
651ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown             #S5" 0x%08x "#S6" 0x%08x\n", out[0], out[1],\
652ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown             out[2], out[3], out[4], out[5]); \
653ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
654ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
655ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_vpush_vpop_f64(D1, Dval10, Dval11, D2, Dval20, Dval21, D3, D4) \
656ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
657ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[8]; \
658ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
659ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
660ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#D3", %4, %4\n\t" \
661ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#D4", %4, %4\n\t" \
662ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#D1", %1, %2\n\t" \
663ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov "#D2", %3, %4\n\t" \
664ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vpush {"#D1", "#D2"}\n\t" \
665ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vpop  {"#D3", "#D4"}\n\t" \
666ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, %0\n\t" \
667ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#D1"}\n\t" \
668ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#D2"}\n\t" \
669ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#D3"}\n\t" \
670ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0!, {"#D4"}\n\t" \
671ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov %0, r4\n\t" \
672ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
673ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (Dval10), "r" (Dval11), "r" (Dval20), "r" (Dval21), "r" (0x55555555) \
674ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #D1, #D2, #D3, #D4, "r4", "memory" \
675ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
676ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      printf(#D1" 0x%08x %08x "#D2" 0x%08x %08x "#D3" 0x%08x %08x "#D4" 0x%08x %08x\n",\
677ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown                  out[0],out[1],    out[2],out[3],    out[4],out[5],    out[6],out[7]); \
678ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
679ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
680ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \
681ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
682ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[8]; \
683ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
684ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  memset(out, 0x55, 8 * (sizeof(unsigned int)));\
685ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
686ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, %1\n\t" \
687ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vldmia %1!, {" #QD1 "}\n\t" \
688ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vldmia %1!, {" #QD2 "}\n\t" \
689ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vldmia %1!, {" #QD3 "}\n\t" \
690ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vldmia %1!, {" #QD4 "}\n\t" \
691ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov %1, r4\n\t" \
692ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction ", [%0]\n\t" \
693ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
694ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (mem) \
695ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
696ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
697ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
698ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown          "0x%08x 0x%08x 0x%08x 0x%08x\n", \
699ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], out[1], out[2], out[3], out[4],\
700ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown          out[5], out[6], out[7]); \
701ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
702ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
703ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
704ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
705ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
706ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
707ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
708ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.i8 " #QD ", #0x55" "\n\t" \
709ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QMtype " " #QM ", %1\n\t" \
710ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup." #QNtype " " #QN ", %2\n\t" \
711ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
712ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #QD "}\n\t" \
713ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
714ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval), "r" (QNval) \
715ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, #QN, "memory" \
716ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
717ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
718ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Qn (" #QNtype ")0x%08x\n", \
719ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], QMval, QNval); \
720ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
721ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
722ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_bin_f64(instruction, QD, QM, QMtype, QMval0, QMval1, QN, QNtype, QNval0, QNval1) \
723ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
724ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[2]; \
725ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
726ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
727ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vdup.i32 " #QD ", %5\n\t" \
728ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #QM ", %1, %2 \n\t" \
729ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #QN ", %3, %4 \n\t" \
730ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
731ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #QD "}\n\t" \
732ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
733ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (QMval0), "r" (QMval1), "r" (QNval0), "r" (QNval1), "r"(0x3f800000) \
734ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #QD, #QM, #QN, "memory" \
735ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
736ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Qd 0x%08x 0x%08x  Qm 0x%08x %08x" \
737ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Qn 0x%08x %08x\n", \
738ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[1], out[0], QMval1, QMval0, QNval1, QNval0); \
739ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
740ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
741ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_bin_f32(instruction, SD, SM, SMtype, SMval, SN, SNtype, SNval) \
742ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
743ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
744ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
745ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
746ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.f32 " #SM ", %1\n\t" \
747ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.f32 " #SN ", %2\n\t" \
748ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov.f32 " #SD ", %3\n\t" \
749ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
750ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD "}\n\t" \
751ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
752ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (SMval), "r" (SNval), "r" (0xaaaaaaaa) \
753ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #SM, #SN, "memory" \
754ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
755ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: Sd 0x%08x Sm (" #SMtype ")0x%08x" \
756ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Sn (" #SNtype ")0x%08x\n", \
757ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0], SMval, SNval); \
758ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
759ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
760ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_cmp_f64(instruction, DD, DDval0, DDval1, DM, DMval0, DMval1) \
761ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
762ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
763ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
764ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
765ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DD ", %1, %2\n\t" \
766ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DM ", %3, %4\n\t" \
767ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, #0\n\t" \
768ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_FPSCR_from_R4 \
769ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
770ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_R4_from_FPSCR \
771ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str r4, [%0]\n\t" \
772ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
773ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (DDval0), "r" (DDval1),"r" (DMval0), "r" (DMval1) \
774ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, #DM, "r4", "memory" \
775ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
776ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: FPSCR 0x%08x  Dd 0x%08x %08x" \
777ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Dm 0x%08x %08x\n", \
778ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0] & 0xffffff60, DDval1, DDval0, DMval1, DMval0); \
779ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
780ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
781ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_cmp_f32(instruction, SD, SDval, SM, SMval) \
782ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
783ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
784ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
785ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
786ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", %1\n\t" \
787ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SM ", %2\n\t" \
788ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "mov r4, #0\n\t" \
789ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_FPSCR_from_R4 \
790ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction "\n\t" \
791ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_R4_from_FPSCR \
792ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str r4, [%0]\n\t" \
793ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
794ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (SDval),"r" (SMval) \
795ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, #SM, "r4", "memory" \
796ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
797ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: FPSCR 0x%01x  Sd 0x%08x" \
798ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "  Sm 0x%08x\n", \
799ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, (out[0] & 0xf0000000) >> 28, SDval, SMval); \
800ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
801ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
802ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_cmpz_f32(instruction, SD, SDval) \
803ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
804ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
805ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
806ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
807ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", %1\n\t" \
808ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction ", #0\n\t" \
809ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_R4_from_FPSCR \
810ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #SD ", r4\n\t" \
811ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vstmia %0, {" #SD "}\n\t" \
812ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
813ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (SDval)\
814ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #SD, "r4", "memory" \
815ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
816ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: FPSCR 0x%08x  Sd 0x%08x\n", \
817ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0] & 0xffffff60, SDval); \
818ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
819ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
820ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define TESTINSN_cmpz_f64(instruction, DD, DDval0, DDval1) \
821ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ \
822ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  unsigned int out[1]; \
823ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown\
824ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  __asm__ volatile( \
825ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "vmov " #DD ", %1, %2\n\t" \
826ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction ", #0\n\t" \
827ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      MOVE_to_R4_from_FPSCR \
828ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      "str r4, [%0]\n\t" \
829ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : \
830ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : "r" (out), "r" (DDval0), "r" (DDval1) \
831ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      : #DD, "r4", "memory" \
832ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      ); \
833ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown  printf("%s :: FPSCR 0x%08x  Dd 0x%08x %08x\n", \
834ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown      instruction, out[0] & 0xffffff60, DDval1, DDval0); \
835ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
836ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
837ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstatic void do_vldm_vstm_check(void)
838ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
839ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    int i;
840ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    const char *format = "\t0x%08x\n";
841ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    unsigned int data[] = {
842ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        0x1a1b1c1d, 0x2a2b2c2d, 0x3a3b3c3d, 0x4a4b4c4d,
843ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        0x5a5b5c5d, 0x6a6b6c6d, 0x7a7b7c7d, 0x8a8b8c8d,
844ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        0x9a9b9c9d, 0xaaabacad, 0xbabbbcbd, 0xcacbcccd,
845ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        0xdadbdcdd, 0xeaebeced, 0xfafbfcfd, 0x0a0b0c0d
846ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    };
847ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    unsigned int res;
848ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("do_vldm_vstm_check:\n");
849ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    __asm__ volatile(
850ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, %0\n\t"
851ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vldmia r1!, {s0, s1, s2, s3}\n\t"
852ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
853ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
854ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
855ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
856ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
857ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, s2\n\t"
858ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
859ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
860ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
861ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, s3\n\t"
862ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
863ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
864ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
865ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, s0\n\t"
866ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
867ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
868ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
869ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #32\n\t"
870ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vldmdb r1!, {s5, s6}\n\t"
871ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
872ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
873ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
874ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
875ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
876ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, s5\n\t"
877ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
878ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
879ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
880ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, s6\n\t"
881ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
882ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
883ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
884ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #4\n\t"
885ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vldmia r1, {s0, s1, s2, s3}\n\t"
886ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
887ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
888ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
889ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
890ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
891ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, s2\n\t"
892ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
893ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
894ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
895ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, s3\n\t"
896ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
897ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
898ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
899ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, s0\n\t"
900ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
901ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
902ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
903ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #48\n\t"
904ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vldmia r1!, {d30, d31}\n\t"
905ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
906ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
907ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
908ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
909ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
910ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, r5, d30\n\t"
911ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
912ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
913ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
914ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, r5\n\t"
915ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
916ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
917ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
918ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, r5, d31\n\t"
919ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
920ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
921ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
922ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, r5\n\t"
923ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
924ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
925ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
926ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #44\n\t"
927ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vldmia r1, {d30, d31}\n\t"
928ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
929ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
930ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
931ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
932ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
933ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, r5, d30\n\t"
934ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
935ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
936ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
937ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, r5\n\t"
938ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
939ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
940ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
941ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, r5, d31\n\t"
942ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
943ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
944ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
945ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, r5\n\t"
946ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
947ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
948ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
949ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #40\n\t"
950ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vldmdb r1!, {d30, d31}\n\t"
951ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
952ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
953ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
954ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
955ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
956ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, r5, d30\n\t"
957ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
958ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
959ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
960ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, r5\n\t"
961ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
962ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
963ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
964ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov r1, r5, d31\n\t"
965ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
966ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
967ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
968ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, r5\n\t"
969ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
970ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
971ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
972ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x55\n\t"
973ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov s0, r0\n\t"
974ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x56\n\t"
975ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov s1, r0\n\t"
976ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x57\n\t"
977ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov s2, r0\n\t"
978ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x58\n\t"
979ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov s3, r0\n\t"
980ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #0\n\t"
981ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vstmia r1!, {s0, s1, s2, s3}\n\t"
982ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
983ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
984ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
985ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
986ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
987ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x65\n\t"
988ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov s16, r0\n\t"
989ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x66\n\t"
990ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov s17, r0\n\t"
991ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #16\n\t"
992ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vstmia r1, {s16, s17}\n\t"
993ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
994ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
995ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
996ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
997ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
998ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x75\n\t"
999ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov s16, r0\n\t"
1000ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x76\n\t"
1001ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov s17, r0\n\t"
1002ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #32\n\t"
1003ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vstmdb r1!, {s16, s17}\n\t"
1004ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
1005ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
1006ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
1007ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
1008ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
1009ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x42\n\t"
1010ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, #0x43\n\t"
1011ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov d30, r0, r1\n\t"
1012ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x40\n\t"
1013ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, #0x41\n\t"
1014ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov d31, r0, r1\n\t"
1015ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x57\n\t"
1016ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #32\n\t"
1017ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vstmia r1!, {d30, d31}\n\t"
1018ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
1019ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
1020ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
1021ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
1022ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
1023ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x32\n\t"
1024ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, #0x33\n\t"
1025ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov d10, r0, r1\n\t"
1026ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x57\n\t"
1027ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #48\n\t"
1028ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vstmia r1, {d10}\n\t"
1029ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
1030ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
1031ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
1032ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
1033ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* --- */
1034ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x22\n\t"
1035ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r1, #0x23\n\t"
1036ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vmov d10, r0, r1\n\t"
1037ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, #0x57\n\t"
1038ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "add r1, %0, #64\n\t"
1039ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "vstmdb r1!, {d10}\n\t"
1040ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r0, %1\n\t"
1041ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "sub r1, r1, %0\n\t"
1042ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "mov r3, r1\n\t"
1043ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown            "bl printf\n\t"
1044ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        :
1045ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        : "r" (data), "r" (format), "r"(&res)
1046ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        : "r0", "r1", "r2", "r3", "r5", "r12", "r14", "memory",
1047ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown          "s0", "s1", "s2", "s3", "s5", "s6", "s16", "s17",
1048ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown          "d10", "d30", "d31"
1049ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        );
1050ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("data:\n");
1051ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    for (i = 0; i < 16; i++) {
1052ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown        printf("\t0x%08x\n", data[i]);
1053ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    }
1054ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
1055ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1056ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownint main(int argc, char **argv)
1057ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{
1058ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    do_vldm_vstm_check();
1059ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1060ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMOV (ARM core register to scalar) ----\n");
1061ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.32 d0[0],  r5", d0,  r5, f2u(13));
1062ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.32 d1[1],  r6", d1,  r6, 0x12);
1063ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.32 d20[0], r5", d20, r5, f2u(NAN));
1064ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.32 d29[1], r6", d29, r6, f2u(172));
1065ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.32 d30[0], r5", d30, r5, f2u(INFINITY));
1066ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.32 d11[1], r6", d11, r6, f2u(-INFINITY));
1067ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.32 d18[0], r5", d11, r5, f2u(653));
1068ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.32 d9[1],  r6", d9,  r6, 12);
1069ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.16 d0[0],  r5", d0,  r5, 13);
1070ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.16 d14[1], r5", d14, r5, f2u(NAN));
1071ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.16 d28[2], r6", d28, r6, 14);
1072ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.16 d30[3], r1", d30, r1, 17);
1073ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.16 d0[0],  r5", d0,  r5, f2u(INFINITY));
1074ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.16 d7[1],  r5", d7,  r5, f2u(-INFINITY));
1075ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.16 d21[2], r6", d21, r6, 14);
1076ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.16 d17[3], r1", d17, r1, 17);
1077ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.8  d0[0],  r5", d0,  r5, 13);
1078ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.8  d10[1], r5", d10, r5, f2u(NAN));
1079ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.8  d20[2], r5", d20, r5, f2u(INFINITY));
1080ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.8  d30[3], r5", d30, r5, f2u(-INFINITY));
1081ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.8  d13[4], r5", d13, r5, 213);
1082ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.8  d17[5], r5", d17, r5, 1343);
1083ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.8  d24[6], r5", d24, r5, 111);
1084ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_core_to_scalar("vmov.8  d29[7], r5", d29, r5, 173);
1085ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1086ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMOV (scalar to ARM core register) ----\n");
1087ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.32   r5,  d0[0]",  r5,  d0,  i32, f2u(NAN));
1088ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.32   r6,  d5[1]",  r6,  d5,  i32, f2u(INFINITY));
1089ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.32   r4,  d10[0]", r4,  d10, i32, f2u(-INFINITY));
1090ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.32   r5,  d15[1]", r5,  d15, i32, 0x11223344);
1091ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.32   r9, d20[0]", r9, d20, i32, 0x11223344);
1092ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.32   r8,  d25[1]", r8,  d25, i32, 0x11223344);
1093ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.32   r0,  d30[0]", r0,  d30, i32, 0x11223344);
1094ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.32   r2,  d19[1]", r2,  d19, i32, 0x11223344);
1095ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u16  r5,  d31[0]", r5,  d31, i32, f2u(NAN));
1096ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u16  r3,  d30[1]", r3,  d30, i32, f2u(INFINITY));
1097ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u16  r6,  d21[2]", r6,  d21, i32, f2u(-INFINITY));
1098ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u16  r9, d26[3]", r9, d26, i32, 0x11223344);
1099ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u16  r12, d11[0]", r12, d11, i32, 0x11223344);
1100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u16  r0,  d10[1]", r0,  d10, i32, 0x11223344);
1101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u16  r6,  d1[2]",  r6,  d1,  i32, 0x11223344);
1102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u16  r8,  d5[3]",  r8,  d5,  i32, 0x11223344);
1103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u8   r2,  d4[0]",  r2,  d4,  i32, f2u(NAN));
1104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u8   r6,  d14[1]", r6,  d14, i32, f2u(INFINITY));
1105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u8   r9, d24[2]", r9, d24, i32, f2u(-INFINITY));
1106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u8   r8,  d31[3]", r8,  d31, i32, 0x11223344);
1107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u8   r10, d29[4]", r10, d29, i32, 0x11223344);
1108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u8   r3,  d19[5]", r3,  d19, i32, 0x11223344);
1109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u8   r12, d12[6]", r12, d12, i32, 0x11223344);
1110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.u8   r10, d18[4]", r10, d18, i32, 0x11223344);
1111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s16  r5,  d31[0]", r5,  d31, i32, f2u(NAN));
1112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s16  r3,  d30[1]", r3,  d30, i32, f2u(INFINITY));
1113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s16  r6,  d21[2]", r6,  d21, i32, f2u(-INFINITY));
1114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s16  r9, d26[3]", r9, d26, i32, 0x11223344);
1115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s16  r4,  d11[0]", r4,  d11, i32, 0x11223344);
1116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s16  r0,  d10[1]", r0,  d10, i32, 0x11223344);
1117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s16  r6,  d1[2]",  r6,  d1,  i32, 0x11223344);
1118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s16  r8,  d5[3]",  r8,  d5,  i32, 0x11223344);
1119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s8   r2,  d4[0]",  r2,  d4,  i32, f2u(NAN));
1120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s8   r6,  d14[1]", r6,  d14, i32, f2u(INFINITY));
1121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s8   r9, d24[2]", r9, d24, i32, f2u(-INFINITY));
1122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s8   r8,  d31[3]", r8,  d31, i32, 0x11223344);
1123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s8   r6,  d29[4]", r6,  d29, i32, 0x11223344);
1124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s8   r3,  d19[5]", r3,  d19, i32, 0x11223344);
1125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s8   r12, d12[6]", r12, d12, i32, 0x11223344);
1126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_scalar_to_core("vmov.s8   r10, d18[7]", r10, d18, i32, 0x11223344);
1127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLA (fp) ----\n");
1129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
1130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
1131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
1132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
1133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
1134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmla.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
1154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
1155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
1156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
1157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
1158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
1172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmla.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VNMLA (fp) ----\n");
1179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
1180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
1181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
1182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
1183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
1184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmla.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
1204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
1205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
1206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
1207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
1208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752.));
1222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmla.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMLS (fp) ----\n");
1229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
1230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
1231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
1232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
1233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
1234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmls.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
1254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
1255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
1256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
1257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
1258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
1272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmls.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1278ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VNMLS (fp) ----\n");
1279ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
1280ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
1281ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
1282ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
1283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
1284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmls.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
1304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
1305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
1306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
1307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
1308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
1322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmls.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMUL (fp) ----\n");
1329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
1330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
1331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
1332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
1333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
1334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1335ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1336ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1337ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1338ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1339ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1340ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1341ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1342ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1343ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1344ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1345ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1346ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1347ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1348ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1349ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1350ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1351ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1352ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vmul.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1353ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
1354ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
1355ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
1356ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
1357ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
1358ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1359ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1360ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1361ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1362ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1363ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1364ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1365ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1366ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1367ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1368ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1369ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1370ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1371ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
1372ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1373ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1374ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1375ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1376ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vmul.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1377ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1378ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VNMUL (fp) ----\n");
1379ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
1380ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
1381ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
1382ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
1383ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
1384ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1385ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1386ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1387ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1388ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1389ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1390ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1391ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1392ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1393ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1394ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1395ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1396ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1397ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1398ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1399ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1400ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1401ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1402ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vnmul.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1403ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
1404ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
1405ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
1406ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
1407ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
1408ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1409ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1410ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1411ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1412ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1413ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1414ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1415ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1416ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1417ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1418ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1419ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1420ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1421ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
1422ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1423ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1424ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1425ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1426ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vnmul.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1427ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1428ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VADD (fp) ----\n");
1429ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
1430ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
1431ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
1432ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
1433ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
1434ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1435ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1436ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1437ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1438ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1439ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1440ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1441ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1442ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1443ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1444ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1445ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1446ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1447ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1448ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1449ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1450ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1451ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1452ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vadd.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1453ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
1454ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
1455ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
1456ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
1457ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
1458ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1459ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1460ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1461ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1462ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1463ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1464ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1465ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1466ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1467ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1468ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1469ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1470ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1471ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
1472ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1473ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1474ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1475ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1476ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vadd.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1477ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1478ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSUB (fp) ----\n");
1479ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
1480ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
1481ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
1482ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
1483ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
1484ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1485ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1486ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1487ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1488ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1489ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1490ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1491ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1492ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1493ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1494ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1495ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1496ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1497ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1498ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1499ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1500ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1501ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1502ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vsub.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1503ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
1504ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
1505ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
1506ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
1507ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
1508ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1509ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1510ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1511ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1512ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1513ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1514ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1515ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1516ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1517ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1518ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1519ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1520ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1521ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
1522ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1523ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1524ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1525ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1526ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vsub.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1527ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1528ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VDIV (fp) ----\n");
1529ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d20, d25, d22", d20, d25, i32, f2u0(23.04), f2u1(23.04), d22, i32, f2u0(-45.5687), f2u1(-45.5687));
1530ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
1531ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
1532ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
1533ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d30, d15, d2",  d30, d15, i32, f2u0(-45667.24), f2u1(-45667.24), d2, i32, f2u0(-248562.76), f2u1(-248562.76));
1534ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
1535ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
1536ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
1537ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d30, d11, d12", d30, d11, i32, f2u0(356047.56), f2u1(356047.56), d12, i32, f2u0(5867.009), f2u1(5867.009));
1538ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d27, d21, d6",  d27, d21, i32, f2u0(34.00046), f2u1(34.00046), d6, i32, f2u0(0.0024575), f2u1(0.0024575));
1539ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
1540ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
1541ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
1542ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
1543ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
1544ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d27, d21, d16", d27, d21, i32, f2u0(456.2489562), f2u1(456.2489562), d16, i32, f2u0(-7.2945676), f2u1(-7.2945676));
1545ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1546ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1547ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f64("vdiv.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
1548ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
1549ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
1550ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
1551ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
1552ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
1553ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
1554ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
1555ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
1556ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
1557ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
1558ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
1559ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
1560ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
1561ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
1562ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
1563ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
1564ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
1565ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
1566ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_bin_f32("vdiv.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
1567ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1568ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VABS ----\n");
1569ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
1570ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
1571ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
1572ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
1573ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
1574ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1575ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
1576ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
1577ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
1578ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vabs.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
1579ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
1580ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
1581ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
1582ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
1583ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
1584ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
1585ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
1586ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
1587ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
1588ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vabs.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
1589ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1590ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VNEG ----\n");
1591ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
1592ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
1593ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
1594ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
1595ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
1596ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1597ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
1598ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
1599ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
1600ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vneg.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
1601ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
1602ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
1603ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
1604ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
1605ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
1606ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
1607ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
1608ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
1609ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
1610ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vneg.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
1611ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1612ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VMOV (register) ----\n");
1613ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
1614ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
1615ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
1616ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
1617ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
1618ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1619ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
1620ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
1621ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
1622ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vmov.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
1623ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
1624ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
1625ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
1626ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
1627ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
1628ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
1629ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
1630ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
1631ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
1632ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vmov.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
1633ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1634ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSQRT ----\n");
1635ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
1636ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
1637ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
1638ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
1639ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
1640ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
1641ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
1642ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
1643ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
1644ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f64("vsqrt.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
1645ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
1646ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
1647ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
1648ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
1649ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
1650ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
1651ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
1652ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
1653ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
1654ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vsqrt.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
1655ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1656ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCVT (integer <-> fp) ----\n");
1657ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s0,  s1",  s0,  s1,  i32, f2u(3.2));
1658ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s10, s11", s10, s11, i32, f2u(3e22));
1659ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s15, s4",  s15, s4,  i32, f2u(3e9));
1660ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s25, s24", s25, s24, i32, f2u(-0.5));
1661ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s19, s21", s19, s21, i32, f2u(-7.1));
1662ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s12, s8",  s12, s8,  i32, f2u(8.0 - 1.0/1024.0));
1663ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s12, s18", s12, s18, i32, f2u(-8.0 + 1.0/1024.0));
1664ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s30, s1",  s30, s1, i32, f2u(0.0));
1665ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s11, s1",  s11, s1, i32, f2u(INFINITY));
1666ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s21, s12", s21, s12, i32, f2u(-INFINITY));
1667ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s20, s11", s20, s11, i32, f2u(NAN));
1668ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s29, s13", s29, s13, i32, f2u(NAN));
1669ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s9,  s19", s9,  s19, i32, f2u(0.0));
1670ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s0,  s17", s0,  s17, i32, f2u(INFINITY));
1671ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s0,  s1",  s0,  s1, i32, f2u(-INFINITY));
1672ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s30, s11", s30, s11, i32, f2u(3.2));
1673ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s20, s21", s20, s21, i32, f2u(3e22));
1674ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s15, s14", s15, s14, i32, f2u(3e9));
1675ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s15, s24", s15, s24, i32, f2u(-0.5));
1676ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s15, s29", s15, s29, i32, f2u(-7.1));
1677ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s12, s31", s12, s31, i32, f2u(8.0 - 1.0/1024.0));
1678ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s1,  s8",  s1,  s8, i32, f2u(-8.0 + 1.0/1024.0));
1679ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1680ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s30, s1",  s30, s1, i32, f2u(7));
1681ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s10, s17", s10, s17, i32, f2u(1 << 31));
1682ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s20, s1",  s20, s1, i32, f2u((1U << 31) + 1));
1683ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s24, s26", s24, s26, i32, f2u((1U << 31) - 1));
1684ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s0,  s14", s0,  s14, i32, f2u(0x30a0bcef));
1685ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s11, s1",  s11, s1, i32, f2u(INFINITY));
1686ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s21, s12", s21, s12, i32, f2u(-INFINITY));
1687ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s29, s13", s29, s13, i32, f2u(NAN));
1688ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s0,  s1",  s0,  s1, i32, f2u(7));
1689ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s30, s31", s30, s31, i32, f2u(1 << 31));
1690ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s0,  s12", s0,  s12, i32, f2u((1U << 31) + 1));
1691ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s10, s16", s10, s16, i32, f2u((1U << 31) - 1));
1692ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s1,  s8",  s1,  s8, i32, f2u(-8.0 + 1.0/1024.0));
1693ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s29, s13", s29, s13, i32, f2u(NAN));
1694ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s9,  s19", s9,  s19, i32, f2u(0.0));
1695ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s0,  s17", s0,  s17, i32, f2u(INFINITY));
1696ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s0,  s1",  s0,  s1, i32, f2u(-INFINITY));
1697ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1698ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
1699ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s13, d26", s13, d26, f2u0(234.54), f2u1(234.54));
1700ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s29, d30", s29, d30, f2u0(46245.345), f2u1(46245.345));
1701ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s30, d21", s30, d21, f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0));
1702ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s11, d8",  s11, d8,  f2u0(INFINITY), f2u1(INFINITY));
1703ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s8,  d12", s8,  d12, f2u0(-INFINITY), f2u1(-INFINITY));
1704ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s19, d7",  s19, d7,  f2u0(NAN), f2u1(NAN));
1705ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s16, d16", s16, d16, f2u0(76.67), f2u1(76.67));
1706ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
1707ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s13, d26", s13, d26, f2u0(234.54), f2u1(234.54));
1708ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s29, d30", s29, d30, f2u0(46245.345), f2u1(46245.345));
1709ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s30, d21", s30, d21, f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0));
1710ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s11, d8",  s11, d8,  f2u0(INFINITY), f2u1(INFINITY));
1711ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s8,  d12", s8,  d12, f2u0(-INFINITY), f2u1(-INFINITY));
1712ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s19, d7",  s19, d7,  f2u0(NAN), f2u1(NAN));
1713ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s16, d16", s16, d16, f2u0(76.67), f2u1(76.67));
1714ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1715ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d0,  s1",  d0,  s1,  f2u(3.2));
1716ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d30, s21", d30, s21, f2u(-656.42));
1717ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d16, s12", d16, s12, f2u(870.024));
1718ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d29, s7",  d29, s7,  f2u(-2543.4506));
1719ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d12, s28", d12, s28, f2u(5.00003245));
1720ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d7,  s5",  d7,  s5,  f2u(-INFINITY));
1721ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d21, s20", d21, s20, f2u(INFINITY));
1722ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d11, s11", d11, s11, f2u(NAN));
1723ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d0,  s1",  d0,  s1,  f2u(3.2));
1724ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d30, s21", d30, s21, f2u(-656.42));
1725ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d16, s12", d16, s12, f2u(870.024));
1726ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d29, s7",  d29, s7,  f2u(-2543.4506));
1727ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d12, s28", d12, s28, f2u(5.00003245));
1728ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d7,  s5",  d7,  s5,  f2u(-INFINITY));
1729ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d21, s20", d21, s20, f2u(INFINITY));
1730ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d11, s11", d11, s11, f2u(NAN));
1731ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1732ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*    printf("---- VCVT (fixed <-> fp) ----\n");
1733ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s0,  s0,  #3",  s0,  s0, i32, f2u(3.2));
1734ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s11, s11, #1",  s11, s11, i32, f2u(3e22));
1735ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s15, s15, #32", s15, s15, i32, f2u(3e9));
1736ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s4,  s4,  #7",  s4,  s4, i32, f2u(-0.5));
1737ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s6,  s6,  #4",  s6,  s6, i32, f2u(-7.1));
1738ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s12, s12, #3",  s12, s12, i32, f2u(8.0 - 1.0/1024.0));
1739ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s8,  s8,  #3",  s8,  s8, i32, f2u(-8.0 + 1.0/1024.0));
1740ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s30, s30, #3",  s30, s30, i32, f2u(NAN));
1741ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s20, s20, #3",  s20, s20, i32, f2u(0.0));
1742ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s13, s13, #6",  s13, s13, i32, f2u(INFINITY));
1743ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.u32.f32 s16, s16, #3",  s16, s16, i32, f2u(-INFINITY));
1744ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s1,  s1,  #5",  s1,  s1, i32, f2u(3.2));
1745ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s21, s21, #1",  s21, s21, i32, f2u(3e22));
1746ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s17, s17, #8",  s17, s17, i32, f2u(3e9));
1747ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s27, s27, #2",  s27, s27, i32, f2u(-0.5));
1748ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s15, s15, #1",  s15, s15, i32, f2u(-7.1));
1749ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s8,  s8,  #2",  s8,  s8, i32, f2u(8.0 - 1.0/1024.0));
1750ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s31, s31, #2",  s31, s31, i32, f2u(-8.0 + 1.0/1024.0));
1751ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s10, s10, #3",  s10, s10, i32, f2u(0.0));
1752ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s13, s13, #9",  s13, s13, i32, f2u(INFINITY));
1753ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s22, s22, #3",  s22, s22, i32, f2u(-INFINITY));
1754ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.s32.f32 s1,  s1,  #7",  s1,  s1, i32, f2u(NAN));
1755ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1756ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s0,  s0,  #3",  s0,  s0, i32, f2u(3.2));
1757ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s11, s11, #1",  s11, s11, i32, f2u(3e22));
1758ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s15, s15, #32", s15, s15, i32, f2u(3e9));
1759ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s4,  s4,  #7",  s4,  s4, i32, f2u(-0.5));
1760ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s6,  s6,  #4",  s6,  s6, i32, f2u(-7.1));
1761ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s12, s12, #3",  s12, s12, i32, f2u(8.0 - 1.0/1024.0));
1762ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s8,  s8,  #3",  s8,  s8, i32, f2u(-8.0 + 1.0/1024.0));
1763ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s30, s30, #3",  s30, s30, i32, f2u(NAN));
1764ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s20, s20, #3",  s20, s20, i32, f2u(0.0));
1765ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s13, s13, #6",  s13, s13, i32, f2u(INFINITY));
1766ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.u32 s16, s16, #3",  s16, s16, i32, f2u(-INFINITY));
1767ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s1,  s1,  #5",  s1,  s1, i32, f2u(3.2));
1768ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s21, s21, #1",  s21, s21, i32, f2u(3e22));
1769ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s17, s17, #8",  s17, s17, i32, f2u(3e9));
1770ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s27, s27, #2",  s27, s27, i32, f2u(-0.5));
1771ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s15, s15, #1",  s15, s15, i32, f2u(-7.1));
1772ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s8,  s8,  #2",  s8,  s8, i32, f2u(8.0 - 1.0/1024.0));
1773ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s31, s31, #2",  s31, s31, i32, f2u(-8.0 + 1.0/1024.0));
1774ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s10, s10, #3",  s10, s10, i32, f2u(0.0));
1775ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s13, s13, #9",  s13, s13, i32, f2u(INFINITY));
1776ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s22, s22, #3",  s22, s22, i32, f2u(-INFINITY));
1777ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_f32("vcvt.f32.s32 s1,  s1,  #7",  s1,  s1, i32, f2u(NAN));
1778ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    */
1779ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1780ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCVT (single <-> double) ----\n");
1781ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d0,  s1",  d0,  s1,  f2u(3.2));
1782ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d29, s21",  d29, s21, f2u(234.65));
1783ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d16, s30",  d16, s30, f2u(-700.63));
1784ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d11, s7",  d11, s7,  f2u(8.0 - 1.0/1024.0));
1785ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d30, s3",  d30, s3,  f2u(-8.0 + 1.0/1024.0));
1786ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d7,  s19", d7,  s19, f2u(12.43303));
1787ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d2,  s11",  d2,  s11, f2u(65.4235));
1788ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d9,  s21",  d9,  s21, f2u(NAN));
1789ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d17, s29",  d17, s29, f2u(-INFINITY));
1790ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_ds("vcvt.f64.f32 d19, s0",  d19, s0,  f2u(INFINITY));
1791ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
1792ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s29, d21",  s29, d21, f2u0(234.65), f2u1(234.65));
1793ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s16, d30",  s16, d30, f2u0(-700.63), f2u1(-700.63));
1794ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s11, d7",  s11, d7,  f2u0(8.0 - 1.0/1024.0), f2u1(8.0 - 1.0/1024.0));
1795ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s30, d3",  s30, d3,  f2u0(-8.0 + 1.0/1024.0), f2u1(-8.0 + 1.0/1024.0));
1796ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s7,  d19", s7,  d19, f2u0(12.43303), f2u1(12.43303));
1797ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s2,  d11",  s2,  d11, f2u0(65.4235), f2u1(65.4235));
1798ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s9,  d21",  s9,  d21, f2u0(NAN), f2u1(NAN));
1799ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s17, d29",  s17, d29, f2u0(-INFINITY), f2u1(-INFINITY));
1800ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_un_cvt_sd("vcvt.f32.f64 s19, d0",  s19, d0,  f2u0(INFINITY), f2u1(INFINITY));
1801ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1802ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCMP ----\n");
1803ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d0,  d19",  d0, f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
1804ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(3425.5), f2u1(3425.5));
1805ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d21, d30",  d21, f2u0(-4524.5), f2u1(-4524.5), d30, f2u0(-452345.5), f2u1(-452345.5));
1806ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d7,  d28",  d7,  f2u0(425.5), f2u1(425.5), d28, f2u0(-456.3), f2u1(-456.3));
1807ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d29, d3",   d29, f2u0(INFINITY), f2u1(INFINITY), d3, f2u0(34562.45), f2u1(34562.45));
1808ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(2.0), f2u1(2.0), d22, f2u0(2.0), f2u1(2.0));
1809ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(12.023), f2u1(12.023), d22, f2u0(12.023), f2u1(12.023));
1810ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(0.0), f2u1(0.0), d22, f2u0(0.0), f2u1(0.0));
1811ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d9,  d2",   d9,  f2u0(INFINITY), f2u1(INFINITY), d2, f2u0(INFINITY), f2u1(INFINITY));
1812ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d30, d15",  d30, f2u0(-INFINITY), f2u1(-INFINITY), d15, f2u0(-INFINITY), f2u1(-INFINITY));
1813ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
1814ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d11, d16",  d11, f2u0(-5463.7), f2u1(-5463.7), d16, f2u0(-INFINITY), f2u1(-INFINITY));
1815ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d21, d30",  d21, f2u0(-INFINITY), f2u1(-INFINITY), d30, f2u0(86.7), f2u1(86.7));
1816ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d7,  d28",  d7,  f2u0(INFINITY), f2u1(INFINITY), d28, f2u0(-8567.456), f2u1(-8567.456));
1817ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d29, d3",   d29, f2u0(-524.4), f2u1(-524.4), d3, f2u0(654.5), f2u1(654.5));
1818ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(NAN), f2u1(NAN), d22, f2u0(-6.46524), f2u1(-6.46524));
1819ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d9,  d2",   d9,  f2u0(56.563), f2u1(56.563), d2, f2u0(56.56), f2u1(56.56));
1820ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmp.f64  d30, d15",  d30, f2u0(5365.60001), f2u1(5365.60001), d15, f2u0(56763.5), f2u1(56763.5));
1821ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
1822ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(3425.5), f2u1(3425.5));
1823ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(NAN), f2u1(NAN));
1824ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d21, d30",  d21, f2u0(-4524.5), f2u1(-4524.5), d30, f2u0(-452345.5), f2u1(-452345.5));
1825ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d7,  d28",  d7,  f2u0(425.5), f2u1(425.5), d28, f2u0(-456.3), f2u1(-456.3));
1826ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d29, d3",   d29, f2u0(INFINITY), f2u1(INFINITY), d3, f2u0(34562.45), f2u1(34562.45));
1827ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d3,  d22",  d3,  f2u0(2.0), f2u1(2.0), d22, f2u0(2.0), f2u1(2.0));
1828ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d9,  d2",   d9,  f2u0(INFINITY), f2u1(INFINITY), d2, f2u0(INFINITY), f2u1(INFINITY));
1829ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d30, d15",  d30, f2u0(-INFINITY), f2u1(-INFINITY), d15, f2u0(-INFINITY), f2u1(-INFINITY));
1830ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
1831ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(-5463.7), f2u1(-5463.7), d16, f2u0(-INFINITY), f2u1(-INFINITY));
1832ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d21, d30",  d21, f2u0(-INFINITY), f2u1(-INFINITY), d30, f2u0(86.7), f2u1(86.7));
1833ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d7,  d28",  d7,  f2u0(INFINITY), f2u1(INFINITY), d28, f2u0(-8567.456), f2u1(-8567.456));
1834ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d29, d3",   d29, f2u0(-524.4), f2u1(-524.4), d3, f2u0(654.5), f2u1(654.5));
1835ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d3,  d22",  d3,  f2u0(4624.5), f2u1(4624.5), d22, f2u0(-6.46524), f2u1(-6.46524));
1836ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d9,  d2",   d9,  f2u0(56.563), f2u1(56.563), d2, f2u0(56.56), f2u1(56.56));
1837ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f64("vcmpe.f64 d30, d15",  d30, f2u0(5365.60001), f2u1(5365.60001), d15, f2u0(56763.5), f2u1(56763.5));
1838ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1839ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
1840ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
1841ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(2.0),      s22, f2u(2.0));
1842ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
1843ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
1844ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s21, s30",  s21, f2u(-4524.5),  s30, f2u(-452345.5));
1845ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s7,  s28",  s7,  f2u(425.5),    s28, f2u(-456.3));
1846ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s29, s3",   s29, f2u(INFINITY), s3, f2u(34562.45));
1847ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(12.023),   s22, f2u(12.023));
1848ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(0.0),      s22, f2u(0.0));
1849ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s9,  s2",   s9,  f2u(INFINITY), s2, f2u(INFINITY));
1850ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s30, s15",  s30, f2u(-INFINITY),s15, f2u(-INFINITY));
1851ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
1852ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(-5463.7),  s16, f2u(-INFINITY));
1853ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s21, s30",  s21, f2u(-INFINITY),s30, f2u(86.7));
1854ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s7,  s28",  s7,  f2u(INFINITY), s28, f2u(-8567.456));
1855ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s29, s3",   s29, f2u(-524.4),   s3, f2u(654.5));
1856ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(NAN),      s22, f2u(-6.46524));
1857ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s9,  s2",   s9,  f2u(56.563),   s2, f2u(56.56));
1858ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmp.f32  s30, s15",  s30, f2u(5365.60001), s15, f2u(56763.5));
1859ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
1860ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
1861ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(23475.45), s16, f2u(NAN));
1862ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s21, s30",  s21, f2u(-4524.5),  s30, f2u(-452345.5));
1863ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s7,  s28",  s7,  f2u(425.5),    s28, f2u(-456.3));
1864ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s29, s3",   s29, f2u(INFINITY), s3, f2u(34562.45));
1865ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s3,  s22",  s3,  f2u(2.0),      s22, f2u(2.0));
1866ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(INFINITY), s2, f2u(INFINITY));
1867ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s30, s15",  s30, f2u(-INFINITY), s15, f2u(-INFINITY));
1868ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
1869ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(-5463.7),  s16, f2u(-INFINITY));
1870ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s21, s30",  s21, f2u(-INFINITY), s30, f2u(86.7));
1871ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s7,  s28",  s7,  f2u(INFINITY), s28, f2u(-8567.456));
1872ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s29, s3",   s29, f2u(-524.4),   s3, f2u(654.5));
1873ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s3,  s22",  s3,  f2u(4624.5),   s22, f2u(-6.46524));
1874ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(56.563),   s2, f2u(56.56));
1875ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(56.56));
1876ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(10.0),   s2, f2u(0.0));
1877ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(0.0));
1878ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(0.0));
1879ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1880ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VCMP (zero) ----\n");
1881ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
1882ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d11", d11, f2u0(23475.45), f2u1(23475.45));
1883ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d21", d21, f2u0(-4524.5), f2u1(-4524.5));
1884ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d7",  d7,  f2u0(425.5), f2u1(425.5));
1885ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d29", d29, f2u0(INFINITY), f2u1(INFINITY));
1886ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(2.0), f2u1(2.0));
1887ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(0.0), f2u1(0.0));
1888ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d9",  d9,  f2u0(INFINITY), f2u1(INFINITY));
1889ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d30", d30, f2u0(-INFINITY), f2u1(-INFINITY));
1890ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
1891ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d11", d11, f2u0(-5463.7), f2u1(-5463.7));
1892ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d21", d21, f2u0(-INFINITY), f2u1(-INFINITY));
1893ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d7",  d7,  f2u0(INFINITY), f2u1(INFINITY));
1894ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d29", d29, f2u0(-524.4), f2u1(-524.4));
1895ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(4624.5), f2u1(4624.5));
1896ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d9",  d9,  f2u0(NAN), f2u1(NAN));
1897ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmp.f64 d30", d30, f2u0(5365.60001), f2u1(5365.60001));
1898ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1899ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
1900ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d11", d11, f2u0(23475.45), f2u1(23475.45));
1901ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d21", d21, f2u0(-4524.5), f2u1(-4524.5));
1902ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d7",  d7,  f2u0(425.5), f2u1(425.5));
1903ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d29", d29, f2u0(INFINITY), f2u1(INFINITY));
1904ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(2.0), f2u1(2.0));
1905ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(0.0), f2u1(0.0));
1906ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d9",  d9,  f2u0(INFINITY), f2u1(INFINITY));
1907ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d30", d30, f2u0(-INFINITY), f2u1(-INFINITY));
1908ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
1909ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d11", d11, f2u0(-5463.7), f2u1(-5463.7));
1910ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d21", d21, f2u0(-INFINITY), f2u1(-INFINITY));
1911ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d7",  d7,  f2u0(INFINITY), f2u1(INFINITY));
1912ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d29", d29, f2u0(-524.4), f2u1(-524.4));
1913ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(4624.5), f2u1(4624.5));
1914ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d9",  d9,  f2u0(NAN), f2u1(NAN));
1915ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f64("vcmpe.f64 d30", d30, f2u0(5365.60001), f2u1(5365.60001));
1916ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1917ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s0",  s0,  f2u(-3.4567));
1918ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s11", s11, f2u(23475.45));
1919ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s21", s21, f2u(-4524.5));
1920ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s7",  s7,  f2u(425.5));
1921ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s29", s29, f2u(INFINITY));
1922ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(2.0));
1923ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(0.0));
1924ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s9",  s9,  f2u(INFINITY));
1925ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s30", s30, f2u(-INFINITY));
1926ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s0",  s0,  f2u(-3.4567));
1927ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s11", s11, f2u(-5463.7));
1928ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s21", s21, f2u(-INFINITY));
1929ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s7",  s7,  f2u(INFINITY));
1930ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s29", s29, f2u(-524.4));
1931ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(4624.5));
1932ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s9",  s9,  f2u(NAN));
1933ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmp.f32 s30", s30, f2u(5365.60001));
1934ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s0",  s0,  f2u(-3.4567));
1935ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s11", s11, f2u(23475.45));
1936ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s21", s21, f2u(-4524.5));
1937ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s7",  s7,  f2u(425.5));
1938ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s29", s29, f2u(INFINITY));
1939ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(2.0));
1940ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(0.0));
1941ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s9",  s9,  f2u(INFINITY));
1942ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s30", s30, f2u(-INFINITY));
1943ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s0",  s0,  f2u(-3.4567));
1944ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s11", s11, f2u(-5463.7));
1945ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s21", s21, f2u(-INFINITY));
1946ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s7",  s7,  f2u(INFINITY));
1947ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s29", s29, f2u(-524.4));
1948ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(4624.5));
1949ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s9",  s9,  f2u(NAN));
1950ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_cmpz_f32("vcmpe.f32 s30", s30, f2u(5365.60001));
1951ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1952ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    int numbers[8] ={ 0xaa0, 0xbb1, 0xcc2, 0xdd3, 0x11a, 0x22b, 0x33c, 0x44d };
1953ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1954ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VLDR ----\n");
1955ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d9,  [r6, #+4]",  d9,  r6,  (long) numbers + 8, 4);
1956ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d16, [r9, #-4]",  d16, r9,  (long) numbers + 8, -4);
1957ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d30, [r12]",      d30, r12, (long) numbers + 8, 0);
1958ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d22, [r9, #+8]", d22, r9, (long) numbers + 8, 8);
1959ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d29, [r2, #-8]",  d29, r2,  (long) numbers + 8, -8);
1960ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d8,  [r8, #+8]",  d8,  r8,  (long) numbers + 8, 8);
1961ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d11, [r12, #-4]", d11, r12, (long) numbers + 8, -4);
1962ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d18, [r3]",       d18, r3,  (long) numbers + 8, 0);
1963ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d5,  [r10, #+8]", d5,  r10, (long) numbers + 8, 8);
1964ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d17, [r10]",      d17, r10, (long) numbers + 8, 0);
1965ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d9,  [r9, #-4]", d9,  r9, (long) numbers + 8, -4);
1966ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d29, [r4, #-8]",  d29, r4,  (long) numbers + 8, -8);
1967ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d21, [r6, #+4]",  d21, r6,  (long) numbers + 8, 4);
1968ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d8,  [r4]",       d8,  r4,  (long) numbers + 8, 0);
1969ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d19, [r0, #-8]",  d19, r0,  (long) numbers + 8, -8);
1970ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f64("vldr d10, [r3, #+4]",  d10, r3,  (long) numbers + 8, 4);
1971ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s10, [r3, #+4]",  s10, r3,  (long) numbers + 8, 4);
1972ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s9,  [r6, #+4]",  s9,  r6,  (long) numbers + 8, 4);
1973ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s16, [r9, #-4]",  s16, r9,  (long) numbers + 8, -4);
1974ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s30, [r12]",      s30, r12, (long) numbers + 8, 0);
1975ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s22, [r9, #+8]", s22, r9, (long) numbers + 8, 8);
1976ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s29, [r2, #-8]",  s29, r2,  (long) numbers + 8, -8);
1977ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s8,  [r8, #+8]",  s8,  r8,  (long) numbers + 8, 8);
1978ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s11, [r12, #-4]", s11, r12, (long) numbers + 8, -4);
1979ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s18, [r3]",       s18, r3,  (long) numbers + 8, 0);
1980ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s5,  [r10, #+8]", s5,  r10, (long) numbers + 8, 8);
1981ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s17, [r10]",      s17, r10, (long) numbers + 8, 0);
1982ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s9,  [r9, #-4]", s9,  r9, (long) numbers + 8, -4);
1983ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s29, [r4, #-8]",  s29, r4,  (long) numbers + 8, -8);
1984ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s21, [r6, #+4]",  s21, r6,  (long) numbers + 8, 4);
1985ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s8,  [r4]",       s8,  r4,  (long) numbers + 8, 0);
1986ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s19, [r0, #-8]",  s19, r0,  (long) numbers + 8, -8);
1987ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vldr_f32("vldr s10, [r3, #+4]",  s10, r3,  (long) numbers + 8, 4);
1988ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
1989ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VLDM (Increment After, writeback) ----\n");
1990ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r6,  d17, d7);
1991ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r4,  d11, d23);
1992ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r9, d29, d12);
1993ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r9,  d0,  d30);
1994ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r12, d8,  d24);
1995ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r3,  d27, d13);
1996ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r10, d20, d30);
1997ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r0,  d0,  d1);
1998ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r8,  d15, d19);
1999ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r3,  d31, d30);
2000ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r10, d6,  d23);
2001ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r8,  d8,  d16);
2002ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r9,  d13, d11);
2003ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r1,  d3,  d8);
2004ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r2,  d4,  d8);
2005ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMIAWB(r3,  d9,  d27);
2006ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2007ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSTR ----\n");
2008ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d9,  [r6, #+4]",  d9,  0xa0, r6,  (long) numbers + 8, 4);
2009ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d16, [r9, #-4]",  d16, 0xb1, r9,  (long) numbers + 8, -4);
2010ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d30, [r12]",      d30, 0xc2, r12, (long) numbers + 8, 0);
2011ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d22, [r9, #+8]", d22, 0xd4, r9, (long) numbers + 8, 8);
2012ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d29, [r2, #-8]",  d29, 0x00, r2,  (long) numbers + 8, -8);
2013ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d8,  [r8, #+8]",  d8,  0x11, r8,  (long) numbers + 8, 8);
2014ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d11, [r12, #-4]", d11, 0x22, r12, (long) numbers + 8, -4);
2015ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d18, [r3]",       d18, 0x33, r3,  (long) numbers + 8, 0);
2016ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d5,  [r10, #+8]", d5,  0x99, r10, (long) numbers + 8, 8);
2017ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d17, [r10]",      d17, 0x77, r10, (long) numbers + 8, 0);
2018ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d9,  [r9, #-4]", d9,  0xee, r9, (long) numbers + 8, -4);
2019ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d29, [r4, #-8]",  d29, 0xff, r4,  (long) numbers + 8, -8);
2020ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d10, [r3, #+4]",  d10, 0xbc, r3,  (long) numbers + 8, 4);
2021ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d21, [r6, #+4]",  d21, 0x48, r6,  (long) numbers + 8, 4);
2022ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d8,  [r4]",       d8,  0x1f, r4,  (long) numbers + 8, 0);
2023ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr64("vstr d19, [r0, #-8]",  d19, 0xf9, r0,  (long) numbers + 8, -8);
2024ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s9,  [r6,  #+4]", s9,  r6,  (long) numbers + 8, 4);
2025ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s21, [r9, #-4]", s21, r9, (long) numbers + 8, -4);
2026ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s4,  [r3,  #+8]", s4,  r3,  (long) numbers + 8, 8);
2027ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s19, [r4,  #-8]", s19, r4,  (long) numbers + 8, -8);
2028ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s29, [r8]",       s29, r8,  (long) numbers + 8, 0);
2029ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s8,  [r12]",      s8,  r12, (long) numbers + 8, 0);
2030ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s16, [r0,  #+4]", s16, r0,  (long) numbers + 8, 4);
2031ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s0,  [r8,  #-4]", s0,  r8,  (long) numbers + 8, -4);
2032ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s3,  [r9,  #+8]", s3,  r9,  (long) numbers + 8, 8);
2033ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s9,  [r10, #-8]", s9,  r10, (long) numbers + 8, -8);
2034ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s11, [r2]",       s11, r2,  (long) numbers + 8, 0);
2035ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vstr32("vstr s30, [r0]",       s30, r0,  (long) numbers + 8, 0);
2036ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2037ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSTM (Increment After, no writeback) ----\n");
2038ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r6,  {d21}", r6,  d21, 0xab);
2039ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r1,  {d1}",  r1,  d1, 0x13);
2040ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r9,  {d2}",  r9,  d2, 0x78);
2041ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r4,  {d30}", r4,  d30, 0x0);
2042ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r12, {d23}", r12, d23, 0xb9);
2043ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r6,  {d16}", r6,  d16, 0xa6);
2044ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r6,  {d8}",  r6,  d8, 0x7f);
2045ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r6,  {d27}", r6,  d27, 0xff);
2046ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r5,  {d11}", r5,  d11, 0x32);
2047ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r6,  {d4}",  r6,  d4, 0x10);
2048ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r10, {d9}",  r10, d9, 0x4f);
2049ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r9, {d29}", r9, d29, 0x97);
2050ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r10, {d17}", r10, d17, 0xaa);
2051ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r5,  {d5}",  r5,  d5, 0x2b);
2052ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r9,  {d7}",  r9,  d7, 0x7b);
2053ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB("vstmia r3,  {d16}", r3,  d16, 0x11);
2054ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s21}", r6,  s21, 0xab);
2055ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r1,  {s1}",  r1,  s1,  0x13);
2056ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r9,  {s2}",  r9,  s2,  0x78);
2057ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r4,  {s30}", r4,  s30, 0x0);
2058ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r12, {s23}", r12, s23, 0xb9);
2059ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s16}", r6,  s16, 0xa613451d);
2060ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s8}",  r6,  s8,  0x7f);
2061ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s27}", r6,  s27, f2u(-INFINITY));
2062ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r5,  {s11}", r5,  s11, f2u(NAN));
2063ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s4}",  r6,  s4,  0x10ccb);
2064ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r10, {s9}",  r10, s9,  0x4f543);
2065ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r9, {s29}", r9, s29, 0x97001a);
2066ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r10, {s17}", r10, s17, 0xaa45f);
2067ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r5,  {s5}",  r5,  s5,  f2u(NAN));
2068ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r9,  {s7}",  r9,  s7,  f2u(-INFINITY));
2069ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAnoWB32("vstmia r3,  {s16}", r3,  s16, f2u(INFINITY));
2070ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2071ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VSTM (Increment After, writeback) ----\n");
2072ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r6,  d21, d2);
2073ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r1,  d1, d5);
2074ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r9,  d2, d17);
2075ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r4,  d30, d21);
2076ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r12, d23, d29);
2077ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r6,  d16, d30);
2078ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r6,  d8,  d12);
2079ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r6,  d27, d24);
2080ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r5,  d11, d13);
2081ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r6,  d4,  d31);
2082ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r10, d9,  d27);
2083ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r9, d29, d17);
2084ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r10, d17, d7);
2085ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r5,  d5,  d8);
2086ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r9,  d7,  d16);
2087ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB(r3,  d16, d21);
2088ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r6,  s21, s2);
2089ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r12, s23, s21);
2090ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r3,  s3,  s3);
2091ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r10, s19, s5);
2092ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r2,  s3,  s12);
2093ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r8,  s7,  s10);
2094ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r4,  s30, s13);
2095ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r6,  s17, s17);
2096ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r9, s11, s21);
2097ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r9,  s8,  s30);
2098ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r3,  s12, s9);
2099ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r6,  s6,  s11);
2100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r8,  s17, s12);
2101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r9,  s12, s12);
2102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VSTMIAWB32(r4,  s11, s11);
2103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("---- VLDM (Decrement Before) ----\n");
2105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r4,  d11, d23);
2106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r9, d29, d12);
2107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r9,  d0,  d30);
2108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r12, d8,  d24);
2109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r3,  d27, d13);
2110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r6,  d17, d7);
2111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r10, d20, d30);
2112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r0,  d0,  d1);
2113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r8,  d15, d19);
2114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r3,  d31, d30);
2115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r10, d6,  d23);
2116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r8,  d8,  d16);
2117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r9,  d13, d11);
2118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r1,  d3,  d8);
2119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r2,  d4,  d8);
2120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_VLDMDB(r3,  d9,  d27);
2121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VMOV (immediate) -----\n");
2123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s0",  s0,  0xbe880000);
2124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s1",  s1,  0x3fa80000);
2125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s2",  s2,  0xbf080000);
2126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s5",  s5,  0x3eb80000);
2127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s7",  s7,  0xbff80000);
2128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s10", s10, 0xbe280000);
2129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s12", s12, 0x40000000);
2130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s13", s13, 0x3e880000);
2131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s14", s14, 0xbee80000);
2132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmovf32_imm("vmov s15", s15, 0xc0b80000);
2133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VMOV (ARM core register and single register) -----\n");
2135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r12, s12", r12, s12, 0x4000aad);
2136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r2,  s5",  r2,  s5,  0xab45e7);
2137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r5,  s15", r5,  s15, 0x00add12);
2138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r8,  s11", r8,  s11, 0x876450ff);
2139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r9, s5",  r9, s5,  0xffff);
2140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r10, s9",  r10, s9,  0x87d34f);
2141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r9,  s10", r9,  s10, 0x00ffff);
2142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r6,  s8",  r6,  s8,  0xad4f8);
2143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r4,  s14", r4,  s14, 0x920b8cf);
2144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r3,  s7",  r3,  s7,  f2u(NAN));
2145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r2,  s0",  r2,  s0,  f2u(-INFINITY));
2146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_core_single("vmov r0,  s1",  r0,  s1,  f2u(INFINITY));
2147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s2,  r9",  s2,  r9,  0x9465a);
2148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s14, r0",  s14, r0,  0xd0b87a);
2149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s4,  r2",  s4,  r2,  0x452bbc8);
2150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s7,  r8",  s7,  r8,  0xa7cb3d);
2151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s9,  r4",  s9,  r4,  0xdd8ec);
2152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s10, r12", s10, r12, 0x8a7b6e);
2153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s13, r9",  s13, r9,  0x4b00a);
2154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s3,  r3",  s3,  r3,  0x0023455);
2155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s5,  r5",  s5,  r5,  f2u(INFINITY));
2156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s8,  r6",  s8,  r6,  f2u(-INFINITY));
2157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s4,  r0",  s4,  r0,  0x000acb45);
2158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_single_core("vmov s0,  r6",  s0,  r6,  f2u(NAN));
2159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VMOV (ARM two core registers and two single registers) -----\n");
2161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov  s0,  s1,  r6,  r9",  s0,  s1,  r6,  r9, 0x43252acc, 0xabcc4);
2162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov  s0,  s1,  r9,  r9",  s0,  s1,  r9,  r9, 0x43252acc, 0xabcc4);
2163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s30, s31,  r9,  r1", s30, s31,  r9,  r1, 0xaa2e2acc, 0x00337);
2164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(NAN));
2165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(INFINITY));
2166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(-INFINITY));
2167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(0));
2168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(NAN));
2169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(INFINITY));
2170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(-INFINITY));
2171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(0));
2172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(NAN));
2173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(INFINITY));
2174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(-INFINITY));
2175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(0));
2176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(NAN));
2177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(INFINITY));
2178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(-INFINITY));
2179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(0));
2180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN) + 1, f2u(NAN));
2181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN) + 1, f2u(0));
2182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(NAN) - 1);
2183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(NAN) - 1);
2184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r12,  r9, s12, s13", r12,  r9, s12, s13, 0x4000aad, 0xaffff);
2185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov  r0,  r9, s12, s13",  r0,  r9, s12, s13, 0x40ee56d, 0x123ff);
2186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r12, r9, s12, s13", r12, r9, s12, s13, 0x4000aad, 0xaffff);
2187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(NAN));
2188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(INFINITY));
2189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(-INFINITY));
2190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(0));
2191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(NAN));
2192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(INFINITY));
2193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(-INFINITY));
2194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(0));
2195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(NAN));
2196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(INFINITY));
2197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(-INFINITY));
2198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(0));
2199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(NAN));
2200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(INFINITY));
2201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(-INFINITY));
2202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(0));
2203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN) + 1, f2u(NAN));
2204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN) + 1, f2u(0));
2205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(NAN) - 1);
2206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(NAN) - 1);
2207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VMOV (ARM two core registers and double register) -----\n");
2209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d3,  r6,  r9",  d3,  r6,  r9,  0x43252acc, 0x45bbd);
2210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d4,  r10, r2",  d4,  r10, r2,  0x1243b4, 0x237ffb);
2211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d21, r1,  r6",  d21, r1,  r6,  0x30cc4, 0x314c043);
2212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d30, r9, r9", d30, r9, r9, 0x08ddf, 0x87bbca);
2213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d29, r3,  r5",  d29, r3,  r5,  0xaaa0, 0xbbb1);
2214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d16, r8,  r8",  d16, r8,  r8,  0xaa455bb, 0x13434);
2215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d17, r12, r9", d17, r12, r9, 0x004003, 0x452bbc1);
2216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d9,  r9,  r0",  d9,  r9,  r0,  0x134c, 0x41ffb6);
2217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d7,  r0,  r6",  d7,  r0,  r6,  0x35425dcc, 0x0876c43);
2218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d13, r3,  r9", d13, r3,  r9, f2u0(NAN), f2u1(NAN));
2219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d19, r6,  r5",  d19, r6,  r5,  f2u0(INFINITY), f2u1(INFINITY));
2220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_double_2core("vmov d0,  r2,  r6",  d0,  r2,  r6,  f2u0(-INFINITY), f2u1(-INFINITY));
2221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r3,  r6,  d9",  r3,  r6,  d9,  0x43252acc, 0x45bbd);
2223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r4,  r10, d2",  r4,  r10, d2,  0x1243b4, 0x237ffb);
2224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r2,  r1,  d6",  r2,  r1,  d6,  0x30cc4, 0x314c043);
2225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r0,  r9, d11", r0,  r9, d11, 0x08ddf, 0x87bbca);
2226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r9,  r3,  d5",  r9,  r3,  d5,  0xaaa0, 0xbbb1);
2227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r10, r8,  d8",  r10, r8,  d8,  0xaa455bb, 0x13434);
2228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r9, r12, d11", r9, r12, d11, 0x004003, 0x452bbc1);
2229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    // ARM ARM says this is UNDEFINED, hence we don't decode it
2231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    //TESTINSN_vmov_2core_double("vmov r9,  r9,  d0",  r9,  r9,  d0,  0x134c, 0x41ffb6);
2232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r6,  r0,  d7",  r6,  r0,  d7,  0x35425dcc, 0x0876c43);
2234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r12, r3,  d11", r12, r3,  d11, f2u0(NAN), f2u1(NAN));
2235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r1,  r6,  d5",  r1,  r6,  d5,  f2u0(INFINITY), f2u1(INFINITY));
2236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r0,  r2,  d7",  r0,  r2,  d7,  f2u0(-INFINITY), f2u1(-INFINITY));
2237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r2,  r9,  d0",  r2,  r9,  d0,  f2u0(INFINITY), f2u1(INFINITY));
2239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r6,  r9, d10", r6,  r9, d10, 0x14534c, 0x41ffb6);
2240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vmov_2core_double("vmov r0,  r9, d20", r0,  r9, d20, f2u0(NAN), f2u1(NAN));
2241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    printf("----- VPUSH, VPOP -----\n");
2243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s3, 0x00aaaaaa, s4, 0x00bbbbbb, s5, 0x00cccccc, s0, s1,  s2);
2244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s1, 0x000134f4, s2, 0x0870ccb3, s3, 0x00aba0f1, s9, s10, s11);
2245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s3, 0x00dddddd, s4, 0x00eeeeee, s5, 0x00ffffff, s0, s1,  s2);
2246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s11, 0x13454c,  s12, 0x341,     s13, 0xaac45f, s6, s7,  s8);
2247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s21, 0x0,       s22, f2u(NAN),  s23, f2u(INFINITY), s23, s24,  s25);
2248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s12, 0xffffff,  s13, 0xf542dd4, s14, f2u(-INFINITY), s11, s12,  s13);
2249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s25, 0x45cd,    s26, 0xa3ccb5,  s27, 0xbbcaf, s0, s1,  s2);
2250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s1,  f2u(NAN),  s2,  0xaaca3,   s3,  0x876008, s6, s7,  s8);
2251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s9,  0x2f43,    s10, f2u(INFINITY), s11, 0x3cc66a, s9, s10,  s11);
2252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s10, f2u(INFINITY), s11, 0x134cc5, s12, f2u(NAN), s2, s3,  s4);
2253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s7,  0xcc006d,  s8,  0x1308c,   s9,  0xabbc45, s21, s22,  s23);
2254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s19, f2u(-INFINITY), s20, 0x452146, s21, 0x388bbc, s4, s5,  s6);
2255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s16, 0x542aa,   s17, 0xaddcd5,  s18, 0x87acc, s18, s19,  s20);
2256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s22, 0x5ccb708, s23, 0x52345c,  s24, 0x98745c, s12, s13,  s14);
2257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s24, 0x99234f,  s25, 0x1aac,    s26, 0x3746c, s28, s29,  s30);
2258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f32(s13, 0x134ccc,  s14, 0x6bb43,   s15, 0x834aa, s0,  s1,   s2);
2259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d3,  0x00aaaaaa, 0xaac3,     d4,  0x00bbbbbb, 0x34ccb,     d0, d1);
2260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d1,  0x000134f4, 0x341531,   d2,  0x0870ccb3, 0x4576bbc,   d9, d10);
2261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d3,  0x00dddddd, 0x13451cc,  d4,  0x00eeeeee, 0x123ddc8,   d0, d1);
2262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d11, 0x13454c,   0x541bbc3,  d12, 0x341,      0xccb5, d6,  d7);
2263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d21, 0x0,        0x123c33,   d22, f2u0(NAN),  f2u1(NAN),   d23, d24);
2264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d12, 0xffffff,   0x1940c,    d13, 0xf542dd4,  0x788ffc,    d11, d12);
2265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d25, 0x45cd,     0x1309c,    d26, 0xa3ccb5,   0x4588b,     d0, d1);
2266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d1,  f2u0(NAN),  f2u1(NAN),  d2,  0xaaca3,    0x1120a,     d6, d7);
2267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d9,  0x2f43,     0x19ff9,    d10, f2u0(INFINITY), f2u1(INFINITY), d9, d10);
2268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d10, f2u0(INFINITY), f2u1(INFINITY), d11, 0x134cc5, 0x78cbbd, d2, d3);
2269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d7,  0xcc006d,   0x28354,    d8,  0x1308c,    0x1993bc,    d21, d22);
2270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d19, f2u0(-INFINITY), f2u1(-INFINITY), d20, 0x452146, 0x138476c,  d4, d5);
2271ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d16, 0x542aa,    0x12dd4,    d17, 0xaddcd5,   0x399cb,     d18, d19);
2272ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d22, 0x5ccb708,  0x8009c,    d23, 0x52345c,   0x29902c,    d12, d13);
2273ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d24, 0x99234f,   0x3457ff,   d25, 0x1aac,     0x1002cba,   d28, d29);
2274ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    TESTINSN_vpush_vpop_f64(d13, 0x134ccc,   0xfaa309,   d14, 0x6bb43,    0x199cb,     d0,  d1);
2275ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown
2276ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown    return 0;
2277ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}
2278