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