11791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
21791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* Can be compiled both as ARM or Thumb using
31791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj   gcc -Wall -g -O0 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -m{arm,thumb} -o vfp vfp.c
41791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj*/
51791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
61791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#include <stdio.h>
71791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#include <string.h>
81791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#include <math.h>
91791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#ifndef __thumb__
111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj// ARM
121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define MOVE_to_FPSCR_from_R4 \
131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t"
141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define MOVE_to_R4_from_FPSCR \
151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t"
161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#endif
171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#ifdef __thumb__
191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj// Thumb
201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define MOVE_to_FPSCR_from_R4 \
211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t"
221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define MOVE_to_R4_from_FPSCR \
231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t"
241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#endif
251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardjstatic inline unsigned int f2u(float x) {
271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    union {
281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        float f;
291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        unsigned int u;
301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    } cvt;
311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    cvt.f = x;
321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    return cvt.u;
331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardjstatic inline unsigned int f2u0(double x) {
361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    union {
371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        double f;
381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        unsigned int u[2];
391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    } cvt;
401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    cvt.f = x;
411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    return cvt.u[0];
421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardjstatic inline unsigned int f2u1(double x) {
451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    union {
461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        double f;
471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        unsigned int u[2];
481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    } cvt;
491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    cvt.f = x;
501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    return cvt.u[1];
511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* test macros to generate and output the result of a single instruction */
541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardjconst unsigned int mem[] = {
561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d,
571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj};
611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vmovf32_imm(instruction, DD, imm) \
631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction ", #"#imm"\n\t"\
681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #DD "}\n\t" \
691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out) \
711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, "memory" \
721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s, #" #imm " :: Sd 0x%08x\n", \
741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0]); \
751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vmov_core_single(instruction, RN, SD, SDval) \
781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf(#SD" 0x%08x\t",  SDval); \
821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", #0\n\t" \
841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.f32 " #SD ", %1\n\t" \
851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #RN ", [%0]\n\t" \
871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (SDval) \
891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #RN, "memory" \
901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: "#RN" 0x%08x\n", \
921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0]); \
931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vmov_single_core(instruction, SD, RN, RNval) \
961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf(#RN" 0x%08x\t",  RNval); \
1001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
1011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %1\n\t" \
1021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", #0x40000000\n\t" \
1031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t"\
1041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD "}\n\t" \
1051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
1061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (RNval) \
1071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #RN, "memory" \
1081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
1091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: "#SD" 0x%08x\n", \
1101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0]); \
1111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
1121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
1131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vmov_2core_2single(instruction, RD1, RD2, SN, SM, SNval, SMval) \
1141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
1151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
1161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
1171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("\t\t\t "#SN" 0x%08x "#SM" 0x%08x\n",  SNval, SMval); \
1181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
1191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SN ", %1\n\t" \
1201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SM ", %2\n\t" \
1211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RD1 ", #0x4\n\t" \
1221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RD2 ", #0x4\n\t" \
1231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t"\
1241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #RD1 ", [%0]\n\t" \
1251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #RD2 ", [%0, #+4]\n\t" \
1261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
1271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (SNval), "r" (SMval) \
1281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #RD1, #RD2, #SN, #SM, "memory" \
1291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
1301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: "#RD1" 0x%08x "#RD2" 0x%08x\n", \
1311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], out[1]); \
1321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
1331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
1341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vmov_2single_2core(instruction, SD1, SD2, RN, RM, RNval, RMval) \
1351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
1361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
1371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
1381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("\t\t\t "#RN" 0x%08x "#RM" 0x%08x\n",  RNval, RMval); \
1391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
1401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %1\n\t" \
1411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RM ", %2\n\t" \
1421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD1 ", #0x40000000\n\t" \
1431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD2 ", #0x40000000\n\t" \
1441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t"\
1451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD1 ", " #SD2 " }\n\t" \
1461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
1471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (RNval), "r" (RMval) \
1481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD1, #SD2, #RN, #RM, "memory" \
1491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
1501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: "#SD1" 0x%08x "#SD2" 0x%08x\n", \
1511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], out[1]); \
1521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
1531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
1541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vmov_double_2core(instruction, DD, RN, RM, RNval, RMval) \
1551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
1561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
1571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
1581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf(#RN" 0x%08x "#RM" 0x%08x\t",  RNval, RMval); \
1591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
1601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %1\n\t" \
1611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RM ", %2\n\t" \
1621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #DD ", #0x55\n\t" \
1631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t"\
1641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #DD "}\n\t" \
1651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
1661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (RNval), "r" (RMval) \
1671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #RN, #RM, "memory" \
1681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
1691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: "#DD" 0x%08x 0x%08x\n", \
1701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], out[1]); \
1711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
1721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
1731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vmov_2core_double(instruction, RD1, RD2, DN, DNval0, DNval1) \
1741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
1751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
1761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
1771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf(#DN" 0x%08x 0x%08x\t",  DNval0, DNval1); \
1781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
1791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RD1 ", #55\n\t" \
1801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RD2 ", #55\n\t" \
1811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DN ", %1, %2\n\t" \
1821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
1831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #RD1 ", [%0]\n\t" \
1841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #RD2 ", [%0, #+4]\n\t" \
1851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
1861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (DNval0), "r" (DNval1) \
1871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DN, #RD1, #RD2, "memory" \
1881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
1891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: "#RD1" 0x%08x "#RD2" 0x%08x\n", \
1901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], out[1]); \
1911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
1921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
1931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_un_f64(instruction, DD, DM, DMtype, DMval0, DMval1) \
1941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
1951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
1961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
1971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
1981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #DD ", #0x55" "\n\t" \
1991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DM ", %1, %2 \n\t" \
2001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
2011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #DD "}\n\t" \
2021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
2031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (DMval0), "r" (DMval1) \
2041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #DM, "memory" \
2051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
2061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Dd 0x%08x 0x%08x  Dm (" #DMtype ")0x%08x %08x\n", \
2071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], DMval1, DMval0); \
2081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
2091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
2101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_un_f32(instruction, SD, SM, SMtype, SMval) \
2111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
2121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
2131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
2141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
2151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.f32 " #SM ", %1\n\t" \
2161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.f32 " #SD ", %2\n\t" \
2171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
2181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD "}\n\t" \
2191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
2201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (SMval), "r" (0xffffaaaa) \
2211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #SM, "memory" \
2221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
2231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Sd 0x%08x Sm (" #SMtype ")0x%08x\n", \
2241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], SMval); \
2251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
2261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
2271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_un_cvt_ds(instruction, DD, SM, SMval) \
2281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
2291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
2301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
2311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
2321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SM ", %1\n\t" \
2331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DD ", %2, %2\n\t" \
2341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
2351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #DD "}\n\t" \
2361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
2371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (SMval), "r" (0xffffaaaa) \
2381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #SM, "memory" \
2391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
2401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Dd 0x%08x 0x%08x  Sm 0x%08x\n", \
2411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], SMval); \
2421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
2431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
2441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_un_cvt_sd(instruction, SD, DM, DMval0, DMval1) \
2451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
2461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
2471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
2481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
2491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", %3\n\t" \
2501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DM ", %1, %2\n\t" \
2511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
2521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD "}\n\t" \
2531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
2541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (DMval0), "r" (DMval1), "r" (0xffffaaaa) \
2551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #DM, "memory" \
2561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
2571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Sd 0x%08x  Dm 0x%08x %08x\n", \
2581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], DMval1, DMval0); \
2591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
2601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
2611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_cvt_i32_f64(instruction, SD, DM, DMval0, DMval1) \
2621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
2631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
2641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
2651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
2661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DM ", %1, %2\n\t" \
2671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", %3\n\t" \
2681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
2691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD "}\n\t" \
2701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
2711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (DMval0), "r" (DMval1), "r" (0xffffaaaa) \
2721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #DM, "memory" \
2731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
2741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj printf("%s :: Sd 0x%08x Dm 0x%08x %08x\n", \
2751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], DMval1, DMval0); \
2761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
2771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
2781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_cvt_f64_i32(instruction, DD, SM, SMval) \
2791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
2801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
2811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
2821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
2831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SM ", %1\n\t" \
2841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DD ", %2, %2\n\t" \
2851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
2861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #DD "}\n\t" \
2871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
2881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (SMval), "r" (0xfffffff0) \
2891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #SM, "memory" \
2901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
2911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj printf("%s :: Dd 0x%08x %08x Sm 0x%08x\n", \
2921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], out[1], SMval); \
2931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
2941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
2951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_un_f64_q_vmrs(instruction, DD, DM, DMtype, DMval, RN) \
2961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
2971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
2981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int fpscr; \
2991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
3001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
3011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #DD ", #0x55" "\n\t" \
3021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov r4, #0\n\t" \
3031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ".word 0xEEE14A10 @ vmsr FPSCR, "#RN"\n\t" \
3041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vdup." #DMtype " " #DM ", %2\n\t" \
3051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
3061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %1, {" #DD "}\n\t" \
3071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ".word 0xEEF14A10 @ vmrs "#RN", FPSCR\n\t" \
3081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov %0, r4" \
3091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "=r" (fpscr) \
3101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (DMval) \
3111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #DM, "memory", #RN \
3121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
3131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Dd 0x%08x 0x%08x  Dm (" #DMtype ")0x%08x  fpscr %08x\n", \
3141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], DMval, fpscr); \
3151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
3161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
3171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_core_to_scalar(instruction, DD, DM, DMval) \
3181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
3191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
3201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
3211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
3221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #DD ", #0x55" "\n\t" \
3231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #DM ", %1\n\t" \
3241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
3251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #DD "}\n\t" \
3261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
3271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (DMval) \
3281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #DM, "memory" \
3291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
3301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Dd 0x%08x 0x%08x  Dm 0x%08x\n", \
3311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], DMval); \
3321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
3331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
3341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vldr_f64(instruction, DD, RN, RNval, imm) \
3351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
3361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
3371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
3381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
3391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #DD ", #0x55" "\n\t" \
3401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %1\n\t" \
3411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
3421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #DD "}\n\t" \
3431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
3441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (RNval) \
3451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #RN, "memory" \
3461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
3471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Dd 0x%08x 0x%08x  *(int*) (Rn + shift) 0x%04x\n", \
3481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], *(int*) (RNval + imm)); \
3491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
3501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
3511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vldr_f32(instruction, SD, RN, RNval, imm) \
3521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
3531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
3541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
3551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
3561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", %3" "\n\t" \
3571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %1\n\t" \
3581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
3591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD "}\n\t" \
3601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
3611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (RNval), "r" (imm), "r" (0xffffffaa) \
3621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #RN, "memory" \
3631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
3641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Sd 0x%08x  *(int*) (Rn + shift) 0x%04x\n", \
3651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], *(int*) (RNval + imm)); \
3661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
3671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
3681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vstr64(instruction, DD, DDval, RM, RMval, imm) \
3691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
3701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
3711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
3721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
3731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #DD ", #" #DDval "\n\t" \
3741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "add %1, %1, #" #imm "\n\t" \
3751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RM ", #0x55\n\t" \
3761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #RM ", [%1]\n\t" \
3771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #RM ", [%1, #4]\n\t" \
3781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "sub %1, %1, #" #imm "\n\t" \
3791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RM ", %1\n\t" \
3801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
3811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #DD "}\n\t" \
3821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
3831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (RMval) \
3841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #RM, "memory" \
3851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
3861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Dd 0x%08x 0x%08x  *(int*) (Rm + shift) 0x%04x\n", \
3871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], *(int*) (RMval + imm)); \
3881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
3891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
3901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vstr32(instruction, SD, RM, RMval, imm) \
3911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
3921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
3931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
3941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
3951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", #0xbe280000\n\t" \
3961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RM ", #0x55\n\t" \
3971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #RM ", [%1, #" #imm "]\n\t" \
3981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RM ", %1\n\t" \
3991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
4001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD "}\n\t" \
4011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
4021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (RMval) \
4031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #RM, "memory" \
4041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
4051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Sd 0x%08x,  *(int*) (Rm + shift) 0x%04x\n", \
4061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], *(int*) (RMval + imm)); \
4071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
4081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
4091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \
4101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
4111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
4121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
4131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
4141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #QD ", #0x55" "\n\t" \
4151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vdup." #QMtype " " #QM ", %1\n\t" \
4161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
4171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str " #QD ", [%0]\n\t" \
4181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
4191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (QMval) \
4201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD, #QM, "memory" \
4211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
4221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Rd 0x%08x  Qm (" #QMtype ")0x%08x\n", \
4231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], QMval); \
4241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
4251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
4261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \
4271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
4281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[8]; \
4291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
4301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
4311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD1 ", #0x55" "\n\t" \
4321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD2 ", #0x55" "\n\t" \
4331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD3 ", #0x55" "\n\t" \
4341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD4 ", #0x55" "\n\t" \
4351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction ", [%1]\n\t" \
4361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov r4, %0\n\t" \
4371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {" #QD1 "}\n\t" \
4381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {" #QD2 "}\n\t" \
4391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {" #QD3 "}\n\t" \
4401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {" #QD4 "}\n\t" \
4411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov %0, r4\n\t" \
4421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
4431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (mem) \
4441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
4451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
4461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
4471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj          "0x%08x 0x%08x 0x%08x 0x%08x\n", \
4481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], out[1], out[2], out[3], out[4],\
4491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj          out[5], out[6], out[7]); \
4501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
4511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
4521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VSTMIAnoWB(instruction, RN, QD, QDval) \
4531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
4541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
4551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
4561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
4571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD ", " #QDval "\n\t" \
4581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %0\n\t" \
4591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
4601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
4611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (mem) \
4621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD, "memory", #RN \
4631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
4641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Result 0x%08x 0x%08x\n", \
4651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], out[1]); \
4661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
4671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
4681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VSTMIAnoWB32(instruction, RN, SD, SDval) \
4691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
4701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
4711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
4721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
4731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", %2\n\t" \
4741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %0\n\t" \
4751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
4761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
4771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (mem), "r" (SDval) \
4781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, "memory", #RN \
4791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
4801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Result 0x%08x\n", \
4811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0]); \
4821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
4831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
4841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VSTMIAWB(RN, QD1, QD2) \
4851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
4861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[4]; \
4871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
4881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
4891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD1 ", #0xa0" "\n\t"  \
4901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD2 ", #0xb1" "\n\t" \
4911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %0\n\t" \
4921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN "!, {" #QD1 "}\n\t" \
4931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN "!, {" #QD2 "}\n\t" \
4941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
4951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (mem) \
4961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD1, #QD2, "memory", #RN \
4971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
4981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("vstmia "#RN"!, "#QD1"; vstmia "#RN"!, "#QD2" :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
4991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj         out[0], out[1], out[2], out[3]); \
5001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
5011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
5021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VSTMIAWB32(RN, SD1, SD2) \
5031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
5041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
5051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
5061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
5071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD1 ", #0xbff80000" "\n\t" \
5081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD2 ", #0x3fa80000" "\n\t" \
5091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %0\n\t" \
5101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN "!, {" #SD1 "}\n\t" \
5111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN "!, {" #SD2 "}\n\t" \
5121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
5131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (mem) \
5141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD1, #SD2, "memory", #RN \
5151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
5161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("vstmia " #RN "!, "#SD1"; vstmia "#RN"!, "#SD2" :: Result 0x%08x 0x%08x\n", \
5171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj         out[0], out[1]); \
5181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
5191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
5201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VSTMDB(RN, QD1, QD2) \
5211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
5221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    unsigned int out[4]; \
5231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    long endout = (long) out + 8; \
5241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
5251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
5261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD1 ", #0xaa" "\n\t" \
5271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD2 ", #0xbb" "\n\t" \
5281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %0\n\t" \
5291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmdb " #RN "!, {" #QD1 "}\n\t" \
5301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmdb " #RN "!, {" #QD2 "}\n\t" \
5311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov %0, " #RN "\n\t" \
5321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
5331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (endout), "r" (mem) \
5341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD1, #QD2, "memory", #RN \
5351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
5361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("vstmdb " #RN "!, " #QD2 "; vstmdb " #RN "!, " #QD2 \
5371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj         " :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
5381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj         out[0], out[1], out[2], out[3]); \
5391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
5401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
5411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VLDMIAnoWB(instruction, RN, QD) \
5421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
5431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int in[2] = {0xaa0, 0xbb1}; \
5441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
5451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
5461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
5471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD ", #0x55" "\n\t" \
5481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %0\n\t" \
5491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
5501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %1\n\t" \
5511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN ", {" #QD "}\n\t" \
5521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
5531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (in), "r" (out), "r" (mem) \
5541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD, "memory", #RN \
5551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
5561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
5571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj         instruction, out[0], out[1], out[2], out[3]); \
5581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
5591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
5601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VLDMIAWB(RN, QD1, QD2) \
5611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
5621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int in[4] = {0xaa0, 0xbb1, 0xcc2, 0xdd3}; \
5631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[4]; \
5641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
5651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
5661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD1 ", #0x55" "\n\t" \
5671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD2 ", #0x55" "\n\t" \
5681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %0\n\t" \
5691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vldmia " #RN "!, {" #QD1 "}\n\t" \
5701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vldmia " #RN "!, {" #QD2 "}\n\t" \
5711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %1\n\t" \
5721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN "!, {" #QD1 "}\n\t" \
5731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN "!, {" #QD2 "}\n\t" \
5741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
5751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (in), "r" (out), "r" (mem) \
5761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD1, #QD2, "memory", #RN \
5771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
5781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("vldmia rN!, qD1; vldmia rN!, qD2 :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
5791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj         out[0], out[1], out[2], out[3]); \
5801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
5811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
5821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VLDMDB(RN, QD1, QD2) \
5831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
5841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    unsigned int in[4] = {0xaa0, 0xbb1, 0xcc2, 0xdd3}; \
5851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    unsigned int out[4]; \
5861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    long endin = (long) in + 16; \
5871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
5881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
5891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD1 ", #0x55" "\n\t" \
5901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD2 ", #0x55" "\n\t" \
5911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %0\n\t" \
5921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vldmdb " #RN "!, {" #QD1 "}\n\t" \
5931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vldmdb " #RN "!, {" #QD2 "}\n\t" \
5941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #RN ", %1\n\t" \
5951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN "!, {" #QD1 "}\n\t" \
5961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia " #RN "!, {" #QD2 "}\n\t" \
5971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
5981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (endin), "r" (out), "r" (mem) \
5991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD1, #QD2, "memory", #RN \
6001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
6011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("vldmdb rN!, qD1; vldmia rN!, qD2 :: Result 0x%08x 0x%08x 0x%08x 0x%08x\n", \
6021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj         out[0], out[1], out[2], out[3]); \
6031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
6041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
6051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VLDR(instruction, dD, rN, rNval, offset) \
6061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
6071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
6081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
6091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
6101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #dD ", #0x55\n\t" \
6111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov " #rN ", %1\n\t" \
6121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction ", #" #offset "]\n\t" \
6131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #dD "}\n\t" \
6141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
6151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (rNval) \
6161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #dD, "memory" \
6171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
6181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      printf("%s :: dD 0x%08x 0x%08x  rN 0x%08x\n", \
6191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], rNval); \
6201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
6211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
6221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
6231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vpush_vpop_f32(S1, Sval1, S2, Sval2, S3, Sval3, S4, S5, S6) \
6241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
6251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[6]; \
6261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
6271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
6281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#S4", %4\n\t" \
6291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#S5", %4\n\t" \
6301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#S6", %4\n\t" \
6311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#S1", %1\n\t" \
6321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#S2", %2\n\t" \
6331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#S3", %3\n\t" \
6341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vpush {"#S1", "#S2"}\n\t" \
6351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vpush {"#S3"}\n\t" \
6361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vpop  {"#S4"}\n\t" \
6371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vpop  {"#S5", "#S6"}\n\t" \
6381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov r4, %0\n\t" \
6391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#S1"}\n\t" \
6401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#S2"}\n\t" \
6411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#S3"}\n\t" \
6421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#S4"}\n\t" \
6431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#S5"}\n\t" \
6441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#S6"}\n\t" \
6451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov %0, r4\n\t" \
6461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
6471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (Sval1), "r" (Sval2), "r" (Sval3), "r" (0x55555555) \
6481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #S1, #S2, #S3, #S4, #S5, #S6, "r4", "memory" \
6491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
6501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      printf(#S1" 0x%08x "#S2" 0x%08x "#S3" 0x%08x "#S4" 0x%08x "\
6511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj             #S5" 0x%08x "#S6" 0x%08x\n", out[0], out[1],\
6521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj             out[2], out[3], out[4], out[5]); \
6531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
6541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
6551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_vpush_vpop_f64(D1, Dval10, Dval11, D2, Dval20, Dval21, D3, D4) \
6561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
6571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[8]; \
6581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
6591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
6601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#D3", %4, %4\n\t" \
6611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#D4", %4, %4\n\t" \
6621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#D1", %1, %2\n\t" \
6631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov "#D2", %3, %4\n\t" \
6641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vpush {"#D1", "#D2"}\n\t" \
6651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vpop  {"#D3", "#D4"}\n\t" \
6661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov r4, %0\n\t" \
6671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#D1"}\n\t" \
6681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#D2"}\n\t" \
6691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#D3"}\n\t" \
6701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0!, {"#D4"}\n\t" \
6711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov %0, r4\n\t" \
6721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
6731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (Dval10), "r" (Dval11), "r" (Dval20), "r" (Dval21), "r" (0x55555555) \
6741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #D1, #D2, #D3, #D4, "r4", "memory" \
6751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
6761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      printf(#D1" 0x%08x %08x "#D2" 0x%08x %08x "#D3" 0x%08x %08x "#D4" 0x%08x %08x\n",\
6771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj                  out[0],out[1],    out[2],out[3],    out[4],out[5],    out[6],out[7]); \
6781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
6791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
6801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \
6811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
6821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[8]; \
6831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
6841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  memset(out, 0x55, 8 * (sizeof(unsigned int)));\
6851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
6861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov r4, %1\n\t" \
6871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vldmia %1!, {" #QD1 "}\n\t" \
6881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vldmia %1!, {" #QD2 "}\n\t" \
6891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vldmia %1!, {" #QD3 "}\n\t" \
6901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vldmia %1!, {" #QD4 "}\n\t" \
6911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov %1, r4\n\t" \
6921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction ", [%0]\n\t" \
6931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
6941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (mem) \
6951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \
6961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
6971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\
6981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj          "0x%08x 0x%08x 0x%08x 0x%08x\n", \
6991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], out[1], out[2], out[3], out[4],\
7001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj          out[5], out[6], out[7]); \
7011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
7021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
7031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \
7041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
7051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
7061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
7071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
7081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.i8 " #QD ", #0x55" "\n\t" \
7091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vdup." #QMtype " " #QM ", %1\n\t" \
7101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vdup." #QNtype " " #QN ", %2\n\t" \
7111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
7121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #QD "}\n\t" \
7131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
7141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (QMval), "r" (QNval) \
7151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD, #QM, #QN, "memory" \
7161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
7171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Qd 0x%08x 0x%08x  Qm (" #QMtype ")0x%08x" \
7181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "  Qn (" #QNtype ")0x%08x\n", \
7191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], QMval, QNval); \
7201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
7211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
7221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_bin_f64(instruction, QD, QM, QMtype, QMval0, QMval1, QN, QNtype, QNval0, QNval1) \
7231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
7241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[2]; \
7251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
7261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
7271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vdup.i32 " #QD ", %5\n\t" \
7281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #QM ", %1, %2 \n\t" \
7291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #QN ", %3, %4 \n\t" \
7301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
7311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #QD "}\n\t" \
7321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
7331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (QMval0), "r" (QMval1), "r" (QNval0), "r" (QNval1), "r"(0x3f800000) \
7341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #QD, #QM, #QN, "memory" \
7351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
7361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Qd 0x%08x 0x%08x  Qm 0x%08x %08x" \
7371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "  Qn 0x%08x %08x\n", \
7381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[1], out[0], QMval1, QMval0, QNval1, QNval0); \
7391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
7401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
7411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_bin_f32(instruction, SD, SM, SMtype, SMval, SN, SNtype, SNval) \
7421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
7431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
7441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
7451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
7461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.f32 " #SM ", %1\n\t" \
7471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.f32 " #SN ", %2\n\t" \
7481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov.f32 " #SD ", %3\n\t" \
7491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
7501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD "}\n\t" \
7511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
7521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (SMval), "r" (SNval), "r" (0xaaaaaaaa) \
7531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #SM, #SN, "memory" \
7541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
7551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: Sd 0x%08x Sm (" #SMtype ")0x%08x" \
7561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "  Sn (" #SNtype ")0x%08x\n", \
7571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0], SMval, SNval); \
7581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
7591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
7601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_cmp_f64(instruction, DD, DDval0, DDval1, DM, DMval0, DMval1) \
7611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
7621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
7631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
7641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
7651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DD ", %1, %2\n\t" \
7661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DM ", %3, %4\n\t" \
7671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov r4, #0\n\t" \
7681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      MOVE_to_FPSCR_from_R4 \
7691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
7701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      MOVE_to_R4_from_FPSCR \
7711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str r4, [%0]\n\t" \
7721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
7731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (DDval0), "r" (DDval1),"r" (DMval0), "r" (DMval1) \
7741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, #DM, "r4", "memory" \
7751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
7761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: FPSCR 0x%08x  Dd 0x%08x %08x" \
7771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "  Dm 0x%08x %08x\n", \
7781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0] & 0xffffff60, DDval1, DDval0, DMval1, DMval0); \
7791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
7801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
7811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_cmp_f32(instruction, SD, SDval, SM, SMval) \
7821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
7831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
7841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
7851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
7861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", %1\n\t" \
7871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SM ", %2\n\t" \
7881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "mov r4, #0\n\t" \
7891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      MOVE_to_FPSCR_from_R4 \
7901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction "\n\t" \
7911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      MOVE_to_R4_from_FPSCR \
7921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str r4, [%0]\n\t" \
7931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
7941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (SDval),"r" (SMval) \
7951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, #SM, "r4", "memory" \
7961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
7971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: FPSCR 0x%01x  Sd 0x%08x" \
7981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "  Sm 0x%08x\n", \
7991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, (out[0] & 0xf0000000) >> 28, SDval, SMval); \
8001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
8011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
8021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_cmpz_f32(instruction, SD, SDval) \
8031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
8041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
8051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
8061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
8071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", %1\n\t" \
8081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction ", #0\n\t" \
8091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      MOVE_to_R4_from_FPSCR \
8101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #SD ", r4\n\t" \
8111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vstmia %0, {" #SD "}\n\t" \
8121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
8131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (SDval)\
8141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #SD, "r4", "memory" \
8151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
8161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: FPSCR 0x%08x  Sd 0x%08x\n", \
8171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0] & 0xffffff60, SDval); \
8181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
8191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
8201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj#define TESTINSN_cmpz_f64(instruction, DD, DDval0, DDval1) \
8211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{ \
8221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  unsigned int out[1]; \
8231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj\
8241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  __asm__ volatile( \
8251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "vmov " #DD ", %1, %2\n\t" \
8261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction ", #0\n\t" \
8271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      MOVE_to_R4_from_FPSCR \
8281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      "str r4, [%0]\n\t" \
8291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : \
8301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : "r" (out), "r" (DDval0), "r" (DDval1) \
8311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      : #DD, "r4", "memory" \
8321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      ); \
8331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj  printf("%s :: FPSCR 0x%08x  Dd 0x%08x %08x\n", \
8341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj      instruction, out[0] & 0xffffff60, DDval1, DDval0); \
8351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
8361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
8371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardjstatic void do_vldm_vstm_check(void)
8381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{
8391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    int i;
8401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    const char *format = "\t0x%08x\n";
8411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    unsigned int data[] = {
8421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        0x1a1b1c1d, 0x2a2b2c2d, 0x3a3b3c3d, 0x4a4b4c4d,
8431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        0x5a5b5c5d, 0x6a6b6c6d, 0x7a7b7c7d, 0x8a8b8c8d,
8441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        0x9a9b9c9d, 0xaaabacad, 0xbabbbcbd, 0xcacbcccd,
8451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        0xdadbdcdd, 0xeaebeced, 0xfafbfcfd, 0x0a0b0c0d
8461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    };
8471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    unsigned int res;
8481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("do_vldm_vstm_check:\n");
8491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    __asm__ volatile(
8501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, %0\n\t"
851a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vldmia r1!, {s16, s17, s18, s19}\n\t"
8521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
8531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
8541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
857a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov r1, s18\n\t"
8581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
861a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov r1, s19\n\t"
8621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
865a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov r1, s16\n\t"
8661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
8691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #32\n\t"
870a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vldmdb r1!, {s25, s26}\n\t"
8711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
8721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
8731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
876a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov r1, s25\n\t"
8771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
880a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov r1, s26\n\t"
8811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
8841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #4\n\t"
885a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vldmia r1, {s20, s21, s22, s23}\n\t"
8861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
8871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
8881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
891a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov r1, s22\n\t"
8921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
895a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov r1, s23\n\t"
8961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
8971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
8981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
899a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov r1, s20\n\t"
9001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
9031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #48\n\t"
9041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vldmia r1!, {d30, d31}\n\t"
9051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
9071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov r1, r5, d30\n\t"
9111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, r5\n\t"
9151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov r1, r5, d31\n\t"
9191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, r5\n\t"
9231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
9261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #44\n\t"
9271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vldmia r1, {d30, d31}\n\t"
9281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
9301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov r1, r5, d30\n\t"
9341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, r5\n\t"
9381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov r1, r5, d31\n\t"
9421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, r5\n\t"
9461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
9491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #40\n\t"
9501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vldmdb r1!, {d30, d31}\n\t"
9511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
9531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov r1, r5, d30\n\t"
9571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, r5\n\t"
9611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov r1, r5, d31\n\t"
9651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, r5\n\t"
9691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
9721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x55\n\t"
973a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov s20, r0\n\t"
9741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x56\n\t"
975a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov s21, r0\n\t"
9761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x57\n\t"
977a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov s22, r0\n\t"
9781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x58\n\t"
979a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vmov s23, r0\n\t"
9801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #0\n\t"
981a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes            "vstmia r1!, {s20, s21, s22, s23}\n\t"
9821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
9841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
9871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x65\n\t"
9881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov s16, r0\n\t"
9891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x66\n\t"
9901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov s17, r0\n\t"
9911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #16\n\t"
9921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vstmia r1, {s16, s17}\n\t"
9931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
9941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
9951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
9961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
9971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
9981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x75\n\t"
9991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov s16, r0\n\t"
10001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x76\n\t"
10011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov s17, r0\n\t"
10021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #32\n\t"
10031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vstmdb r1!, {s16, s17}\n\t"
10041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
10051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
10061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
10071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
10081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
10091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x42\n\t"
10101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, #0x43\n\t"
10111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov d30, r0, r1\n\t"
10121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x40\n\t"
10131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, #0x41\n\t"
10141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov d31, r0, r1\n\t"
10151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x57\n\t"
10161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #32\n\t"
10171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vstmia r1!, {d30, d31}\n\t"
10181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
10191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
10201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
10211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
10221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
10231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x32\n\t"
10241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, #0x33\n\t"
10251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov d10, r0, r1\n\t"
10261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x57\n\t"
10271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #48\n\t"
10281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vstmia r1, {d10}\n\t"
10291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
10301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
10311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
10321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
10331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/* --- */
10341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x22\n\t"
10351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r1, #0x23\n\t"
10361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vmov d10, r0, r1\n\t"
10371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, #0x57\n\t"
10381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "add r1, %0, #64\n\t"
10391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "vstmdb r1!, {d10}\n\t"
10401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r0, %1\n\t"
10411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "sub r1, r1, %0\n\t"
10421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "mov r3, r1\n\t"
10431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj            "bl printf\n\t"
10441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        :
10451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        : "r" (data), "r" (format), "r"(&res)
10461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        : "r0", "r1", "r2", "r3", "r5", "r12", "r14", "memory",
1047a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes          "s0", "s1", "s2", "s3", "s5", "s6", "s16", "s17", "s18", "s19",
1048a0664b9ca67b594bd6f570a61d3301167a24750cElliott Hughes          "s20", "s21", "s22", "s23", "s25", "s26",
10491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj          "d10", "d30", "d31"
10501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        );
10511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("data:\n");
10521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    for (i = 0; i < 16; i++) {
10531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj        printf("\t0x%08x\n", data[i]);
10541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    }
10551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
10561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
10571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardjint main(int argc, char **argv)
10581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj{
10591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    do_vldm_vstm_check();
10601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
10611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VMOV (ARM core register to scalar) ----\n");
10621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.32 d0[0],  r5", d0,  r5, f2u(13));
10631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.32 d1[1],  r6", d1,  r6, 0x12);
10641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.32 d20[0], r5", d20, r5, f2u(NAN));
10651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.32 d29[1], r6", d29, r6, f2u(172));
10661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.32 d30[0], r5", d30, r5, f2u(INFINITY));
10671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.32 d11[1], r6", d11, r6, f2u(-INFINITY));
10681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.32 d18[0], r5", d11, r5, f2u(653));
10691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.32 d9[1],  r6", d9,  r6, 12);
10701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.16 d0[0],  r5", d0,  r5, 13);
10711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.16 d14[1], r5", d14, r5, f2u(NAN));
10721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.16 d28[2], r6", d28, r6, 14);
10731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.16 d30[3], r1", d30, r1, 17);
10741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.16 d0[0],  r5", d0,  r5, f2u(INFINITY));
10751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.16 d7[1],  r5", d7,  r5, f2u(-INFINITY));
10761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.16 d21[2], r6", d21, r6, 14);
10771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.16 d17[3], r1", d17, r1, 17);
10781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.8  d0[0],  r5", d0,  r5, 13);
10791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.8  d10[1], r5", d10, r5, f2u(NAN));
10801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.8  d20[2], r5", d20, r5, f2u(INFINITY));
10811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.8  d30[3], r5", d30, r5, f2u(-INFINITY));
10821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.8  d13[4], r5", d13, r5, 213);
10831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.8  d17[5], r5", d17, r5, 1343);
10841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.8  d24[6], r5", d24, r5, 111);
10851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_core_to_scalar("vmov.8  d29[7], r5", d29, r5, 173);
10861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
10871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VMOV (scalar to ARM core register) ----\n");
10881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.32   r5,  d0[0]",  r5,  d0,  i32, f2u(NAN));
10891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.32   r6,  d5[1]",  r6,  d5,  i32, f2u(INFINITY));
10901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.32   r4,  d10[0]", r4,  d10, i32, f2u(-INFINITY));
10911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.32   r5,  d15[1]", r5,  d15, i32, 0x11223344);
10921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.32   r9, d20[0]", r9, d20, i32, 0x11223344);
10931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.32   r8,  d25[1]", r8,  d25, i32, 0x11223344);
10941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.32   r0,  d30[0]", r0,  d30, i32, 0x11223344);
10951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.32   r2,  d19[1]", r2,  d19, i32, 0x11223344);
10961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u16  r5,  d31[0]", r5,  d31, i32, f2u(NAN));
10971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u16  r3,  d30[1]", r3,  d30, i32, f2u(INFINITY));
10981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u16  r6,  d21[2]", r6,  d21, i32, f2u(-INFINITY));
10991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u16  r9, d26[3]", r9, d26, i32, 0x11223344);
11001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u16  r12, d11[0]", r12, d11, i32, 0x11223344);
11011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u16  r0,  d10[1]", r0,  d10, i32, 0x11223344);
11021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u16  r6,  d1[2]",  r6,  d1,  i32, 0x11223344);
11031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u16  r8,  d5[3]",  r8,  d5,  i32, 0x11223344);
11041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u8   r2,  d4[0]",  r2,  d4,  i32, f2u(NAN));
11051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u8   r6,  d14[1]", r6,  d14, i32, f2u(INFINITY));
11061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u8   r9, d24[2]", r9, d24, i32, f2u(-INFINITY));
11071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u8   r8,  d31[3]", r8,  d31, i32, 0x11223344);
11081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u8   r10, d29[4]", r10, d29, i32, 0x11223344);
11091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u8   r3,  d19[5]", r3,  d19, i32, 0x11223344);
11101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u8   r12, d12[6]", r12, d12, i32, 0x11223344);
11111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.u8   r10, d18[4]", r10, d18, i32, 0x11223344);
11121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s16  r5,  d31[0]", r5,  d31, i32, f2u(NAN));
11131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s16  r3,  d30[1]", r3,  d30, i32, f2u(INFINITY));
11141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s16  r6,  d21[2]", r6,  d21, i32, f2u(-INFINITY));
11151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s16  r9, d26[3]", r9, d26, i32, 0x11223344);
11161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s16  r4,  d11[0]", r4,  d11, i32, 0x11223344);
11171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s16  r0,  d10[1]", r0,  d10, i32, 0x11223344);
11181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s16  r6,  d1[2]",  r6,  d1,  i32, 0x11223344);
11191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s16  r8,  d5[3]",  r8,  d5,  i32, 0x11223344);
11201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s8   r2,  d4[0]",  r2,  d4,  i32, f2u(NAN));
11211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s8   r6,  d14[1]", r6,  d14, i32, f2u(INFINITY));
11221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s8   r9, d24[2]", r9, d24, i32, f2u(-INFINITY));
11231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s8   r8,  d31[3]", r8,  d31, i32, 0x11223344);
11241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s8   r6,  d29[4]", r6,  d29, i32, 0x11223344);
11251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s8   r3,  d19[5]", r3,  d19, i32, 0x11223344);
11261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s8   r12, d12[6]", r12, d12, i32, 0x11223344);
11271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_scalar_to_core("vmov.s8   r10, d18[7]", r10, d18, i32, 0x11223344);
11281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
11291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VMLA (fp) ----\n");
11301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
11311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
11321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
11331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
11341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
11351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
11371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
11381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
11391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
11411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
11421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
11431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
11461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
11471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
11481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
11491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
11501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
11521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
11531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmla.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
11541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
11551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
11561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
11571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
11581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
11591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
11601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
11611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
11621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
11631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
11641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
11651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
11661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
11671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
11681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
11691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
11701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
11711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
11721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
11731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
11741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
11751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
11761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
11771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmla.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
11781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
11791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VNMLA (fp) ----\n");
11801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
11811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
11821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
11831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
11841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
11851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
11871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
11881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
11891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
11911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
11921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
11931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
11951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
11961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
11971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
11981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
11991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
12001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
12021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
12031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmla.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
12041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
12051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
12061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
12071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
12081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
12091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
12101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
12111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
12121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
12131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
12141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
12151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
12161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
12171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
12181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
12191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
12201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
12211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
12221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752.));
12231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
12241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
12251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
12261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
12271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmla.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
12281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
12291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VMLS (fp) ----\n");
12301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
12311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
12321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
12331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
12341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
12351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
12371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
12381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
12391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
12411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
12421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
12431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
12461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
12471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
12481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
12491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
12501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
12521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
12531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmls.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
12541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
12551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
12561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
12571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
12581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
12591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
12601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
12611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
12621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
12631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
12641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
12651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
12661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
12671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
12681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
12691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
12701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
12711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
12721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
12731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
12741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
12751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
12761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
12771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmls.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
12781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
12791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VNMLS (fp) ----\n");
12801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
12811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
12821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
12831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
12841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
12851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
12871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
12881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
12891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
12911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
12921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
12931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
12951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
12961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
12971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
12981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
12991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
13001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
13021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
13031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmls.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
13041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
13051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
13061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
13071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
13081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
13091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
13101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
13111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
13121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
13131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
13141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
13151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
13161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
13171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
13181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
13191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
13201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
13211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
13221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
13231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
13241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
13251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
13261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
13271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmls.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
13281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
13291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VMUL (fp) ----\n");
13301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
13311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
13321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
13331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
13341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
13351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
13371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
13381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
13391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
13411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
13421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
13431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
13461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
13471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
13481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
13491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
13501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
13521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
13531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vmul.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
13541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
13551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
13561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
13571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
13581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
13591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
13601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
13611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
13621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
13631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
13641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
13651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
13661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
13671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
13681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
13691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
13701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
13711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
13721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
13731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
13741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
13751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
13761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
13771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vmul.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
13781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
13791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VNMUL (fp) ----\n");
13801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
13811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
13821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
13831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
13841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
13851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
13871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
13881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
13891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
13911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
13921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
13931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
13951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
13961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
13971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
13981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
13991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
14001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
14021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
14031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vnmul.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
14041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
14051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
14061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
14071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
14081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
14091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
14101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
14111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
14121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
14131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
14141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
14151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
14161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
14171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
14181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
14191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
14201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
14211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
14221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
14231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
14241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
14251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
14261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
14271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vnmul.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
14281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
14291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VADD (fp) ----\n");
14301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
14311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
14321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
14331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
14341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
14351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
14371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
14381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
14391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
14411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
14421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
14431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
14461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
14471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
14481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
14491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
14501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
14521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
14531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vadd.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
14541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
14551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
14561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
14571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
14581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
14591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
14601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
14611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
14621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
14631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
14641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
14651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
14661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
14671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
14681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
14691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
14701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
14711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
14721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
14731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
14741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
14751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
14761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
14771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vadd.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
14781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
14791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VSUB (fp) ----\n");
14801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d0,  d11, d12", d0,  d11, i32, f2u0(-INFINITY), f2u1(-INFINITY), d12, i32, f2u0(NAN), f2u1(NAN));
14811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d7,  d1,  d6",  d7,  d1,  i32, f2u0(INFINITY), f2u1(INFINITY), d6, i32, f2u0(NAN), f2u1(NAN));
14821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(NAN), f2u1(NAN), d2, i32, f2u0(-1.0), f2u1(-1.0));
14831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(0.0), f2u1(0.0));
14841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d10, d13, d15", d10, d13, i32, f2u0(NAN), f2u1(NAN), d15, i32, f2u0(NAN), f2u1(NAN));
14851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
14871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
14881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
14891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
14911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
14921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
14931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
14951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
14961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
14971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
14981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
14991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
15001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
15011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
15021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
15031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vsub.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
15041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s0,  s11, s12", s0,  s11, i32, f2u(-INFINITY), s12, i32, f2u(NAN));
15051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s7,  s1,  s6",  s7,  s1,  i32, f2u(INFINITY), s6, i32, f2u(NAN));
15061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(NAN), s2, i32, f2u(-1.0));
15071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(0.0));
15081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s10, s13, s15", s10, s13, i32, f2u(NAN), s15, i32, f2u(NAN));
15091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
15101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
15111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
15121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
15131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
15141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
15151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
15161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
15171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
15181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
15191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
15201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
15211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
15221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
15231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
15241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
15251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
15261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
15271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vsub.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
15281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
15291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VDIV (fp) ----\n");
15301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
15311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d23, d24, d25", d23, d24, i32, f2u0(-347856.475), f2u1(-347856.475), d25, i32, f2u0(1346), f2u1(1346));
15321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d20, d31, d12", d20, d31, i32, f2u0(48755), f2u1(48755), d12, i32, f2u0(-45786.476), f2u1(-45786.476));
15331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d19, d25, d27", d19, d25, i32, f2u0(95867.76), f2u1(95867.76), d27, i32, f2u0(17065), f2u1(17065));
15341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
15351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d23, d24, d5",  d23, d24, i32, f2u0(24), f2u1(24), d5, i32, f2u0(1346), f2u1(1346));
15361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d10, d11, d2",  d10, d11, i32, f2u0(48755), f2u1(48755), d2, i32, f2u0(1089), f2u1(1089));
15371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d29, d15, d7",  d29, d15, i32, f2u0(214), f2u1(214), d7, i32, f2u0(1752065), f2u1(1752065));
15381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
15391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
15401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d30, d31, d2",  d30, d31, i32, f2u0(2754), f2u1(2754), d2, i32, f2u0(107), f2u1(107));
15411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d13, d24, d5",  d13, d24, i32, f2u0(874), f2u1(874), d5, i32, f2u0(1384.6), f2u1(1384.6));
15421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d10, d11, d2",  d10, d11, i32, f2u0(487.587), f2u1(487.587), d2, i32, f2u0(109), f2u1(109));
15431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d29, d25, d7",  d29, d25, i32, f2u0(-INFINITY), f2u1(-INFINITY), d7, i32, f2u0(1752), f2u1(1752));
15441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d0,  d11, d12", d0,  d11, i32, f2u0(INFINITY), f2u1(INFINITY), d12, i32, f2u0(-5786.47), f2u1(-5786.47));
15451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
15461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d0,  d5,  d2",  d0,  d5,  i32, f2u0(INFINITY), f2u1(INFINITY), d2, i32, f2u0(-INFINITY), f2u1(-INFINITY));
15471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d20, d13, d15", d20, d13, i32, f2u0(-INFINITY), f2u1(-INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
15481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f64("vdiv.f64 d10, d23, d15", d10, d23, i32, f2u0(INFINITY), f2u1(INFINITY), d15, i32, f2u0(0.0), f2u1(0.0));
15491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s20, s25, s22", s20, s25, i32, f2u(23.04), s22, i32, f2u(-45.5687));
15501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s23, s24, s25", s23, s24, i32, f2u(-347856.475), s25, i32, f2u(1346));
15511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s20, s31, s12", s20, s31, i32, f2u(48755), s12, i32, f2u(-45786.476));
15521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s19, s25, s27", s19, s25, i32, f2u(95867.76), s27, i32, f2u(17065));
15531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s30, s15, s2",  s30, s15, i32, f2u(-45667.24), s2, i32, f2u(-248562.76));
15541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s23, s24, s5",  s23, s24, i32, f2u(24), s5, i32, f2u(1346));
15551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s10, s11, s2",  s10, s11, i32, f2u(48755), s2, i32, f2u(1089));
15561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s29, s15, s7",  s29, s15, i32, f2u(214), s7, i32, f2u(1752065));
15571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s30, s11, s12", s30, s11, i32, f2u(356047.56), s12, i32, f2u(5867.009));
15581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s27, s21, s6",  s27, s21, i32, f2u(34.00046), s6, i32, f2u(0.0024575));
15591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s30, s31, s2",  s30, s31, i32, f2u(2754), s2, i32, f2u(107));
15601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s13, s24, s5",  s13, s24, i32, f2u(874), s5, i32, f2u(1384.6));
15611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s10, s11, s2",  s10, s11, i32, f2u(487.587), s2, i32, f2u(109));
15621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s29, s25, s7",  s29, s25, i32, f2u(-INFINITY), s7, i32, f2u(1752));
15631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s0,  s11, s12", s0,  s11, i32, f2u(INFINITY), s12, i32, f2u(-5786.47));
15641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s27, s21, s16", s27, s21, i32, f2u(456.2489562), s16, i32, f2u(-7.2945676));
15651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s0,  s5,  s2",  s0,  s5,  i32, f2u(INFINITY), s2, i32, f2u(-INFINITY));
15661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s20, s13, s15", s20, s13, i32, f2u(-INFINITY), s15, i32, f2u(0.0));
15671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_bin_f32("vdiv.f32 s10, s23, s15", s10, s23, i32, f2u(INFINITY), s15, i32, f2u(0.0));
15681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
15691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VABS ----\n");
15701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
15711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
15721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
15731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
15741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
15751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
15761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
15771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
15781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
15791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vabs.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
15801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
15811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
15821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
15831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
15841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
15851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
15861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
15871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
15881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
15891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vabs.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
15901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
15911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VNEG ----\n");
15921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
15931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
15941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
15951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
15961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
15971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
15981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
15991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
16001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
16011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vneg.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
16021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
16031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
16041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
16051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
16061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
16071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
16081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
16091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
16101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
16111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vneg.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
16121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
16131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VMOV (register) ----\n");
16141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
16151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
16161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
16171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
16181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
16191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
16201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
16211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
16221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
16231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vmov.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
16241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
16251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
16261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
16271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
16281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
16291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
16301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
16311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
16321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
16331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vmov.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
16341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
16351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VSQRT ----\n");
16361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d15, d4",  d15, d4,  i32, f2u0(NAN), f2u1(NAN));
16371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d31, d4",  d31, d4,  i32, f2u0(NAN), f2u1(NAN));
16381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d25, d25", d25, d24, i32, f2u0(INFINITY), f2u1(INFINITY));
16391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d18, d17", d18, d17, i32, f2u0(INFINITY), f2u1(INFINITY));
16401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d30, d1",  d30, d1,  i32, f2u0(-INFINITY), f2u1(-INFINITY));
16411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d8,  d27", d8,  d27, i32, f2u0(-INFINITY), f2u1(-INFINITY));
16421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d20, d1",  d20, d1,  i32, f2u0(76543.001002), f2u1(76543.001002));
16431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d28, d7",  d28, d7,  i32, f2u0(-4856.234), f2u1(-4856.234));
16441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d2,  d19", d2, d19,  i32,f2u0(87.098217), f2u1(87.098217));
16451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f64("vsqrt.f64 d8,  d7",  d8, d7,  i32, f2u0(-122156.2), f2u1(-122156.2));
16461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s15, s4",  s15, s4,  i32, f2u(NAN));
16471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s31, s4",  s31, s4,  i32, f2u(NAN));
16481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s25, s25", s25, s24, i32, f2u(INFINITY));
16491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s18, s17", s18, s17, i32, f2u(INFINITY));
16501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s30, s1",  s30, s1,  i32, f2u(-INFINITY));
16511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s8,  s27", s8,  s27, i32, f2u(-INFINITY));
16521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s20, s1",  s20, s1,  i32, f2u(76543.001002));
16531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s28, s7",  s28, s7,  i32, f2u(-4856.234));
16541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s2,  s19", s2, s19,  i32,f2u(87.098217));
16551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vsqrt.f32 s8,  s7",  s8, s7,  i32, f2u(-122156.2));
16561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
16571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VCVT (integer <-> fp) ----\n");
16581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s0,  s1",  s0,  s1,  i32, f2u(3.2));
16591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s10, s11", s10, s11, i32, f2u(3e22));
16601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s15, s4",  s15, s4,  i32, f2u(3e9));
16611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s25, s24", s25, s24, i32, f2u(-0.5));
16621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s19, s21", s19, s21, i32, f2u(-7.1));
16631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s12, s8",  s12, s8,  i32, f2u(8.0 - 1.0/1024.0));
16641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s12, s18", s12, s18, i32, f2u(-8.0 + 1.0/1024.0));
16651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s30, s1",  s30, s1, i32, f2u(0.0));
16661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s11, s1",  s11, s1, i32, f2u(INFINITY));
16671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s21, s12", s21, s12, i32, f2u(-INFINITY));
16681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s20, s11", s20, s11, i32, f2u(NAN));
16691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s29, s13", s29, s13, i32, f2u(NAN));
16701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s9,  s19", s9,  s19, i32, f2u(0.0));
16711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s0,  s17", s0,  s17, i32, f2u(INFINITY));
16721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s0,  s1",  s0,  s1, i32, f2u(-INFINITY));
16731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s30, s11", s30, s11, i32, f2u(3.2));
16741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s20, s21", s20, s21, i32, f2u(3e22));
16751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s15, s14", s15, s14, i32, f2u(3e9));
16761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s15, s24", s15, s24, i32, f2u(-0.5));
16771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s15, s29", s15, s29, i32, f2u(-7.1));
16781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s12, s31", s12, s31, i32, f2u(8.0 - 1.0/1024.0));
16791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s1,  s8",  s1,  s8, i32, f2u(-8.0 + 1.0/1024.0));
16801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
16811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s30, s1",  s30, s1, i32, f2u(7));
16821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s10, s17", s10, s17, i32, f2u(1 << 31));
16831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s20, s1",  s20, s1, i32, f2u((1U << 31) + 1));
16841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s24, s26", s24, s26, i32, f2u((1U << 31) - 1));
16851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s0,  s14", s0,  s14, i32, f2u(0x30a0bcef));
16861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s11, s1",  s11, s1, i32, f2u(INFINITY));
16871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s21, s12", s21, s12, i32, f2u(-INFINITY));
16881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s29, s13", s29, s13, i32, f2u(NAN));
16891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s0,  s1",  s0,  s1, i32, f2u(7));
16901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s30, s31", s30, s31, i32, f2u(1 << 31));
16911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s0,  s12", s0,  s12, i32, f2u((1U << 31) + 1));
16921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s10, s16", s10, s16, i32, f2u((1U << 31) - 1));
16931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s1,  s8",  s1,  s8, i32, f2u(-8.0 + 1.0/1024.0));
16941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s29, s13", s29, s13, i32, f2u(NAN));
16951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s9,  s19", s9,  s19, i32, f2u(0.0));
16961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s0,  s17", s0,  s17, i32, f2u(INFINITY));
16971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s0,  s1",  s0,  s1, i32, f2u(-INFINITY));
16981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
16991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
17001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s13, d26", s13, d26, f2u0(234.54), f2u1(234.54));
17011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s29, d30", s29, d30, f2u0(46245.345), f2u1(46245.345));
17021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
17031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s11, d8",  s11, d8,  f2u0(INFINITY), f2u1(INFINITY));
17041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s8,  d12", s8,  d12, f2u0(-INFINITY), f2u1(-INFINITY));
17051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s19, d7",  s19, d7,  f2u0(NAN), f2u1(NAN));
17061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.u32.f64 s16, d16", s16, d16, f2u0(76.67), f2u1(76.67));
17071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
17081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s13, d26", s13, d26, f2u0(234.54), f2u1(234.54));
17091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s29, d30", s29, d30, f2u0(46245.345), f2u1(46245.345));
17101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
17111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s11, d8",  s11, d8,  f2u0(INFINITY), f2u1(INFINITY));
17121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s8,  d12", s8,  d12, f2u0(-INFINITY), f2u1(-INFINITY));
17131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s19, d7",  s19, d7,  f2u0(NAN), f2u1(NAN));
17141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_i32_f64("vcvt.s32.f64 s16, d16", s16, d16, f2u0(76.67), f2u1(76.67));
17151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
17161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d0,  s1",  d0,  s1,  f2u(3.2));
17171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d30, s21", d30, s21, f2u(-656.42));
17181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d16, s12", d16, s12, f2u(870.024));
17191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d29, s7",  d29, s7,  f2u(-2543.4506));
17201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d12, s28", d12, s28, f2u(5.00003245));
17211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d7,  s5",  d7,  s5,  f2u(-INFINITY));
17221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d21, s20", d21, s20, f2u(INFINITY));
17231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.u32 d11, s11", d11, s11, f2u(NAN));
17241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d0,  s1",  d0,  s1,  f2u(3.2));
17251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d30, s21", d30, s21, f2u(-656.42));
17261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d16, s12", d16, s12, f2u(870.024));
17271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d29, s7",  d29, s7,  f2u(-2543.4506));
17281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d12, s28", d12, s28, f2u(5.00003245));
17291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d7,  s5",  d7,  s5,  f2u(-INFINITY));
17301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d21, s20", d21, s20, f2u(INFINITY));
17311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cvt_f64_i32("vcvt.f64.s32 d11, s11", d11, s11, f2u(NAN));
17321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
17331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj/*    printf("---- VCVT (fixed <-> fp) ----\n");
17341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s0,  s0,  #3",  s0,  s0, i32, f2u(3.2));
17351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s11, s11, #1",  s11, s11, i32, f2u(3e22));
17361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s15, s15, #32", s15, s15, i32, f2u(3e9));
17371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s4,  s4,  #7",  s4,  s4, i32, f2u(-0.5));
17381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s6,  s6,  #4",  s6,  s6, i32, f2u(-7.1));
17391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s12, s12, #3",  s12, s12, i32, f2u(8.0 - 1.0/1024.0));
17401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s8,  s8,  #3",  s8,  s8, i32, f2u(-8.0 + 1.0/1024.0));
17411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s30, s30, #3",  s30, s30, i32, f2u(NAN));
17421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s20, s20, #3",  s20, s20, i32, f2u(0.0));
17431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s13, s13, #6",  s13, s13, i32, f2u(INFINITY));
17441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.u32.f32 s16, s16, #3",  s16, s16, i32, f2u(-INFINITY));
17451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s1,  s1,  #5",  s1,  s1, i32, f2u(3.2));
17461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s21, s21, #1",  s21, s21, i32, f2u(3e22));
17471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s17, s17, #8",  s17, s17, i32, f2u(3e9));
17481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s27, s27, #2",  s27, s27, i32, f2u(-0.5));
17491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s15, s15, #1",  s15, s15, i32, f2u(-7.1));
17501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s8,  s8,  #2",  s8,  s8, i32, f2u(8.0 - 1.0/1024.0));
17511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s31, s31, #2",  s31, s31, i32, f2u(-8.0 + 1.0/1024.0));
17521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s10, s10, #3",  s10, s10, i32, f2u(0.0));
17531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s13, s13, #9",  s13, s13, i32, f2u(INFINITY));
17541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s22, s22, #3",  s22, s22, i32, f2u(-INFINITY));
17551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.s32.f32 s1,  s1,  #7",  s1,  s1, i32, f2u(NAN));
17561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
17571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s0,  s0,  #3",  s0,  s0, i32, f2u(3.2));
17581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s11, s11, #1",  s11, s11, i32, f2u(3e22));
17591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s15, s15, #32", s15, s15, i32, f2u(3e9));
17601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s4,  s4,  #7",  s4,  s4, i32, f2u(-0.5));
17611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s6,  s6,  #4",  s6,  s6, i32, f2u(-7.1));
17621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s12, s12, #3",  s12, s12, i32, f2u(8.0 - 1.0/1024.0));
17631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s8,  s8,  #3",  s8,  s8, i32, f2u(-8.0 + 1.0/1024.0));
17641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s30, s30, #3",  s30, s30, i32, f2u(NAN));
17651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s20, s20, #3",  s20, s20, i32, f2u(0.0));
17661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s13, s13, #6",  s13, s13, i32, f2u(INFINITY));
17671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.u32 s16, s16, #3",  s16, s16, i32, f2u(-INFINITY));
17681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s1,  s1,  #5",  s1,  s1, i32, f2u(3.2));
17691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s21, s21, #1",  s21, s21, i32, f2u(3e22));
17701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s17, s17, #8",  s17, s17, i32, f2u(3e9));
17711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s27, s27, #2",  s27, s27, i32, f2u(-0.5));
17721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s15, s15, #1",  s15, s15, i32, f2u(-7.1));
17731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s8,  s8,  #2",  s8,  s8, i32, f2u(8.0 - 1.0/1024.0));
17741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s31, s31, #2",  s31, s31, i32, f2u(-8.0 + 1.0/1024.0));
17751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s10, s10, #3",  s10, s10, i32, f2u(0.0));
17761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s13, s13, #9",  s13, s13, i32, f2u(INFINITY));
17771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s22, s22, #3",  s22, s22, i32, f2u(-INFINITY));
17781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_f32("vcvt.f32.s32 s1,  s1,  #7",  s1,  s1, i32, f2u(NAN));
17791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    */
17801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
17811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VCVT (single <-> double) ----\n");
17821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d0,  s1",  d0,  s1,  f2u(3.2));
17831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d29, s21",  d29, s21, f2u(234.65));
17841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d16, s30",  d16, s30, f2u(-700.63));
17851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d11, s7",  d11, s7,  f2u(8.0 - 1.0/1024.0));
17861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d30, s3",  d30, s3,  f2u(-8.0 + 1.0/1024.0));
17871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d7,  s19", d7,  s19, f2u(12.43303));
17881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d2,  s11",  d2,  s11, f2u(65.4235));
17891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d9,  s21",  d9,  s21, f2u(NAN));
17901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d17, s29",  d17, s29, f2u(-INFINITY));
17911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_ds("vcvt.f64.f32 d19, s0",  d19, s0,  f2u(INFINITY));
17921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_sd("vcvt.f32.f64 s0,  d1",  s0,  d1,  f2u0(3.2), f2u1(3.2));
17931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_sd("vcvt.f32.f64 s29, d21",  s29, d21, f2u0(234.65), f2u1(234.65));
17941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_sd("vcvt.f32.f64 s16, d30",  s16, d30, f2u0(-700.63), f2u1(-700.63));
17951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
17961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    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));
17971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_sd("vcvt.f32.f64 s7,  d19", s7,  d19, f2u0(12.43303), f2u1(12.43303));
17981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_sd("vcvt.f32.f64 s2,  d11",  s2,  d11, f2u0(65.4235), f2u1(65.4235));
17991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_sd("vcvt.f32.f64 s9,  d21",  s9,  d21, f2u0(NAN), f2u1(NAN));
18001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_sd("vcvt.f32.f64 s17, d29",  s17, d29, f2u0(-INFINITY), f2u1(-INFINITY));
18011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_un_cvt_sd("vcvt.f32.f64 s19, d0",  s19, d0,  f2u0(INFINITY), f2u1(INFINITY));
18021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
18031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VCMP ----\n");
18041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d0,  d19",  d0, f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
18051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(3425.5), f2u1(3425.5));
18061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d21, d30",  d21, f2u0(-4524.5), f2u1(-4524.5), d30, f2u0(-452345.5), f2u1(-452345.5));
18071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d7,  d28",  d7,  f2u0(425.5), f2u1(425.5), d28, f2u0(-456.3), f2u1(-456.3));
18081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d29, d3",   d29, f2u0(INFINITY), f2u1(INFINITY), d3, f2u0(34562.45), f2u1(34562.45));
18091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(2.0), f2u1(2.0), d22, f2u0(2.0), f2u1(2.0));
18101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(12.023), f2u1(12.023), d22, f2u0(12.023), f2u1(12.023));
18111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(0.0), f2u1(0.0), d22, f2u0(0.0), f2u1(0.0));
18121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d9,  d2",   d9,  f2u0(INFINITY), f2u1(INFINITY), d2, f2u0(INFINITY), f2u1(INFINITY));
18131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d30, d15",  d30, f2u0(-INFINITY), f2u1(-INFINITY), d15, f2u0(-INFINITY), f2u1(-INFINITY));
18141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
18151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d11, d16",  d11, f2u0(-5463.7), f2u1(-5463.7), d16, f2u0(-INFINITY), f2u1(-INFINITY));
18161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d21, d30",  d21, f2u0(-INFINITY), f2u1(-INFINITY), d30, f2u0(86.7), f2u1(86.7));
18171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d7,  d28",  d7,  f2u0(INFINITY), f2u1(INFINITY), d28, f2u0(-8567.456), f2u1(-8567.456));
18181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d29, d3",   d29, f2u0(-524.4), f2u1(-524.4), d3, f2u0(654.5), f2u1(654.5));
18191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d3,  d22",  d3,  f2u0(NAN), f2u1(NAN), d22, f2u0(-6.46524), f2u1(-6.46524));
18201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d9,  d2",   d9,  f2u0(56.563), f2u1(56.563), d2, f2u0(56.56), f2u1(56.56));
18211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmp.f64  d30, d15",  d30, f2u0(5365.60001), f2u1(5365.60001), d15, f2u0(56763.5), f2u1(56763.5));
18221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
18231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(3425.5), f2u1(3425.5));
18241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(23475.45), f2u1(23475.45), d16, f2u0(NAN), f2u1(NAN));
18251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d21, d30",  d21, f2u0(-4524.5), f2u1(-4524.5), d30, f2u0(-452345.5), f2u1(-452345.5));
18261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d7,  d28",  d7,  f2u0(425.5), f2u1(425.5), d28, f2u0(-456.3), f2u1(-456.3));
18271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d29, d3",   d29, f2u0(INFINITY), f2u1(INFINITY), d3, f2u0(34562.45), f2u1(34562.45));
18281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d3,  d22",  d3,  f2u0(2.0), f2u1(2.0), d22, f2u0(2.0), f2u1(2.0));
18291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d9,  d2",   d9,  f2u0(INFINITY), f2u1(INFINITY), d2, f2u0(INFINITY), f2u1(INFINITY));
18301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d30, d15",  d30, f2u0(-INFINITY), f2u1(-INFINITY), d15, f2u0(-INFINITY), f2u1(-INFINITY));
18311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d0,  d19",  d0,  f2u0(-3.4567), f2u1(-3.4567), d19, f2u0(-2.6245), f2u1(-2.6245));
18321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d11, d16",  d11, f2u0(-5463.7), f2u1(-5463.7), d16, f2u0(-INFINITY), f2u1(-INFINITY));
18331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d21, d30",  d21, f2u0(-INFINITY), f2u1(-INFINITY), d30, f2u0(86.7), f2u1(86.7));
18341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d7,  d28",  d7,  f2u0(INFINITY), f2u1(INFINITY), d28, f2u0(-8567.456), f2u1(-8567.456));
18351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d29, d3",   d29, f2u0(-524.4), f2u1(-524.4), d3, f2u0(654.5), f2u1(654.5));
18361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d3,  d22",  d3,  f2u0(4624.5), f2u1(4624.5), d22, f2u0(-6.46524), f2u1(-6.46524));
18371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d9,  d2",   d9,  f2u0(56.563), f2u1(56.563), d2, f2u0(56.56), f2u1(56.56));
18381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f64("vcmpe.f64 d30, d15",  d30, f2u0(5365.60001), f2u1(5365.60001), d15, f2u0(56763.5), f2u1(56763.5));
18391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
18401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
18411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
18421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(2.0),      s22, f2u(2.0));
18431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
18441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
18451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s21, s30",  s21, f2u(-4524.5),  s30, f2u(-452345.5));
18461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s7,  s28",  s7,  f2u(425.5),    s28, f2u(-456.3));
18471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s29, s3",   s29, f2u(INFINITY), s3, f2u(34562.45));
18481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(12.023),   s22, f2u(12.023));
18491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(0.0),      s22, f2u(0.0));
18501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s9,  s2",   s9,  f2u(INFINITY), s2, f2u(INFINITY));
18511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s30, s15",  s30, f2u(-INFINITY),s15, f2u(-INFINITY));
18521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
18531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s11, s16",  s11, f2u(-5463.7),  s16, f2u(-INFINITY));
18541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s21, s30",  s21, f2u(-INFINITY),s30, f2u(86.7));
18551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s7,  s28",  s7,  f2u(INFINITY), s28, f2u(-8567.456));
18561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s29, s3",   s29, f2u(-524.4),   s3, f2u(654.5));
18571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s3,  s22",  s3,  f2u(NAN),      s22, f2u(-6.46524));
18581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s9,  s2",   s9,  f2u(56.563),   s2, f2u(56.56));
18591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmp.f32  s30, s15",  s30, f2u(5365.60001), s15, f2u(56763.5));
18601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
18611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(23475.45), s16, f2u(3425.5));
18621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(23475.45), s16, f2u(NAN));
18631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s21, s30",  s21, f2u(-4524.5),  s30, f2u(-452345.5));
18641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s7,  s28",  s7,  f2u(425.5),    s28, f2u(-456.3));
18651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s29, s3",   s29, f2u(INFINITY), s3, f2u(34562.45));
18661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s3,  s22",  s3,  f2u(2.0),      s22, f2u(2.0));
18671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(INFINITY), s2, f2u(INFINITY));
18681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s30, s15",  s30, f2u(-INFINITY), s15, f2u(-INFINITY));
18691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s0,  s19",  s0,  f2u(-3.4567),  s19, f2u(-2.6245));
18701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s11, s16",  s11, f2u(-5463.7),  s16, f2u(-INFINITY));
18711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s21, s30",  s21, f2u(-INFINITY), s30, f2u(86.7));
18721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s7,  s28",  s7,  f2u(INFINITY), s28, f2u(-8567.456));
18731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s29, s3",   s29, f2u(-524.4),   s3, f2u(654.5));
18741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s3,  s22",  s3,  f2u(4624.5),   s22, f2u(-6.46524));
18751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(56.563),   s2, f2u(56.56));
18761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(56.56));
18771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(10.0),   s2, f2u(0.0));
18781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(0.0));
18791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmp_f32("vcmpe.f32 s9,  s2",   s9,  f2u(0.0),   s2, f2u(0.0));
18801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
18811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VCMP (zero) ----\n");
18821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
18831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d11", d11, f2u0(23475.45), f2u1(23475.45));
18841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d21", d21, f2u0(-4524.5), f2u1(-4524.5));
18851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d7",  d7,  f2u0(425.5), f2u1(425.5));
18861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d29", d29, f2u0(INFINITY), f2u1(INFINITY));
18871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(2.0), f2u1(2.0));
18881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(0.0), f2u1(0.0));
18891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d9",  d9,  f2u0(INFINITY), f2u1(INFINITY));
18901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d30", d30, f2u0(-INFINITY), f2u1(-INFINITY));
18911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
18921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d11", d11, f2u0(-5463.7), f2u1(-5463.7));
18931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d21", d21, f2u0(-INFINITY), f2u1(-INFINITY));
18941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d7",  d7,  f2u0(INFINITY), f2u1(INFINITY));
18951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d29", d29, f2u0(-524.4), f2u1(-524.4));
18961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d3",  d3,  f2u0(4624.5), f2u1(4624.5));
18971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d9",  d9,  f2u0(NAN), f2u1(NAN));
18981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmp.f64 d30", d30, f2u0(5365.60001), f2u1(5365.60001));
18991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
19001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
19011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d11", d11, f2u0(23475.45), f2u1(23475.45));
19021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d21", d21, f2u0(-4524.5), f2u1(-4524.5));
19031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d7",  d7,  f2u0(425.5), f2u1(425.5));
19041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d29", d29, f2u0(INFINITY), f2u1(INFINITY));
19051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(2.0), f2u1(2.0));
19061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(0.0), f2u1(0.0));
19071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d9",  d9,  f2u0(INFINITY), f2u1(INFINITY));
19081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d30", d30, f2u0(-INFINITY), f2u1(-INFINITY));
19091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d0",  d0,  f2u0(-3.4567), f2u1(-3.4567));
19101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d11", d11, f2u0(-5463.7), f2u1(-5463.7));
19111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d21", d21, f2u0(-INFINITY), f2u1(-INFINITY));
19121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d7",  d7,  f2u0(INFINITY), f2u1(INFINITY));
19131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d29", d29, f2u0(-524.4), f2u1(-524.4));
19141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d3",  d3,  f2u0(4624.5), f2u1(4624.5));
19151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d9",  d9,  f2u0(NAN), f2u1(NAN));
19161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f64("vcmpe.f64 d30", d30, f2u0(5365.60001), f2u1(5365.60001));
19171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
19181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s0",  s0,  f2u(-3.4567));
19191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s11", s11, f2u(23475.45));
19201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s21", s21, f2u(-4524.5));
19211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s7",  s7,  f2u(425.5));
19221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s29", s29, f2u(INFINITY));
19231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(2.0));
19241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(0.0));
19251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s9",  s9,  f2u(INFINITY));
19261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s30", s30, f2u(-INFINITY));
19271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s0",  s0,  f2u(-3.4567));
19281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s11", s11, f2u(-5463.7));
19291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s21", s21, f2u(-INFINITY));
19301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s7",  s7,  f2u(INFINITY));
19311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s29", s29, f2u(-524.4));
19321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s3",  s3,  f2u(4624.5));
19331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s9",  s9,  f2u(NAN));
19341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmp.f32 s30", s30, f2u(5365.60001));
19351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s0",  s0,  f2u(-3.4567));
19361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s11", s11, f2u(23475.45));
19371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s21", s21, f2u(-4524.5));
19381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s7",  s7,  f2u(425.5));
19391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s29", s29, f2u(INFINITY));
19401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(2.0));
19411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(0.0));
19421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s9",  s9,  f2u(INFINITY));
19431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s30", s30, f2u(-INFINITY));
19441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s0",  s0,  f2u(-3.4567));
19451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s11", s11, f2u(-5463.7));
19461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s21", s21, f2u(-INFINITY));
19471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s7",  s7,  f2u(INFINITY));
19481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s29", s29, f2u(-524.4));
19491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s3",  s3,  f2u(4624.5));
19501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s9",  s9,  f2u(NAN));
19511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_cmpz_f32("vcmpe.f32 s30", s30, f2u(5365.60001));
19521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
19531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    int numbers[8] ={ 0xaa0, 0xbb1, 0xcc2, 0xdd3, 0x11a, 0x22b, 0x33c, 0x44d };
19541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
19551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VLDR ----\n");
19561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d9,  [r6, #+4]",  d9,  r6,  (long) numbers + 8, 4);
19571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d16, [r9, #-4]",  d16, r9,  (long) numbers + 8, -4);
19581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d30, [r12]",      d30, r12, (long) numbers + 8, 0);
19591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d22, [r9, #+8]", d22, r9, (long) numbers + 8, 8);
19601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d29, [r2, #-8]",  d29, r2,  (long) numbers + 8, -8);
19611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d8,  [r8, #+8]",  d8,  r8,  (long) numbers + 8, 8);
19621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d11, [r12, #-4]", d11, r12, (long) numbers + 8, -4);
19631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d18, [r3]",       d18, r3,  (long) numbers + 8, 0);
19641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d5,  [r10, #+8]", d5,  r10, (long) numbers + 8, 8);
19651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d17, [r10]",      d17, r10, (long) numbers + 8, 0);
19661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d9,  [r9, #-4]", d9,  r9, (long) numbers + 8, -4);
19671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d29, [r4, #-8]",  d29, r4,  (long) numbers + 8, -8);
19681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d21, [r6, #+4]",  d21, r6,  (long) numbers + 8, 4);
19691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d8,  [r4]",       d8,  r4,  (long) numbers + 8, 0);
19701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d19, [r0, #-8]",  d19, r0,  (long) numbers + 8, -8);
19711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f64("vldr d10, [r3, #+4]",  d10, r3,  (long) numbers + 8, 4);
19721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s10, [r3, #+4]",  s10, r3,  (long) numbers + 8, 4);
19731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s9,  [r6, #+4]",  s9,  r6,  (long) numbers + 8, 4);
19741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s16, [r9, #-4]",  s16, r9,  (long) numbers + 8, -4);
19751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s30, [r12]",      s30, r12, (long) numbers + 8, 0);
19761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s22, [r9, #+8]", s22, r9, (long) numbers + 8, 8);
19771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s29, [r2, #-8]",  s29, r2,  (long) numbers + 8, -8);
19781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s8,  [r8, #+8]",  s8,  r8,  (long) numbers + 8, 8);
19791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s11, [r12, #-4]", s11, r12, (long) numbers + 8, -4);
19801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s18, [r3]",       s18, r3,  (long) numbers + 8, 0);
19811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s5,  [r10, #+8]", s5,  r10, (long) numbers + 8, 8);
19821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s17, [r10]",      s17, r10, (long) numbers + 8, 0);
19831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s9,  [r9, #-4]", s9,  r9, (long) numbers + 8, -4);
19841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s29, [r4, #-8]",  s29, r4,  (long) numbers + 8, -8);
19851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s21, [r6, #+4]",  s21, r6,  (long) numbers + 8, 4);
19861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s8,  [r4]",       s8,  r4,  (long) numbers + 8, 0);
19871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s19, [r0, #-8]",  s19, r0,  (long) numbers + 8, -8);
19881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vldr_f32("vldr s10, [r3, #+4]",  s10, r3,  (long) numbers + 8, 4);
19891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
19901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VLDM (Increment After, writeback) ----\n");
19911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r6,  d17, d7);
19921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r4,  d11, d23);
19931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r9, d29, d12);
19941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r9,  d0,  d30);
19951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r12, d8,  d24);
19961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r3,  d27, d13);
19971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r10, d20, d30);
19981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r0,  d0,  d1);
19991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r8,  d15, d19);
20001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r3,  d31, d30);
20011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r10, d6,  d23);
20021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r8,  d8,  d16);
20031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r9,  d13, d11);
20041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r1,  d3,  d8);
20051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r2,  d4,  d8);
20061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMIAWB(r3,  d9,  d27);
20071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
20081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VSTR ----\n");
20091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d9,  [r6, #+4]",  d9,  0xa0, r6,  (long) numbers + 8, 4);
20101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d16, [r9, #-4]",  d16, 0xb1, r9,  (long) numbers + 8, -4);
20111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d30, [r12]",      d30, 0xc2, r12, (long) numbers + 8, 0);
20121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d22, [r9, #+8]", d22, 0xd4, r9, (long) numbers + 8, 8);
20131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d29, [r2, #-8]",  d29, 0x00, r2,  (long) numbers + 8, -8);
20141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d8,  [r8, #+8]",  d8,  0x11, r8,  (long) numbers + 8, 8);
20151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d11, [r12, #-4]", d11, 0x22, r12, (long) numbers + 8, -4);
20161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d18, [r3]",       d18, 0x33, r3,  (long) numbers + 8, 0);
20171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d5,  [r10, #+8]", d5,  0x99, r10, (long) numbers + 8, 8);
20181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d17, [r10]",      d17, 0x77, r10, (long) numbers + 8, 0);
20191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d9,  [r9, #-4]", d9,  0xee, r9, (long) numbers + 8, -4);
20201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d29, [r4, #-8]",  d29, 0xff, r4,  (long) numbers + 8, -8);
20211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d10, [r3, #+4]",  d10, 0xbc, r3,  (long) numbers + 8, 4);
20221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d21, [r6, #+4]",  d21, 0x48, r6,  (long) numbers + 8, 4);
20231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d8,  [r4]",       d8,  0x1f, r4,  (long) numbers + 8, 0);
20241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr64("vstr d19, [r0, #-8]",  d19, 0xf9, r0,  (long) numbers + 8, -8);
20251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s9,  [r6,  #+4]", s9,  r6,  (long) numbers + 8, 4);
20261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s21, [r9, #-4]", s21, r9, (long) numbers + 8, -4);
20271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s4,  [r3,  #+8]", s4,  r3,  (long) numbers + 8, 8);
20281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s19, [r4,  #-8]", s19, r4,  (long) numbers + 8, -8);
20291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s29, [r8]",       s29, r8,  (long) numbers + 8, 0);
20301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s8,  [r12]",      s8,  r12, (long) numbers + 8, 0);
20311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s16, [r0,  #+4]", s16, r0,  (long) numbers + 8, 4);
20321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s0,  [r8,  #-4]", s0,  r8,  (long) numbers + 8, -4);
20331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s3,  [r9,  #+8]", s3,  r9,  (long) numbers + 8, 8);
20341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s9,  [r10, #-8]", s9,  r10, (long) numbers + 8, -8);
20351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s11, [r2]",       s11, r2,  (long) numbers + 8, 0);
20361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vstr32("vstr s30, [r0]",       s30, r0,  (long) numbers + 8, 0);
20371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
20381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VSTM (Increment After, no writeback) ----\n");
20391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r6,  {d21}", r6,  d21, 0xab);
20401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r1,  {d1}",  r1,  d1, 0x13);
20411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r9,  {d2}",  r9,  d2, 0x78);
20421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r4,  {d30}", r4,  d30, 0x0);
20431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r12, {d23}", r12, d23, 0xb9);
20441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r6,  {d16}", r6,  d16, 0xa6);
20451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r6,  {d8}",  r6,  d8, 0x7f);
20461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r6,  {d27}", r6,  d27, 0xff);
20471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r5,  {d11}", r5,  d11, 0x32);
20481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r6,  {d4}",  r6,  d4, 0x10);
20491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r10, {d9}",  r10, d9, 0x4f);
20501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r9, {d29}", r9, d29, 0x97);
20511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r10, {d17}", r10, d17, 0xaa);
20521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r5,  {d5}",  r5,  d5, 0x2b);
20531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r9,  {d7}",  r9,  d7, 0x7b);
20541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB("vstmia r3,  {d16}", r3,  d16, 0x11);
20551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s21}", r6,  s21, 0xab);
20561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r1,  {s1}",  r1,  s1,  0x13);
20571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r9,  {s2}",  r9,  s2,  0x78);
20581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r4,  {s30}", r4,  s30, 0x0);
20591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r12, {s23}", r12, s23, 0xb9);
20601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s16}", r6,  s16, 0xa613451d);
20611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s8}",  r6,  s8,  0x7f);
20621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s27}", r6,  s27, f2u(-INFINITY));
20631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r5,  {s11}", r5,  s11, f2u(NAN));
20641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r6,  {s4}",  r6,  s4,  0x10ccb);
20651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r10, {s9}",  r10, s9,  0x4f543);
20661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r9, {s29}", r9, s29, 0x97001a);
20671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r10, {s17}", r10, s17, 0xaa45f);
20681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r5,  {s5}",  r5,  s5,  f2u(NAN));
20691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r9,  {s7}",  r9,  s7,  f2u(-INFINITY));
20701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAnoWB32("vstmia r3,  {s16}", r3,  s16, f2u(INFINITY));
20711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
20721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VSTM (Increment After, writeback) ----\n");
20731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r6,  d21, d2);
20741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r1,  d1, d5);
20751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r9,  d2, d17);
20761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r4,  d30, d21);
20771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r12, d23, d29);
20781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r6,  d16, d30);
20791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r6,  d8,  d12);
20801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r6,  d27, d24);
20811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r5,  d11, d13);
20821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r6,  d4,  d31);
20831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r10, d9,  d27);
20841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r9, d29, d17);
20851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r10, d17, d7);
20861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r5,  d5,  d8);
20871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r9,  d7,  d16);
20881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB(r3,  d16, d21);
20891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r6,  s21, s2);
20901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r12, s23, s21);
20911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r3,  s3,  s3);
20921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r10, s19, s5);
20931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r2,  s3,  s12);
20941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r8,  s7,  s10);
20951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r4,  s30, s13);
20961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r6,  s17, s17);
20971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r9, s11, s21);
20981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r9,  s8,  s30);
20991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r3,  s12, s9);
21001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r6,  s6,  s11);
21011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r8,  s17, s12);
21021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r9,  s12, s12);
21031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VSTMIAWB32(r4,  s11, s11);
21041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
21051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("---- VLDM (Decrement Before) ----\n");
21061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r4,  d11, d23);
21071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r9, d29, d12);
21081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r9,  d0,  d30);
21091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r12, d8,  d24);
21101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r3,  d27, d13);
21111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r6,  d17, d7);
21121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r10, d20, d30);
21131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r0,  d0,  d1);
21141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r8,  d15, d19);
21151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r3,  d31, d30);
21161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r10, d6,  d23);
21171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r8,  d8,  d16);
21181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r9,  d13, d11);
21191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r1,  d3,  d8);
21201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r2,  d4,  d8);
21211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_VLDMDB(r3,  d9,  d27);
21221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
21231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("----- VMOV (immediate) -----\n");
21241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s0",  s0,  0xbe880000);
21251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s1",  s1,  0x3fa80000);
21261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s2",  s2,  0xbf080000);
21271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s5",  s5,  0x3eb80000);
21281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s7",  s7,  0xbff80000);
21291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s10", s10, 0xbe280000);
21301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s12", s12, 0x40000000);
21311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s13", s13, 0x3e880000);
21321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s14", s14, 0xbee80000);
21331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmovf32_imm("vmov s15", s15, 0xc0b80000);
21341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
21351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("----- VMOV (ARM core register and single register) -----\n");
21361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r12, s12", r12, s12, 0x4000aad);
21371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r2,  s5",  r2,  s5,  0xab45e7);
21381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r5,  s15", r5,  s15, 0x00add12);
21391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r8,  s11", r8,  s11, 0x876450ff);
21401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r9, s5",  r9, s5,  0xffff);
21411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r10, s9",  r10, s9,  0x87d34f);
21421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r9,  s10", r9,  s10, 0x00ffff);
21431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r6,  s8",  r6,  s8,  0xad4f8);
21441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r4,  s14", r4,  s14, 0x920b8cf);
21451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r3,  s7",  r3,  s7,  f2u(NAN));
21461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r2,  s0",  r2,  s0,  f2u(-INFINITY));
21471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_core_single("vmov r0,  s1",  r0,  s1,  f2u(INFINITY));
21481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s2,  r9",  s2,  r9,  0x9465a);
21491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s14, r0",  s14, r0,  0xd0b87a);
21501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s4,  r2",  s4,  r2,  0x452bbc8);
21511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s7,  r8",  s7,  r8,  0xa7cb3d);
21521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s9,  r4",  s9,  r4,  0xdd8ec);
21531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s10, r12", s10, r12, 0x8a7b6e);
21541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s13, r9",  s13, r9,  0x4b00a);
21551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s3,  r3",  s3,  r3,  0x0023455);
21561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s5,  r5",  s5,  r5,  f2u(INFINITY));
21571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s8,  r6",  s8,  r6,  f2u(-INFINITY));
21581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s4,  r0",  s4,  r0,  0x000acb45);
21591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_single_core("vmov s0,  r6",  s0,  r6,  f2u(NAN));
21601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
21611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("----- VMOV (ARM two core registers and two single registers) -----\n");
21621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov  s0,  s1,  r6,  r9",  s0,  s1,  r6,  r9, 0x43252acc, 0xabcc4);
21631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov  s0,  s1,  r9,  r9",  s0,  s1,  r9,  r9, 0x43252acc, 0xabcc4);
21641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s30, s31,  r9,  r1", s30, s31,  r9,  r1, 0xaa2e2acc, 0x00337);
21651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(NAN));
21661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(INFINITY));
21671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(-INFINITY));
21681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(0));
21691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(NAN));
21701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(INFINITY));
21711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(-INFINITY));
21721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(INFINITY), f2u(0));
21731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(NAN));
21741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(INFINITY));
21751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(-INFINITY));
21761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(-INFINITY), f2u(0));
21771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(NAN));
21781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(INFINITY));
21791791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(-INFINITY));
21801791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(0));
21811791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN) + 1, f2u(NAN));
21821791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN) + 1, f2u(0));
21831791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(NAN), f2u(NAN) - 1);
21841791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2single_2core("vmov s20, s21, r10, r9", s20, s21, r10, r9, f2u(0), f2u(NAN) - 1);
21851791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r12,  r9, s12, s13", r12,  r9, s12, s13, 0x4000aad, 0xaffff);
21861791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov  r0,  r9, s12, s13",  r0,  r9, s12, s13, 0x40ee56d, 0x123ff);
21871791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r12, r9, s12, s13", r12, r9, s12, s13, 0x4000aad, 0xaffff);
21881791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(NAN));
21891791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(INFINITY));
21901791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(-INFINITY));
21911791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(0));
21921791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(NAN));
21931791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(INFINITY));
21941791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(-INFINITY));
21951791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(INFINITY), f2u(0));
21961791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(NAN));
21971791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(INFINITY));
21981791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(-INFINITY));
21991791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(-INFINITY), f2u(0));
22001791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(NAN));
22011791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(INFINITY));
22021791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(-INFINITY));
22031791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(0));
22041791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN) + 1, f2u(NAN));
22051791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN) + 1, f2u(0));
22061791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(NAN), f2u(NAN) - 1);
22071791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_2single("vmov r10, r9, s20, s21", r10, r9, s20, s21, f2u(0), f2u(NAN) - 1);
22081791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
22091791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("----- VMOV (ARM two core registers and double register) -----\n");
22101791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d3,  r6,  r9",  d3,  r6,  r9,  0x43252acc, 0x45bbd);
22111791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d4,  r10, r2",  d4,  r10, r2,  0x1243b4, 0x237ffb);
22121791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d21, r1,  r6",  d21, r1,  r6,  0x30cc4, 0x314c043);
22131791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d30, r9, r9", d30, r9, r9, 0x08ddf, 0x87bbca);
22141791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d29, r3,  r5",  d29, r3,  r5,  0xaaa0, 0xbbb1);
22151791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d16, r8,  r8",  d16, r8,  r8,  0xaa455bb, 0x13434);
22161791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d17, r12, r9", d17, r12, r9, 0x004003, 0x452bbc1);
22171791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d9,  r9,  r0",  d9,  r9,  r0,  0x134c, 0x41ffb6);
22181791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d7,  r0,  r6",  d7,  r0,  r6,  0x35425dcc, 0x0876c43);
22191791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d13, r3,  r9", d13, r3,  r9, f2u0(NAN), f2u1(NAN));
22201791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d19, r6,  r5",  d19, r6,  r5,  f2u0(INFINITY), f2u1(INFINITY));
22211791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_double_2core("vmov d0,  r2,  r6",  d0,  r2,  r6,  f2u0(-INFINITY), f2u1(-INFINITY));
22221791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
22231791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r3,  r6,  d9",  r3,  r6,  d9,  0x43252acc, 0x45bbd);
22241791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r4,  r10, d2",  r4,  r10, d2,  0x1243b4, 0x237ffb);
22251791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r2,  r1,  d6",  r2,  r1,  d6,  0x30cc4, 0x314c043);
22261791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r0,  r9, d11", r0,  r9, d11, 0x08ddf, 0x87bbca);
22271791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r9,  r3,  d5",  r9,  r3,  d5,  0xaaa0, 0xbbb1);
22281791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r10, r8,  d8",  r10, r8,  d8,  0xaa455bb, 0x13434);
22291791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r9, r12, d11", r9, r12, d11, 0x004003, 0x452bbc1);
22301791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
22311791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    // ARM ARM says this is UNDEFINED, hence we don't decode it
22321791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    //TESTINSN_vmov_2core_double("vmov r9,  r9,  d0",  r9,  r9,  d0,  0x134c, 0x41ffb6);
22331791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
22341791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r6,  r0,  d7",  r6,  r0,  d7,  0x35425dcc, 0x0876c43);
22351791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r12, r3,  d11", r12, r3,  d11, f2u0(NAN), f2u1(NAN));
22361791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r1,  r6,  d5",  r1,  r6,  d5,  f2u0(INFINITY), f2u1(INFINITY));
22371791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r0,  r2,  d7",  r0,  r2,  d7,  f2u0(-INFINITY), f2u1(-INFINITY));
22381791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
22391791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r2,  r9,  d0",  r2,  r9,  d0,  f2u0(INFINITY), f2u1(INFINITY));
22401791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r6,  r9, d10", r6,  r9, d10, 0x14534c, 0x41ffb6);
22411791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vmov_2core_double("vmov r0,  r9, d20", r0,  r9, d20, f2u0(NAN), f2u1(NAN));
22421791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
22431791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    printf("----- VPUSH, VPOP -----\n");
22441791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s3, 0x00aaaaaa, s4, 0x00bbbbbb, s5, 0x00cccccc, s0, s1,  s2);
22451791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s1, 0x000134f4, s2, 0x0870ccb3, s3, 0x00aba0f1, s9, s10, s11);
22461791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s3, 0x00dddddd, s4, 0x00eeeeee, s5, 0x00ffffff, s0, s1,  s2);
22471791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s11, 0x13454c,  s12, 0x341,     s13, 0xaac45f, s6, s7,  s8);
22481791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s21, 0x0,       s22, f2u(NAN),  s23, f2u(INFINITY), s23, s24,  s25);
22491791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s12, 0xffffff,  s13, 0xf542dd4, s14, f2u(-INFINITY), s11, s12,  s13);
22501791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s25, 0x45cd,    s26, 0xa3ccb5,  s27, 0xbbcaf, s0, s1,  s2);
22511791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s1,  f2u(NAN),  s2,  0xaaca3,   s3,  0x876008, s6, s7,  s8);
22521791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s9,  0x2f43,    s10, f2u(INFINITY), s11, 0x3cc66a, s9, s10,  s11);
22531791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s10, f2u(INFINITY), s11, 0x134cc5, s12, f2u(NAN), s2, s3,  s4);
22541791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s7,  0xcc006d,  s8,  0x1308c,   s9,  0xabbc45, s21, s22,  s23);
22551791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s19, f2u(-INFINITY), s20, 0x452146, s21, 0x388bbc, s4, s5,  s6);
22561791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s16, 0x542aa,   s17, 0xaddcd5,  s18, 0x87acc, s18, s19,  s20);
22571791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s22, 0x5ccb708, s23, 0x52345c,  s24, 0x98745c, s12, s13,  s14);
22581791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s24, 0x99234f,  s25, 0x1aac,    s26, 0x3746c, s28, s29,  s30);
22591791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f32(s13, 0x134ccc,  s14, 0x6bb43,   s15, 0x834aa, s0,  s1,   s2);
22601791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d3,  0x00aaaaaa, 0xaac3,     d4,  0x00bbbbbb, 0x34ccb,     d0, d1);
22611791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d1,  0x000134f4, 0x341531,   d2,  0x0870ccb3, 0x4576bbc,   d9, d10);
22621791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d3,  0x00dddddd, 0x13451cc,  d4,  0x00eeeeee, 0x123ddc8,   d0, d1);
22631791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d11, 0x13454c,   0x541bbc3,  d12, 0x341,      0xccb5, d6,  d7);
22641791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d21, 0x0,        0x123c33,   d22, f2u0(NAN),  f2u1(NAN),   d23, d24);
22651791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d12, 0xffffff,   0x1940c,    d13, 0xf542dd4,  0x788ffc,    d11, d12);
22661791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d25, 0x45cd,     0x1309c,    d26, 0xa3ccb5,   0x4588b,     d0, d1);
22671791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d1,  f2u0(NAN),  f2u1(NAN),  d2,  0xaaca3,    0x1120a,     d6, d7);
22681791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d9,  0x2f43,     0x19ff9,    d10, f2u0(INFINITY), f2u1(INFINITY), d9, d10);
22691791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d10, f2u0(INFINITY), f2u1(INFINITY), d11, 0x134cc5, 0x78cbbd, d2, d3);
22701791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d7,  0xcc006d,   0x28354,    d8,  0x1308c,    0x1993bc,    d21, d22);
22711791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d19, f2u0(-INFINITY), f2u1(-INFINITY), d20, 0x452146, 0x138476c,  d4, d5);
22721791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d16, 0x542aa,    0x12dd4,    d17, 0xaddcd5,   0x399cb,     d18, d19);
22731791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d22, 0x5ccb708,  0x8009c,    d23, 0x52345c,   0x29902c,    d12, d13);
22741791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d24, 0x99234f,   0x3457ff,   d25, 0x1aac,     0x1002cba,   d28, d29);
22751791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    TESTINSN_vpush_vpop_f64(d13, 0x134ccc,   0xfaa309,   d14, 0x6bb43,    0x199cb,     d0,  d1);
22761791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj
22771791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj    return 0;
22781791f9352889fa5d7a8f3b74fcf7f6ac8521c821sewardj}
2279