neon64.c revision b32f58018498ea2225959b0ba11c18f0c433deef
1 2/* How to compile: 3 4 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ 5 -marm -o neon64-a neon64.c 6 7 or 8 9 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ 10 -mthumb -o neon64-t neon64.c 11 12*/ 13 14#include <stdio.h> 15#include <string.h> 16#include <math.h> 17 18#ifndef __thumb__ 19// ARM 20#define MOVE_to_FPSCR_from_R4 \ 21 ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t" 22#define MOVE_to_R4_from_FPSCR \ 23 ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t" 24#endif 25 26#ifdef __thumb__ 27// Thumb 28#define MOVE_to_FPSCR_from_R4 \ 29 ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t" 30#define MOVE_to_R4_from_FPSCR \ 31 ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t" 32#endif 33 34static inline unsigned int f2u(float x) { 35 union { 36 float f; 37 unsigned int u; 38 } cvt; 39 cvt.f = x; 40 return cvt.u; 41} 42 43/* test macros to generate and output the result of a single instruction */ 44 45const unsigned int mem[] = { 46 0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d, 47 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, 48 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, 49 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c 50}; 51 52#define TESTINSN_imm(instruction, QD, imm) \ 53{ \ 54 unsigned int out[2]; \ 55\ 56 __asm__ volatile( \ 57 "vmov.i8 " #QD ", #0x55" "\n\t" \ 58 instruction ", #" #imm "\n\t" \ 59 "vstmia %0, {" #QD "}\n\t" \ 60 : \ 61 : "r" (out) \ 62 : #QD, "memory" \ 63 ); \ 64 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \ 65 instruction, out[1], out[0]); \ 66} \ 67{ \ 68 unsigned int out[2]; \ 69 unsigned int addr = 0; \ 70 \ 71 __asm__ volatile( \ 72 "mov %1, %2\n\t" \ 73 "vldmia %1!, {" #QD "}\n\t" \ 74 instruction ", #" #imm "\n\t" \ 75 "vstmia %0, {" #QD "}\n\t" \ 76 : \ 77 : "r" (out), "r" (addr), "r" (mem) \ 78 : #QD, "%2", "memory" \ 79 ); \ 80 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \ 81 instruction, out[1], out[0]); \ 82} 83 84#define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \ 85{ \ 86 unsigned int out[2]; \ 87\ 88 __asm__ volatile( \ 89 "vmov.i8 " #QD ", #0x55" "\n\t" \ 90 "vdup." #QMtype " " #QM ", %1\n\t" \ 91 instruction "\n\t" \ 92 "vstmia %0, {" #QD "}\n\t" \ 93 : \ 94 : "r" (out), "r" (QMval) \ 95 : #QD, #QM, "memory" \ 96 ); \ 97 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ 98 instruction, out[1], out[0], QMval); \ 99} \ 100{ \ 101 unsigned int out[2]; \ 102 unsigned int addr = 0; \ 103 \ 104 __asm__ volatile( \ 105 "mov %2, %3\n\t" \ 106 "vldmia %2!, {" #QD "}\n\t" \ 107 "vldmia %2!, {" #QM "}\n\t" \ 108 instruction "\n\t" \ 109 "vstmia %0, {" #QD "}\n\t" \ 110 "vstmia %0, {" #QD "}\n\t" \ 111 : \ 112 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ 113 : #QD, #QM, "%2", "memory" \ 114 ); \ 115 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ 116 instruction, out[1], out[0], QMval ); \ 117} 118 119#define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \ 120{ \ 121 unsigned int out[2]; \ 122 unsigned int fpscr; \ 123\ 124 __asm__ volatile( \ 125 "vmov.i8 " #QD ", #0x55" "\n\t" \ 126 "mov r4, #0\n\t" \ 127 MOVE_to_FPSCR_from_R4 \ 128 "vdup." #QMtype " " #QM ", %2\n\t" \ 129 instruction "\n\t" \ 130 "vstmia %1, {" #QD "}\n\t" \ 131 MOVE_to_R4_from_FPSCR \ 132 "mov %0, r4" \ 133 : "=r" (fpscr) \ 134 : "r" (out), "r" (QMval) \ 135 : #QD, #QM, "memory", "r4" \ 136 ); \ 137 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \ 138 instruction, out[1], out[0], QMval, fpscr); \ 139} \ 140{ \ 141 unsigned int out[2]; \ 142 unsigned int fpscr; \ 143 unsigned int addr = 0; \ 144 \ 145 __asm__ volatile( \ 146 "vmov.i8 " #QD ", #0x55" "\n\t" \ 147 "mov r4, #0\n\t" \ 148 MOVE_to_FPSCR_from_R4 \ 149 "mov %3, %4\n\t" \ 150 "vldmia %3!, {" #QM "}\n\t" \ 151 instruction "\n\t" \ 152 "vstmia %1, {" #QD "}\n\t" \ 153 MOVE_to_R4_from_FPSCR \ 154 "mov %0, r4" \ 155 : "=r" (fpscr) \ 156 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ 157 : #QD, #QM, "memory", "r4" \ 158 ); \ 159 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \ 160 instruction, out[1], out[0], QMval, fpscr); \ 161} 162 163#define TESTINSN_core_to_scalar(instruction, QD, QM, QMval) \ 164{ \ 165 unsigned int out[2]; \ 166\ 167 __asm__ volatile( \ 168 "vmov.i8 " #QD ", #0x55" "\n\t" \ 169 "mov " #QM ", %1\n\t" \ 170 instruction "\n\t" \ 171 "vstmia %0, {" #QD "}\n\t" \ 172 : \ 173 : "r" (out), "r" (QMval) \ 174 : #QD, #QM, "memory" \ 175 ); \ 176 printf("%s :: Qd 0x%08x 0x%08x Qm 0x%08x\n", \ 177 instruction, out[1], out[0], QMval); \ 178} 179 180#define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \ 181{ \ 182 unsigned int out[2]; \ 183\ 184 __asm__ volatile( \ 185 "mov " #QD ", #0x55" "\n\t" \ 186 "vdup." #QMtype " " #QM ", %1\n\t" \ 187 instruction "\n\t" \ 188 "str " #QD ", [%0]\n\t" \ 189 : \ 190 : "r" (out), "r" (QMval) \ 191 : #QD, #QM, "memory" \ 192 ); \ 193 printf("%s :: Rd 0x%08x Qm (" #QMtype ")0x%08x\n", \ 194 instruction, out[0], QMval); \ 195} 196 197#define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \ 198{ \ 199 unsigned int out[9]; \ 200\ 201 __asm__ volatile( \ 202 "vmov.i8 " #QD1 ", #0x55" "\n\t" \ 203 "vmov.i8 " #QD2 ", #0x55" "\n\t" \ 204 "vmov.i8 " #QD3 ", #0x55" "\n\t" \ 205 "vmov.i8 " #QD4 ", #0x55" "\n\t" \ 206 instruction ", [%1]\n\t" \ 207 "mov r4, %0\n\t" \ 208 "vstmia %0!, {" #QD1 "}\n\t" \ 209 "vstmia %0!, {" #QD2 "}\n\t" \ 210 "vstmia %0!, {" #QD3 "}\n\t" \ 211 "vstmia %0!, {" #QD4 "}\n\t" \ 212 "str %1, [%2]\n\t" \ 213 "mov %0, r4\n\t" \ 214 : \ 215 : "r" (out), "r" (mem), "r"(&out[8]) \ 216 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ 217 ); \ 218 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ 219 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 220 instruction, out[0], out[1], out[2], out[3], out[4],\ 221 out[5], out[6], out[7], (int)out[8]-(int)mem); \ 222} 223 224#define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \ 225{ \ 226 unsigned int out[9]; \ 227\ 228 memset(out, 0x55, 8 * (sizeof(unsigned int)));\ 229 __asm__ volatile( \ 230 "mov r4, %1\n\t" \ 231 "vldmia %1!, {" #QD1 "}\n\t" \ 232 "vldmia %1!, {" #QD2 "}\n\t" \ 233 "vldmia %1!, {" #QD3 "}\n\t" \ 234 "vldmia %1!, {" #QD4 "}\n\t" \ 235 "mov %1, r4\n\t" \ 236 instruction ", [%0]\n\t" \ 237 "str %0, [%2]\n\t" \ 238 : \ 239 : "r" (out), "r" (mem), "r"(&out[8]) \ 240 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ 241 ); \ 242 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ 243 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 244 instruction, out[0], out[1], out[2], out[3], out[4],\ 245 out[5], out[6], out[7], (int)out[8]-(int)out); \ 246} 247 248#define TESTINSN_VLDn_WB(instruction, QD1, QD2, QD3, QD4) \ 249{ \ 250 unsigned int out[9]; \ 251 unsigned int addr = 0; \ 252 \ 253 __asm__ volatile( \ 254 "mov %0, %2\n\t" \ 255 "vmov.i8 " #QD1 ", #0x55" "\n\t" \ 256 "vmov.i8 " #QD2 ", #0x55" "\n\t" \ 257 "vmov.i8 " #QD3 ", #0x55" "\n\t" \ 258 "vmov.i8 " #QD4 ", #0x55" "\n\t" \ 259 instruction ", [%0]!\n\t" \ 260 "mov r4, %1\n\t" \ 261 "vstmia %1!, {" #QD1 "}\n\t" \ 262 "vstmia %1!, {" #QD2 "}\n\t" \ 263 "vstmia %1!, {" #QD3 "}\n\t" \ 264 "vstmia %1!, {" #QD4 "}\n\t" \ 265 "str %0, [%3]\n\t" \ 266 "mov %1, r4\n\t" \ 267 : "+r" (addr) \ 268 : "r" (out), "r" (mem), "r"(&out[8]) \ 269 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ 270 ); \ 271 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ 272 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 273 instruction, out[0], out[1], out[2], out[3], out[4],\ 274 out[5], out[6], out[7], (int)out[8]-(int)mem); \ 275} 276 277#define TESTINSN_VSTn_WB(instruction, QD1, QD2, QD3, QD4) \ 278{ \ 279 unsigned int out[9]; \ 280 unsigned int addr = 0; \ 281 \ 282 memset(out, 0x55, 8 * (sizeof(unsigned int)));\ 283 __asm__ volatile( \ 284 "mov %0, %1\n\t" \ 285 "mov r4, %2\n\t" \ 286 "vldmia r4!, {" #QD1 "}\n\t" \ 287 "vldmia r4!, {" #QD2 "}\n\t" \ 288 "vldmia r4!, {" #QD3 "}\n\t" \ 289 "vldmia r4!, {" #QD4 "}\n\t" \ 290 instruction ", [%0]!\n\t" \ 291 "str %0, [%3]\n\t" \ 292 : "+r" (addr) \ 293 : "r" (out), "r" (mem), "r"(&out[8]) \ 294 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", "0" \ 295 ); \ 296 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ 297 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 298 instruction, out[0], out[1], out[2], out[3], out[4],\ 299 out[5], out[6], out[7], (int)out[8]-(int)out); \ 300} 301 302#define TESTINSN_VLDn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \ 303{ \ 304 unsigned int out[9]; \ 305 unsigned int addr = 0; \ 306 \ 307 __asm__ volatile( \ 308 "mov %0, %2\n\t" \ 309 "vmov.i8 " #QD1 ", #0x55" "\n\t" \ 310 "vmov.i8 " #QD2 ", #0x55" "\n\t" \ 311 "vmov.i8 " #QD3 ", #0x55" "\n\t" \ 312 "vmov.i8 " #QD4 ", #0x55" "\n\t" \ 313 "mov " #RM ", %4\n\t" \ 314 instruction ", [%0], " #RM "\n\t" \ 315 "mov r4, %1\n\t" \ 316 "vstmia %1!, {" #QD1 "}\n\t" \ 317 "vstmia %1!, {" #QD2 "}\n\t" \ 318 "vstmia %1!, {" #QD3 "}\n\t" \ 319 "vstmia %1!, {" #QD4 "}\n\t" \ 320 "str %0, [%3]\n\t" \ 321 "mov %1, r4\n\t" \ 322 : "+r" (addr) \ 323 : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \ 324 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \ 325 ); \ 326 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ 327 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 328 instruction, out[0], out[1], out[2], out[3], out[4],\ 329 out[5], out[6], out[7], (int)out[8]-(int)addr); \ 330} 331 332 333#define TESTINSN_VSTn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \ 334{ \ 335 unsigned int out[9]; \ 336 unsigned int addr = 0; \ 337 \ 338 memset(out, 0x55, 8 * (sizeof(unsigned int)));\ 339 __asm__ volatile( \ 340 "mov %0, %1\n\t" \ 341 "mov r4, %2\n\t" \ 342 "vldmia r4!, {" #QD1 "}\n\t" \ 343 "vldmia r4!, {" #QD2 "}\n\t" \ 344 "vldmia r4!, {" #QD3 "}\n\t" \ 345 "vldmia r4!, {" #QD4 "}\n\t" \ 346 "mov " #RM ", %4\n\t" \ 347 instruction ", [%0], " #RM "\n\t" \ 348 "str %0, [%3]\n\t" \ 349 : "+r" (addr) \ 350 : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \ 351 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \ 352 ); \ 353 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ 354 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 355 instruction, out[0], out[1], out[2], out[3], out[4],\ 356 out[5], out[6], out[7], (int)out[8]-(int)out); \ 357} 358 359#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 360{ \ 361 unsigned int out[2]; \ 362\ 363 __asm__ volatile( \ 364 "vmov.i8 " #QD ", #0x55" "\n\t" \ 365 "vdup." #QMtype " " #QM ", %1\n\t" \ 366 "vdup." #QNtype " " #QN ", %2\n\t" \ 367 instruction "\n\t" \ 368 "vstmia %0, {" #QD "}\n\t" \ 369 : \ 370 : "r" (out), "r" (QMval), "r" (QNval) \ 371 : #QD, #QM, #QN, "memory" \ 372 ); \ 373 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 374 " Qn (" #QNtype ")0x%08x\n", \ 375 instruction, out[1], out[0], QMval, QNval); \ 376} \ 377{ \ 378 unsigned int out[2]; \ 379 unsigned int addr = 0; \ 380 \ 381 __asm__ volatile( \ 382 "mov %0, %4\n\t" \ 383 "vldmia %0!, {" #QM "}\n\t" \ 384 "vmov.i8 " #QD ", #0x55" "\n\t" \ 385 "vdup." #QNtype " " #QN ", %3\n\t" \ 386 instruction "\n\t" \ 387 "vstmia %1, {" #QD "}\n\t" \ 388 : "+r" (addr) \ 389 : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \ 390 : #QD, #QM, #QN, "memory" \ 391 ); \ 392 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 393 " Qn (" #QNtype ")0x%08x\n", \ 394 instruction, out[1], out[0], QMval, QNval); \ 395} 396 397#define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 398{ \ 399 unsigned int out[2]; \ 400\ 401 __asm__ volatile( \ 402 "vdup.i32 " #QD ", %3\n\t" \ 403 "vdup." #QMtype " " #QM ", %1\n\t" \ 404 "vdup." #QNtype " " #QN ", %2\n\t" \ 405 instruction "\n\t" \ 406 "vstmia %0, {" #QD "}\n\t" \ 407 : \ 408 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000) \ 409 : #QD, #QM, #QN, "memory" \ 410 ); \ 411 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 412 " Qn (" #QNtype ")0x%08x\n", \ 413 instruction, out[1], out[0], QMval, QNval); \ 414} \ 415{ \ 416 unsigned int out[2]; \ 417 unsigned int addr = 0; \ 418 \ 419 __asm__ volatile( \ 420 "vdup.i32 " #QD ", %3\n\t" \ 421 "mov %4, %5\n\t" \ 422 "vldmia %4!, {" #QM "}\n\t" \ 423 "vdup." #QNtype " " #QN ", %2\n\t" \ 424 instruction "\n\t" \ 425 "vstmia %0, {" #QD "}\n\t" \ 426 : \ 427 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \ 428 : #QD, #QM, #QN, "memory" \ 429 ); \ 430 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 431 " Qn (" #QNtype ")0x%08x\n", \ 432 instruction, out[1], out[0], QMval, QNval); \ 433} 434 435#define TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 436 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \ 437{ \ 438 unsigned int out[2]; \ 439\ 440 __asm__ volatile( \ 441 "vmov.i8 " #QD ", #0x55" "\n\t" \ 442 "vdup." #QMtype " " #QM ", %1\n\t" \ 443 "vdup." #QN1type " " #QN1 ", %2\n\t" \ 444 "vdup." #QN2type " " #QN2 ", %3\n\t" \ 445 "vdup." #QN3type " " #QN3 ", %4\n\t" \ 446 "vdup." #QN4type " " #QN4 ", %5\n\t" \ 447 instruction "\n\t" \ 448 "vstmia %0, {" #QD "}\n\t" \ 449 : \ 450 : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \ 451 "r" (QN4val) \ 452 : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \ 453 ); \ 454 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 455 " Qn1 (" #QN1type ")0x%08x" \ 456 " Qn2 (" #QN2type ")0x%08x" \ 457 " Qn3 (" #QN3type ")0x%08x" \ 458 " Qn4 (" #QN4type ")0x%08x\n", \ 459 instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \ 460} \ 461{ \ 462 unsigned int out[2]; \ 463 unsigned int addr = 0; \ 464 \ 465 __asm__ volatile( \ 466 "mov %6, %7\n\t" \ 467 "vmov.i8 " #QD ", #0x55" "\n\t" \ 468 "vdup." #QMtype " " #QM ", %1\n\t" \ 469 "vldmia %6!, {" #QN1 "}\n\t" \ 470 "vdup." #QN2type " " #QN2 ", %3\n\t" \ 471 "vldmia %6!, {" #QN3 "}\n\t" \ 472 "vdup." #QN4type " " #QN4 ", %5\n\t" \ 473 instruction "\n\t" \ 474 "vstmia %0, {" #QD "}\n\t" \ 475 : \ 476 : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \ 477 "r" (QN4val), "r" (addr), "r" (mem) \ 478 : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \ 479 ); \ 480 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 481 " Qn1 (" #QN1type ")0x%08x" \ 482 " Qn2 (" #QN2type ")0x%08x" \ 483 " Qn3 (" #QN3type ")0x%08x" \ 484 " Qn4 (" #QN4type ")0x%08x\n", \ 485 instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \ 486} 487 488#define TESTINSN_tbl_1(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val) \ 489 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 490 QN1, QN1type, QN1val, QN1, QN1type, QN1val, QN1, QN1type, QN1val) 491#define TESTINSN_tbl_2(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 492 QN2, QN2type, QN2val) \ 493 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 494 QN2, QN2type, QN2val, QN1, QN1type, QN1val, QN2, QN2type, QN2val) 495#define TESTINSN_tbl_3(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 496 QN2, QN2type, QN2val, QN3, QN3type, QN3val) \ 497 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 498 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN2, QN2type, QN2val) 499#define TESTINSN_tbl_4(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 500 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \ 501 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 502 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) 503 504#define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 505{ \ 506 unsigned int out[2]; \ 507 unsigned int fpscr; \ 508\ 509 __asm__ volatile( \ 510 "vmov.i8 " #QD ", #0x55" "\n\t" \ 511 "mov r4, #0\n\t" \ 512 MOVE_to_FPSCR_from_R4 \ 513 "vdup." #QMtype " " #QM ", %2\n\t" \ 514 "vdup." #QNtype " " #QN ", %3\n\t" \ 515 instruction "\n\t" \ 516 "vstmia %1, {" #QD "}\n\t" \ 517 MOVE_to_R4_from_FPSCR \ 518 "mov %0, r4" \ 519 : "=r" (fpscr) \ 520 : "r" (out), "r" (QMval), "r" (QNval) \ 521 : #QD, #QM, #QN, "memory", "r4" \ 522 ); \ 523 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 524 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 525 instruction, out[1], out[0], QMval, QNval, fpscr); \ 526} \ 527{ \ 528 unsigned int out[2]; \ 529 unsigned int fpscr; \ 530 unsigned int addr = 0; \ 531 \ 532 __asm__ volatile( \ 533 "vmov.i8 " #QD ", #0x55" "\n\t" \ 534 "mov r4, #0\n\t" \ 535 MOVE_to_FPSCR_from_R4 \ 536 "mov %4, %5\n\t" \ 537 "vldmia %4!, {" #QM "}\n\t" \ 538 "vdup." #QNtype " " #QN ", %3\n\t" \ 539 instruction "\n\t" \ 540 "vstmia %1, {" #QD "}\n\t" \ 541 MOVE_to_R4_from_FPSCR \ 542 "mov %0, r4" \ 543 : "=r" (fpscr) \ 544 : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ 545 : #QD, #QM, #QN, "memory", "r4" \ 546 ); \ 547 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 548 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 549 instruction, out[1], out[0], QMval, QNval, fpscr); \ 550} 551 552#define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \ 553{ \ 554 unsigned int out1[2]; \ 555 unsigned int out2[2]; \ 556 unsigned int addr = 0; \ 557 \ 558 __asm__ volatile( \ 559 "mov %4, %5\n\t" \ 560 "vldmia %4!, {" #QM "}\n\t" \ 561 "vdup." #QNtype " " #QN ", %3\n\t" \ 562 instruction "\n\t" \ 563 "vstmia %0, {" #QM "}\n\t" \ 564 "vstmia %1, {" #QN "}\n\t" \ 565 : \ 566 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ 567 : #QM, #QN, "memory" \ 568 ); \ 569 printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 570 " Qn (" #QNtype ")0x%08x\n", \ 571 instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \ 572} \ 573{ \ 574 unsigned int out1[2]; \ 575 unsigned int out2[2]; \ 576 unsigned int addr = 0; \ 577 \ 578 __asm__ volatile( \ 579 "mov %4, %5\n\t" \ 580 "vldmia %4!, {" #QM "}\n\t" \ 581 "vdup." #QNtype " " #QN ", %3\n\t" \ 582 instruction "\n\t" \ 583 "vstmia %0, {" #QM "}\n\t" \ 584 "vstmia %1, {" #QN "}\n\t" \ 585 : \ 586 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ 587 : #QM, #QN, "%4", "memory" \ 588 ); \ 589 printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 590 " Qn (" #QNtype ")0x%08x\n", \ 591 instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \ 592} 593 594#if 0 595#define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \ 596{ \ 597 unsigned int out[2]; \ 598\ 599 __asm__ volatile( \ 600 "vmov.i8 " #QD ", #0x55" "\n\t" \ 601 "vdup." #QMtype " " #QM ", %1\n\t" \ 602 instruction ", #" #imm "\n\t" \ 603 "vstmia %0, {" #QD "}\n\t" \ 604 : \ 605 : "r" (out), "r" (QMval) \ 606 : #QD, #QM, "memory" \ 607 ); \ 608 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x", \ 609 instruction, out[1], out[0], QMval); \ 610} 611#endif 612 613int main(int argc, char **argv) 614{ 615 printf("----- VMOV (immediate) -----\n"); 616 TESTINSN_imm("vmov.i32 d0", d0, 0x7); 617 TESTINSN_imm("vmov.i16 d1", d1, 0x7); 618 TESTINSN_imm("vmov.i8 d2", d2, 0x7); 619 TESTINSN_imm("vmov.i32 d5", d5, 0x700); 620 TESTINSN_imm("vmov.i16 d7", d7, 0x700); 621 TESTINSN_imm("vmov.i32 d10", d10, 0x70000); 622 TESTINSN_imm("vmov.i32 d12", d12, 0x7000000); 623 TESTINSN_imm("vmov.i32 d13", d13, 0x7FF); 624 TESTINSN_imm("vmov.i32 d14", d14, 0x7FFFF); 625 TESTINSN_imm("vmov.i64 d15", d15, 0xFF0000FF00FFFF00); 626 TESTINSN_imm("vmov.f32 d0", d0, 0.328125); 627 TESTINSN_imm("vmov.f32 d0", d0, -0.328125); 628 629 printf("----- VMVN (immediate) -----\n"); 630 TESTINSN_imm("vmvn.i32 d0", d0, 0x7); 631 TESTINSN_imm("vmvn.i16 d1", d1, 0x7); 632 TESTINSN_imm("vmvn.i8 d2", d2, 0x7); 633 TESTINSN_imm("vmvn.i32 d5", d5, 0x700); 634 TESTINSN_imm("vmvn.i16 d7", d7, 0x700); 635 TESTINSN_imm("vmvn.i32 d10", d10, 0x70000); 636 TESTINSN_imm("vmvn.i32 d13", d13, 0x7000000); 637 TESTINSN_imm("vmvn.i32 d11", d11, 0x7FF); 638 TESTINSN_imm("vmvn.i32 d14", d14, 0x7FFFF); 639 TESTINSN_imm("vmvn.i64 d15", d15, 0xFF0000FF00FFFF00); 640 641 printf("----- VORR (immediate) -----\n"); 642 TESTINSN_imm("vorr.i32 d0", d0, 0x7); 643 TESTINSN_imm("vorr.i16 d2", d2, 0x7); 644 TESTINSN_imm("vorr.i32 d8", d8, 0x700); 645 TESTINSN_imm("vorr.i16 d6", d6, 0x700); 646 TESTINSN_imm("vorr.i32 d14", d14, 0x70000); 647 TESTINSN_imm("vorr.i32 d15", d15, 0x7000000); 648 649 printf("----- VBIC (immediate) -----\n"); 650 TESTINSN_imm("vbic.i32 d0", d0, 0x7); 651 TESTINSN_imm("vbic.i16 d3", d3, 0x7); 652 TESTINSN_imm("vbic.i32 d5", d5, 0x700); 653 TESTINSN_imm("vbic.i16 d8", d8, 0x700); 654 TESTINSN_imm("vbic.i32 d10", d10, 0x70000); 655 TESTINSN_imm("vbic.i32 d15", d15, 0x7000000); 656 657 printf("---- VMVN (register) ----\n"); 658 TESTINSN_un("vmvn d0, d1", d0, d1, i32, 24); 659 TESTINSN_un("vmvn d10, d15", d10, d15, i32, 24); 660 TESTINSN_un("vmvn d0, d14", d0, d14, i32, 24); 661 662 printf("---- VMOV (register) ----\n"); 663 TESTINSN_un("vmov d0, d1", d0, d1, i32, 24); 664 TESTINSN_un("vmov d10, d15", d10, d15, i32, 24); 665 TESTINSN_un("vmov d0, d14", d0, d14, i32, 24); 666 667 printf("---- VDUP (ARM core register) (tested indirectly) ----\n"); 668 TESTINSN_un("vmov d0, d1", d0, d1, i8, 7); 669 TESTINSN_un("vmov d10, d11", d10, d11, i16, 7); 670 TESTINSN_un("vmov d0, d15", d0, d15, i32, 7); 671 672 printf("---- VADD ----\n"); 673 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 674 TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 675 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 676 TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 677 TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 678 TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 679 TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 680 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 681 TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 682 TESTINSN_bin("vadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 683 TESTINSN_bin("vadd.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120); 684 685 printf("---- VSUB ----\n"); 686 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 687 TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 688 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 689 TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 690 TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 691 TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 692 TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 693 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 694 TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 695 TESTINSN_bin("vsub.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 696 TESTINSN_bin("vsub.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120); 697 698 printf("---- VAND ----\n"); 699 TESTINSN_bin("vand d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 700 TESTINSN_bin("vand d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 701 TESTINSN_bin("vand d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 702 TESTINSN_bin("vand d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 703 704 printf("---- VBIC ----\n"); 705 TESTINSN_bin("vbic d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 706 TESTINSN_bin("vbic d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 707 TESTINSN_bin("vbic d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 708 TESTINSN_bin("vbic d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 709 710 printf("---- VORR ----\n"); 711 TESTINSN_bin("vorr d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 712 TESTINSN_bin("vorr d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 713 TESTINSN_bin("vorr d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 714 TESTINSN_bin("vorr d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 715 716 printf("---- VORN ----\n"); 717 TESTINSN_bin("vorn d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 718 TESTINSN_bin("vorn d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 719 TESTINSN_bin("vorn d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 720 TESTINSN_bin("vorn d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 721 722 printf("---- VEOR ----\n"); 723 TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 724 TESTINSN_bin("veor d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 725 TESTINSN_bin("veor d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 726 TESTINSN_bin("veor d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 727 TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 728 TESTINSN_bin("veor d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 729 TESTINSN_bin("veor d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 730 TESTINSN_bin("veor d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 731 732 printf("---- VBSL ----\n"); 733 TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 734 TESTINSN_bin("vbsl d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 735 TESTINSN_bin("vbsl d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 736 TESTINSN_bin("vbsl d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 737 TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 738 TESTINSN_bin("vbsl d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 739 TESTINSN_bin("vbsl d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 740 TESTINSN_bin("vbsl d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 741 742 printf("---- VBIT ----\n"); 743 TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 744 TESTINSN_bin("vbit d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 745 TESTINSN_bin("vbit d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 746 TESTINSN_bin("vbit d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 747 TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 748 TESTINSN_bin("vbit d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 749 TESTINSN_bin("vbit d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 750 TESTINSN_bin("vbit d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 751 752 printf("---- VBIF ----\n"); 753 TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 754 TESTINSN_bin("vbif d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 755 TESTINSN_bin("vbif d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 756 TESTINSN_bin("vbif d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 757 TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 758 TESTINSN_bin("vbif d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 759 TESTINSN_bin("vbif d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 760 TESTINSN_bin("vbif d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 761 762 printf("---- VEXT ----\n"); 763 TESTINSN_bin("vext.8 d0, d1, d2, #0", d0, d1, i8, 0x77, d2, i8, 0xff); 764 TESTINSN_bin("vext.8 d0, d1, d2, #1", d0, d1, i8, 0x77, d2, i8, 0xff); 765 TESTINSN_bin("vext.8 d0, d1, d2, #7", d0, d1, i8, 0x77, d2, i8, 0xff); 766 TESTINSN_bin("vext.8 d0, d1, d2, #6", d0, d1, i8, 0x77, d2, i8, 0xff); 767 TESTINSN_bin("vext.8 d10, d11, d12, #4", d10, d11, i8, 0x77, d12, i8, 0xff); 768 TESTINSN_bin("vext.8 d0, d5, d15, #5", d0, d5, i8, 0x77, d15, i8, 0xff); 769 770 printf("---- VHADD ----\n"); 771 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 772 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 773 TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 774 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 775 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121); 776 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 777 TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 778 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 779 TESTINSN_bin("vhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 780 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 781 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 782 TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 783 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 784 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121); 785 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 786 TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 787 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 788 TESTINSN_bin("vhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 789 790 printf("---- VHSUB ----\n"); 791 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 792 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 793 TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 794 TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 795 TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 796 TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 797 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 798 TESTINSN_bin("vhsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 799 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 800 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 801 TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 802 TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 803 TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 804 TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 805 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 806 TESTINSN_bin("vhsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 807 808 printf("---- VQADD ----\n"); 809 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 810 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 811 TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 812 TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 813 TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 814 TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 815 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 816 TESTINSN_bin_q("vqadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 817 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 818 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 819 TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 820 TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 821 TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 822 TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 823 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 824 TESTINSN_bin_q("vqadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 825 826 printf("---- VQSUB ----\n"); 827 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 828 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 829 TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 830 TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 831 TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 832 TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 833 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 834 TESTINSN_bin_q("vqsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 835 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 836 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 837 TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 838 TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 839 TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 840 TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 841 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 842 TESTINSN_bin_q("vqsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 843 844 printf("---- VRHADD ----\n"); 845 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 846 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 847 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 848 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 849 TESTINSN_bin("vrhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 850 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 851 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 852 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 853 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 854 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 855 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 856 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 857 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 858 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 859 TESTINSN_bin("vrhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 860 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 861 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 862 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 863 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 864 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 865 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 866 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 867 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 868 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 869 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 870 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 871 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 872 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 873 TESTINSN_bin("vrhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 874 875 printf("---- VCGT ----\n"); 876 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 877 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 878 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 879 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 880 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 881 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 882 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 883 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 884 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 885 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 886 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 887 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2); 888 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 889 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 890 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 891 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 892 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 893 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2); 894 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 895 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 896 TESTINSN_bin("vcgt.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 897 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 898 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 899 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 900 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 901 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 902 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 903 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 904 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 905 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 906 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 907 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 908 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 909 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 910 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 911 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 912 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 913 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 914 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 915 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 916 TESTINSN_bin("vcgt.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 917 918 printf("---- VCGE ----\n"); 919 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 920 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 921 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 922 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 923 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 924 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 925 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 926 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 927 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 928 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 929 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 930 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2); 931 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 932 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 933 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 934 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 935 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 936 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2); 937 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 938 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 939 TESTINSN_bin("vcge.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 940 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 941 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 942 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 943 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 944 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 945 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 946 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 947 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 948 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 949 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 950 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 951 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 952 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 953 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 954 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 955 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 956 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 957 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 958 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 959 TESTINSN_bin("vcge.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 960 961 printf("---- VSHL (register) ----\n"); 962 TESTINSN_bin("vshl.s8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1); 963 TESTINSN_bin("vshl.s8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8); 964 TESTINSN_bin("vshl.s8 d10, d31, d7", d10, d31, i32, 24, d7, i32, 4); 965 TESTINSN_bin("vshl.s16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2); 966 TESTINSN_bin("vshl.s16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1); 967 TESTINSN_bin("vshl.s16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11); 968 TESTINSN_bin("vshl.s32 d9, d12, d19", d9, d12, i32, (1 << 31) + 2, d19, i32, 2); 969 TESTINSN_bin("vshl.s32 d11, d22, d0", d11, d22, i32, -1, d0, i32, 12); 970 TESTINSN_bin("vshl.s32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21); 971 TESTINSN_bin("vshl.s64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20); 972 TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4); 973 TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30); 974 TESTINSN_bin("vshl.s64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab); 975 TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5); 976 TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff); 977 TESTINSN_bin("vshl.u8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1); 978 TESTINSN_bin("vshl.u8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8); 979 TESTINSN_bin("vshl.u8 d10, d11, d7", d10, d11, i32, 24, d7, i32, 4); 980 TESTINSN_bin("vshl.u16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2); 981 TESTINSN_bin("vshl.u16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1); 982 TESTINSN_bin("vshl.u16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11); 983 TESTINSN_bin("vshl.u32 d9, d12, d15", d9, d12, i32, (1 << 31) + 2, d15, i32, 2); 984 TESTINSN_bin("vshl.u32 d11, d2, d0", d11, d2, i32, -1, d0, i32, 12); 985 TESTINSN_bin("vshl.u32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21); 986 TESTINSN_bin("vshl.u64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20); 987 TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4); 988 TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30); 989 TESTINSN_bin("vshl.u64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab); 990 TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5); 991 TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff); 992 993 printf("---- VQSHL (register) ----\n"); 994 TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 995 TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 996 TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 997 TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 998 TESTINSN_bin_q("vqshl.s64 d13, d14, d31", d13, d14, i32, -17, d31, i32, -26); 999 TESTINSN_bin_q("vqshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1000 TESTINSN_bin_q("vqshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1001 TESTINSN_bin_q("vqshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1002 TESTINSN_bin_q("vqshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1003 TESTINSN_bin_q("vqshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1004 TESTINSN_bin_q("vqshl.s32 d9, d30, d11", d9, d30, i32, (1 << 31) + 8, d11, i32, -1); 1005 TESTINSN_bin_q("vqshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1006 TESTINSN_bin_q("vqshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1007 TESTINSN_bin_q("vqshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1008 TESTINSN_bin_q("vqshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 1009 TESTINSN_bin_q("vqshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1010 TESTINSN_bin_q("vqshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1011 TESTINSN_bin_q("vqshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1012 TESTINSN_bin_q("vqshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1013 TESTINSN_bin_q("vqshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1014 TESTINSN_bin_q("vqshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1015 TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1016 TESTINSN_bin_q("vqshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1017 TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1018 TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1019 TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1020 TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1021 TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1022 TESTINSN_bin_q("vqshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1023 TESTINSN_bin_q("vqshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1024 TESTINSN_bin_q("vqshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1025 TESTINSN_bin_q("vqshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1026 TESTINSN_bin_q("vqshl.u32 d12, d31, d13", d12, d31, i32, -120, d13, i32, -9); 1027 TESTINSN_bin_q("vqshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1028 TESTINSN_bin_q("vqshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1029 TESTINSN_bin_q("vqshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1030 TESTINSN_bin_q("vqshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1031 TESTINSN_bin_q("vqshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1032 TESTINSN_bin_q("vqshl.u16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 1033 TESTINSN_bin_q("vqshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1034 TESTINSN_bin_q("vqshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1035 TESTINSN_bin_q("vqshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1036 TESTINSN_bin_q("vqshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1037 TESTINSN_bin_q("vqshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1038 TESTINSN_bin_q("vqshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1039 TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1040 TESTINSN_bin_q("vqshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1041 TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1042 1043 printf("---- VQSHL / VQSHLU (immediate) ----\n"); 1044 TESTINSN_un_q("vqshl.s64 d0, d1, #1", d0, d1, i32, 1); 1045 TESTINSN_un_q("vqshl.s64 d31, d30, #1", d31, d30, i32, -127); 1046 TESTINSN_un_q("vqshl.s64 d5, d4, #0", d5, d4, i32, -127); 1047 TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, 16); 1048 TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, 16); 1049 TESTINSN_un_q("vqshl.s64 d5, d4, #59", d5, d4, i32, 16); 1050 TESTINSN_un_q("vqshl.s64 d5, d4, #58", d5, d4, i32, 16); 1051 TESTINSN_un_q("vqshl.s64 d5, d4, #17", d5, d4, i32, 16); 1052 TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, -1); 1053 TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, -1); 1054 TESTINSN_un_q("vqshl.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1055 TESTINSN_un_q("vqshl.s32 d10, d11, #1", d10, d11, i32, 1); 1056 TESTINSN_un_q("vqshl.s32 d31, d30, #1", d31, d30, i32, -127); 1057 TESTINSN_un_q("vqshl.s32 d5, d4, #0", d5, d4, i32, -127); 1058 TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, 16); 1059 TESTINSN_un_q("vqshl.s32 d5, d4, #28", d5, d4, i32, 16); 1060 TESTINSN_un_q("vqshl.s32 d5, d4, #27", d5, d4, i32, 16); 1061 TESTINSN_un_q("vqshl.s32 d5, d4, #26", d5, d4, i32, 16); 1062 TESTINSN_un_q("vqshl.s32 d5, d4, #17", d5, d4, i32, 16); 1063 TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, -1); 1064 TESTINSN_un_q("vqshl.s32 d5, d4, #29", d5, d4, i32, -1); 1065 TESTINSN_un_q("vqshl.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1066 TESTINSN_un_q("vqshl.s16 d9, d8, #1", d9, d8, i32, 1); 1067 TESTINSN_un_q("vqshl.s16 d31, d30, #1", d31, d30, i32, -127); 1068 TESTINSN_un_q("vqshl.s16 d5, d4, #0", d5, d4, i32, -127); 1069 TESTINSN_un_q("vqshl.s16 d9, d8, #15", d9, d8, i32, 16); 1070 TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, 16); 1071 TESTINSN_un_q("vqshl.s16 d5, d4, #11", d5, d4, i32, 16); 1072 TESTINSN_un_q("vqshl.s16 d5, d4, #10", d5, d4, i32, 16); 1073 TESTINSN_un_q("vqshl.s16 d5, d4, #4", d5, d4, i32, 16); 1074 TESTINSN_un_q("vqshl.s16 d5, d4, #15", d5, d4, i32, -1); 1075 TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, -1); 1076 TESTINSN_un_q("vqshl.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1077 TESTINSN_un_q("vqshl.s8 d0, d1, #1", d0, d1, i32, 1); 1078 TESTINSN_un_q("vqshl.s8 d31, d30, #1", d31, d30, i32, -127); 1079 TESTINSN_un_q("vqshl.s8 d5, d4, #0", d5, d4, i32, -127); 1080 TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, 16); 1081 TESTINSN_un_q("vqshl.s8 d25, d4, #4", d25, d4, i32, 16); 1082 TESTINSN_un_q("vqshl.s8 d5, d4, #3", d5, d4, i32, 16); 1083 TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, 16); 1084 TESTINSN_un_q("vqshl.s8 d5, d4, #1", d5, d4, i32, 16); 1085 TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, -1); 1086 TESTINSN_un_q("vqshl.s8 d5, d4, #5", d5, d4, i32, -1); 1087 TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 1088 TESTINSN_un_q("vqshl.u64 d0, d1, #1", d0, d1, i32, 1); 1089 TESTINSN_un_q("vqshl.u64 d31, d30, #1", d31, d30, i32, -127); 1090 TESTINSN_un_q("vqshl.u64 d5, d4, #0", d5, d4, i32, -127); 1091 TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, 16); 1092 TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, 16); 1093 TESTINSN_un_q("vqshl.u64 d5, d4, #59", d5, d4, i32, 16); 1094 TESTINSN_un_q("vqshl.u64 d5, d4, #58", d5, d4, i32, 16); 1095 TESTINSN_un_q("vqshl.u64 d5, d4, #17", d5, d4, i32, 16); 1096 TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, -1); 1097 TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, -1); 1098 TESTINSN_un_q("vqshl.u64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1099 TESTINSN_un_q("vqshl.u32 d10, d11, #1", d10, d11, i32, 1); 1100 TESTINSN_un_q("vqshl.u32 d31, d30, #1", d31, d30, i32, -127); 1101 TESTINSN_un_q("vqshl.u32 d5, d4, #0", d5, d4, i32, -127); 1102 TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, 16); 1103 TESTINSN_un_q("vqshl.u32 d5, d4, #28", d5, d4, i32, 16); 1104 TESTINSN_un_q("vqshl.u32 d5, d4, #27", d5, d4, i32, 16); 1105 TESTINSN_un_q("vqshl.u32 d5, d4, #26", d5, d4, i32, 16); 1106 TESTINSN_un_q("vqshl.u32 d5, d4, #17", d5, d4, i32, 16); 1107 TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, -1); 1108 TESTINSN_un_q("vqshl.u32 d5, d4, #29", d5, d4, i32, -1); 1109 TESTINSN_un_q("vqshl.u32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1110 TESTINSN_un_q("vqshl.u16 d9, d8, #1", d9, d8, i32, 1); 1111 TESTINSN_un_q("vqshl.u16 d31, d30, #1", d31, d30, i32, -127); 1112 TESTINSN_un_q("vqshl.u16 d5, d4, #0", d5, d4, i32, -127); 1113 TESTINSN_un_q("vqshl.u16 d9, d8, #15", d9, d8, i32, 16); 1114 TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, 16); 1115 TESTINSN_un_q("vqshl.u16 d5, d4, #11", d5, d4, i32, 16); 1116 TESTINSN_un_q("vqshl.u16 d5, d4, #10", d5, d4, i32, 16); 1117 TESTINSN_un_q("vqshl.u16 d5, d4, #4", d5, d4, i32, 16); 1118 TESTINSN_un_q("vqshl.u16 d5, d4, #15", d5, d4, i32, -1); 1119 TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, -1); 1120 TESTINSN_un_q("vqshl.u16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1121 TESTINSN_un_q("vqshl.u8 d0, d1, #1", d0, d1, i32, 1); 1122 TESTINSN_un_q("vqshl.u8 d31, d30, #1", d31, d30, i32, -127); 1123 TESTINSN_un_q("vqshl.u8 d5, d4, #0", d5, d4, i32, -127); 1124 TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, 16); 1125 TESTINSN_un_q("vqshl.u8 d5, d4, #4", d5, d4, i32, 16); 1126 TESTINSN_un_q("vqshl.u8 d5, d4, #3", d5, d4, i32, 16); 1127 TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, 16); 1128 TESTINSN_un_q("vqshl.u8 d5, d4, #1", d5, d4, i32, 16); 1129 TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, -1); 1130 TESTINSN_un_q("vqshl.u8 d5, d4, #5", d5, d4, i32, -1); 1131 TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 1132 TESTINSN_un_q("vqshlu.s64 d0, d1, #1", d0, d1, i32, 1); 1133 TESTINSN_un_q("vqshlu.s64 d31, d30, #1", d31, d30, i32, -127); 1134 TESTINSN_un_q("vqshlu.s64 d5, d4, #0", d5, d4, i32, -127); 1135 TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, 16); 1136 TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, 16); 1137 TESTINSN_un_q("vqshlu.s64 d5, d4, #59", d5, d4, i32, 16); 1138 TESTINSN_un_q("vqshlu.s64 d5, d4, #58", d5, d4, i32, 16); 1139 TESTINSN_un_q("vqshlu.s64 d5, d4, #17", d5, d4, i32, 16); 1140 TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, -1); 1141 TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, -1); 1142 TESTINSN_un_q("vqshlu.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1143 TESTINSN_un_q("vqshlu.s32 d10, d11, #1", d10, d11, i32, 1); 1144 TESTINSN_un_q("vqshlu.s32 d31, d30, #1", d31, d30, i32, -127); 1145 TESTINSN_un_q("vqshlu.s32 d5, d4, #0", d5, d4, i32, -127); 1146 TESTINSN_un_q("vqshlu.s32 d5, d4, #31", d5, d4, i32, 16); 1147 TESTINSN_un_q("vqshlu.s32 d25, d24, #28", d25, d24, i32, 16); 1148 TESTINSN_un_q("vqshlu.s32 d5, d4, #27", d5, d4, i32, 16); 1149 TESTINSN_un_q("vqshlu.s32 d5, d4, #26", d5, d4, i32, 16); 1150 TESTINSN_un_q("vqshlu.s32 d5, d4, #17", d5, d4, i32, 16); 1151 TESTINSN_un_q("vqshlu.s32 d5, d24, #31", d5, d24, i32, -1); 1152 TESTINSN_un_q("vqshlu.s32 d5, d4, #29", d5, d4, i32, -1); 1153 TESTINSN_un_q("vqshlu.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1154 TESTINSN_un_q("vqshlu.s16 d9, d8, #1", d9, d8, i32, 1); 1155 TESTINSN_un_q("vqshlu.s16 d31, d30, #1", d31, d30, i32, -127); 1156 TESTINSN_un_q("vqshlu.s16 d5, d4, #0", d5, d4, i32, -127); 1157 TESTINSN_un_q("vqshlu.s16 d9, d8, #15", d9, d8, i32, 16); 1158 TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, 16); 1159 TESTINSN_un_q("vqshlu.s16 d5, d4, #11", d5, d4, i32, 16); 1160 TESTINSN_un_q("vqshlu.s16 d5, d4, #10", d5, d4, i32, 16); 1161 TESTINSN_un_q("vqshlu.s16 d5, d4, #4", d5, d4, i32, 16); 1162 TESTINSN_un_q("vqshlu.s16 d15, d14, #15", d15, d14, i32, -1); 1163 TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, -1); 1164 TESTINSN_un_q("vqshlu.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1165 TESTINSN_un_q("vqshlu.s8 d0, d1, #1", d0, d1, i32, 1); 1166 TESTINSN_un_q("vqshlu.s8 d31, d30, #1", d31, d30, i32, -127); 1167 TESTINSN_un_q("vqshlu.s8 d5, d4, #0", d5, d4, i32, -127); 1168 TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, 16); 1169 TESTINSN_un_q("vqshlu.s8 d5, d4, #4", d5, d4, i32, 16); 1170 TESTINSN_un_q("vqshlu.s8 d5, d4, #3", d5, d4, i32, 16); 1171 TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, 16); 1172 TESTINSN_un_q("vqshlu.s8 d5, d4, #1", d5, d4, i32, 16); 1173 TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, -1); 1174 TESTINSN_un_q("vqshlu.s8 d5, d4, #5", d5, d4, i32, -1); 1175 TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 1176 1177 printf("---- VQRSHL (register) ----\n"); 1178 TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1179 TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1180 TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1181 TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1182 TESTINSN_bin_q("vqrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1183 TESTINSN_bin_q("vqrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1184 TESTINSN_bin_q("vqrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1185 TESTINSN_bin_q("vqrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1186 TESTINSN_bin_q("vqrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1187 TESTINSN_bin_q("vqrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1188 TESTINSN_bin_q("vqrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1189 TESTINSN_bin_q("vqrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1190 TESTINSN_bin_q("vqrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1191 TESTINSN_bin_q("vqrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1192 TESTINSN_bin_q("vqrshl.s16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 1193 TESTINSN_bin_q("vqrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1194 TESTINSN_bin_q("vqrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1195 TESTINSN_bin_q("vqrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1196 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1197 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1198 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1199 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1200 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1201 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1202 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1203 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1204 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1205 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1206 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1207 TESTINSN_bin_q("vqrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, 0); 1208 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1209 TESTINSN_bin_q("vqrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1210 TESTINSN_bin_q("vqrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1211 TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1212 TESTINSN_bin_q("vqrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1213 TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1214 TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1215 TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1216 TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1217 TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1218 TESTINSN_bin_q("vqrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1219 TESTINSN_bin_q("vqrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1220 TESTINSN_bin_q("vqrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1221 TESTINSN_bin_q("vqrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1222 TESTINSN_bin_q("vqrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1223 TESTINSN_bin_q("vqrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1224 TESTINSN_bin_q("vqrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1225 TESTINSN_bin_q("vqrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1226 TESTINSN_bin_q("vqrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1227 TESTINSN_bin_q("vqrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1228 TESTINSN_bin_q("vqrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 1229 TESTINSN_bin_q("vqrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1230 TESTINSN_bin_q("vqrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1231 TESTINSN_bin_q("vqrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1232 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1233 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1234 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1235 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1236 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1237 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1238 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1239 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1240 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1241 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1242 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1243 TESTINSN_bin_q("vqrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1244 TESTINSN_bin_q("vqrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1245 TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1246 TESTINSN_bin_q("vqrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1247 TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1248 1249 printf("---- VRSHL (register) ----\n"); 1250 TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1251 TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1252 TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1253 TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1254 TESTINSN_bin("vrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1255 TESTINSN_bin("vrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1256 TESTINSN_bin("vrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1257 TESTINSN_bin("vrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1258 TESTINSN_bin("vrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1259 TESTINSN_bin("vrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1260 TESTINSN_bin("vrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1261 TESTINSN_bin("vrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1262 TESTINSN_bin("vrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1263 TESTINSN_bin("vrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1264 TESTINSN_bin("vrshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 1265 TESTINSN_bin("vrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1266 TESTINSN_bin("vrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1267 TESTINSN_bin("vrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1268 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1269 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1270 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1271 TESTINSN_bin("vrshl.s8 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 1272 TESTINSN_bin("vrshl.s16 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 1273 TESTINSN_bin("vrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 1274 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1275 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1276 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1277 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1278 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1279 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1280 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1281 TESTINSN_bin("vrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1282 TESTINSN_bin("vrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1283 TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1284 TESTINSN_bin("vrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1285 TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1286 TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1287 TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1288 TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1289 TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1290 TESTINSN_bin("vrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1291 TESTINSN_bin("vrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1292 TESTINSN_bin("vrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1293 TESTINSN_bin("vrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1294 TESTINSN_bin("vrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1295 TESTINSN_bin("vrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1296 TESTINSN_bin("vrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1297 TESTINSN_bin("vrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1298 TESTINSN_bin("vrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1299 TESTINSN_bin("vrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1300 TESTINSN_bin("vrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 1301 TESTINSN_bin("vrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1302 TESTINSN_bin("vrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1303 TESTINSN_bin("vrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1304 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1305 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1306 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1307 TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1308 TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1309 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1310 TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1311 TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1312 TESTINSN_bin("vrshl.u8 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 1313 TESTINSN_bin("vrshl.u16 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 1314 TESTINSN_bin("vrshl.u32 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 1315 TESTINSN_bin("vrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1316 TESTINSN_bin("vrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1317 TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1318 TESTINSN_bin("vrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1319 TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1320 1321 printf("---- VMAX (integer) ----\n"); 1322 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 1323 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 1324 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1325 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1326 TESTINSN_bin("vmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 1327 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1328 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1329 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1330 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1331 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1332 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1333 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1334 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1335 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1336 TESTINSN_bin("vmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1337 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1338 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 1339 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1340 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1341 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 1342 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1343 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1344 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1345 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1346 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1347 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1348 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1349 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1350 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1351 TESTINSN_bin("vmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1352 1353 printf("---- VMIN (integer) ----\n"); 1354 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 1355 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 1356 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1357 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 1358 TESTINSN_bin("vmin.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1359 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1360 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1361 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1362 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1363 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1364 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1365 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1366 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1367 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1368 TESTINSN_bin("vmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1369 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1370 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 1371 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1372 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 1373 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1374 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1375 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1376 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1377 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1378 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1379 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1380 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1381 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1382 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1383 TESTINSN_bin("vmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1384 1385 printf("---- VABD ----\n"); 1386 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1387 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 1388 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120); 1389 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1390 TESTINSN_bin("vabd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1391 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1392 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1393 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1394 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1395 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1396 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1397 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1398 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1399 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1400 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1401 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1402 TESTINSN_bin("vabd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1403 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1404 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1405 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, -140, d2, i32, 120); 1406 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1407 TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1408 TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1409 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1410 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1411 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1412 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1413 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1414 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1415 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1416 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1417 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1418 TESTINSN_bin("vabd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1419 1420 printf("---- VABA ----\n"); 1421 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1422 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 1423 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1424 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1425 TESTINSN_bin("vaba.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1426 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1427 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1428 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1429 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1430 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1431 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1432 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1433 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1434 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1435 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1436 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1437 TESTINSN_bin("vaba.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1438 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1439 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1440 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1441 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1442 TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1443 TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1444 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1445 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1446 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1447 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1448 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1449 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1450 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1451 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1452 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1453 TESTINSN_bin("vaba.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1454 1455 printf("---- VTST ----\n"); 1456 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 1457 TESTINSN_bin("vtst.32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120); 1458 TESTINSN_bin("vtst.16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120); 1459 TESTINSN_bin("vtst.8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120); 1460 TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1461 TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 1462 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1463 TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2); 1464 TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 1465 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2); 1466 TESTINSN_bin("vtst.32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1467 1468 printf("---- VCEQ ----\n"); 1469 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 1470 TESTINSN_bin("vceq.i32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120); 1471 TESTINSN_bin("vceq.i16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120); 1472 TESTINSN_bin("vceq.i8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120); 1473 TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1474 TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 1475 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1476 TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2); 1477 TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 14) + 1); 1478 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2); 1479 TESTINSN_bin("vceq.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1480 1481 printf("---- VMLA ----\n"); 1482 TESTINSN_bin("vmla.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120); 1483 TESTINSN_bin("vmla.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, 120); 1484 TESTINSN_bin("vmla.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 1485 TESTINSN_bin("vmla.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120); 1486 TESTINSN_bin("vmla.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1487 TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1488 TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1489 TESTINSN_bin("vmla.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1490 TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1491 TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1492 TESTINSN_bin("vmla.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, -120); 1493 1494 printf("---- VMLS ----\n"); 1495 TESTINSN_bin("vmls.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120); 1496 TESTINSN_bin("vmls.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 1497 TESTINSN_bin("vmls.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 1498 TESTINSN_bin("vmls.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1499 TESTINSN_bin("vmls.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1500 TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1501 TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1502 TESTINSN_bin("vmls.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1503 TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1504 TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1505 TESTINSN_bin("vmls.i32 d10, d11, d15", d10, d11, i32, -24, d15, i32, 120); 1506 1507 printf("---- VMUL ----\n"); 1508 TESTINSN_bin("vmul.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 1509 TESTINSN_bin("vmul.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 1510 TESTINSN_bin("vmul.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 1511 TESTINSN_bin("vmul.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1512 TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1513 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1514 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1515 TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 25) + 0xfeb2, d12, i32, (1 << 13) + 0xdf); 1516 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1517 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 1518 TESTINSN_bin("vmul.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1519 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1520 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1521 TESTINSN_bin("vmul.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 1522 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3); 1523 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f); 1524 1525 printf("---- VMUL (by scalar) ----\n"); 1526 TESTINSN_bin("vmul.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120); 1527 TESTINSN_bin("vmul.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 1528 TESTINSN_bin("vmul.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 1529 TESTINSN_bin("vmul.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1530 TESTINSN_bin("vmul.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1531 TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1532 TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 1533 TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1534 TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1535 1536 printf("---- VMLA (by scalar) ----\n"); 1537 TESTINSN_bin("vmla.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120); 1538 TESTINSN_bin("vmla.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 1539 TESTINSN_bin("vmla.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 1540 TESTINSN_bin("vmla.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1541 TESTINSN_bin("vmla.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1542 TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1543 TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 1544 TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1545 TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1546 1547 printf("---- VMLS (by scalar) ----\n"); 1548 TESTINSN_bin("vmls.i32 d0, d1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 1549 TESTINSN_bin("vmls.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 1550 TESTINSN_bin("vmls.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 1551 TESTINSN_bin("vmls.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1552 TESTINSN_bin("vmls.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1553 TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1554 TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 1555 TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1556 TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1557 1558 printf("---- VRSHR ----\n"); 1559 TESTINSN_un("vrshr.s8 d0, d1, #0", d0, d1, i32, -1); 1560 TESTINSN_un("vrshr.s8 d0, d1, #1", d0, d1, i32, -1); 1561 TESTINSN_un("vrshr.s16 d3, d4, #2", d3, d4, i32, -0x7c); 1562 TESTINSN_un("vrshr.s32 d2, d5, #31", d2, d5, i32, -1); 1563 TESTINSN_un("vrshr.s8 d6, d7, #7", d6, d7, i32, 0xffff); 1564 TESTINSN_un("vrshr.s16 d8, d9, #12", d8, d9, i32, -10); 1565 TESTINSN_un("vrshr.s32 d10, d11, #5", d10, d11, i32, 10234); 1566 TESTINSN_un("vrshr.u8 d12, d13, #1", d12, d13, i32, -1); 1567 TESTINSN_un("vrshr.u16 d14, d15, #11", d14, d15, i32, -1); 1568 TESTINSN_un("vrshr.u32 d10, d11, #9", d10, d11, i32, 1000); 1569 TESTINSN_un("vrshr.u8 d7, d13, #7", d7, d13, i32, -1); 1570 TESTINSN_un("vrshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 1571 TESTINSN_un("vrshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 1572 TESTINSN_un("vrshr.u64 d0, d1, #42", d0, d1, i32, -1); 1573 TESTINSN_un("vrshr.s64 d6, d7, #12", d6, d7, i32, 0xfac); 1574 TESTINSN_un("vrshr.u64 d8, d4, #9", d8, d4, i32, 13560); 1575 TESTINSN_un("vrshr.s64 d9, d12, #11", d9, d12, i32, 98710); 1576 1577 printf("---- VRSRA ----\n"); 1578 TESTINSN_un("vrsra.s8 d0, d1, #1", d0, d1, i32, -1); 1579 TESTINSN_un("vrsra.s16 d3, d4, #2", d3, d4, i32, -0x7c); 1580 TESTINSN_un("vrsra.s32 d2, d5, #31", d2, d5, i32, -1); 1581 TESTINSN_un("vrsra.s8 d6, d7, #7", d6, d7, i32, 0xffff); 1582 TESTINSN_un("vrsra.s16 d8, d9, #12", d8, d9, i32, -10); 1583 TESTINSN_un("vrsra.s32 d10, d11, #5", d10, d11, i32, 10234); 1584 TESTINSN_un("vrsra.u8 d12, d13, #1", d12, d13, i32, -1); 1585 TESTINSN_un("vrsra.u16 d14, d15, #11", d14, d15, i32, -1); 1586 TESTINSN_un("vrsra.u32 d10, d11, #9", d10, d11, i32, 1000); 1587 TESTINSN_un("vrsra.u8 d7, d13, #7", d7, d13, i32, -1); 1588 TESTINSN_un("vrsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 1589 TESTINSN_un("vrsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 1590 TESTINSN_un("vrsra.u64 d0, d1, #42", d0, d1, i32, -1); 1591 TESTINSN_un("vrsra.s64 d6, d7, #12", d6, d7, i32, 0xfac); 1592 TESTINSN_un("vrsra.u64 d8, d4, #9", d8, d4, i32, 13560); 1593 TESTINSN_un("vrsra.s64 d9, d12, #11", d9, d12, i32, 98710); 1594 1595 printf("---- VSHR ----\n"); 1596 TESTINSN_un("vshr.s8 d0, d1, #0", d0, d1, i32, -1); 1597 TESTINSN_un("vshr.s8 d0, d1, #1", d0, d1, i32, -1); 1598 TESTINSN_un("vshr.s16 d3, d4, #2", d3, d4, i32, -0x7c); 1599 TESTINSN_un("vshr.s32 d2, d5, #31", d2, d5, i32, -1); 1600 TESTINSN_un("vshr.s8 d6, d7, #7", d6, d7, i32, 0xffff); 1601 TESTINSN_un("vshr.s16 d8, d9, #12", d8, d9, i32, -10); 1602 TESTINSN_un("vshr.s32 d10, d11, #5", d10, d11, i32, 10234); 1603 TESTINSN_un("vshr.u8 d12, d13, #1", d12, d13, i32, -1); 1604 TESTINSN_un("vshr.u16 d14, d15, #11", d14, d15, i32, -1); 1605 TESTINSN_un("vshr.u32 d10, d11, #9", d10, d11, i32, 1000); 1606 TESTINSN_un("vshr.u8 d7, d13, #7", d7, d13, i32, -1); 1607 TESTINSN_un("vshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 1608 TESTINSN_un("vshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 1609 TESTINSN_un("vshr.u64 d0, d1, #42", d0, d1, i32, -1); 1610 TESTINSN_un("vshr.s64 d6, d7, #12", d6, d7, i32, 0xfac); 1611 TESTINSN_un("vshr.u64 d8, d4, #9", d8, d4, i32, 13560); 1612 TESTINSN_un("vshr.s64 d9, d12, #11", d9, d12, i32, 98710); 1613 1614 printf("---- VSRA ----\n"); 1615 TESTINSN_un("vsra.s8 d0, d1, #1", d0, d1, i32, -1); 1616 TESTINSN_un("vsra.s16 d3, d4, #2", d3, d4, i32, -0x7c); 1617 TESTINSN_un("vsra.s32 d2, d5, #31", d2, d5, i32, -1); 1618 TESTINSN_un("vsra.s8 d6, d7, #7", d6, d7, i32, 0xffff); 1619 TESTINSN_un("vsra.s16 d8, d9, #12", d8, d9, i32, -10); 1620 TESTINSN_un("vsra.s32 d10, d11, #5", d10, d11, i32, 10234); 1621 TESTINSN_un("vsra.u8 d12, d13, #1", d12, d13, i32, -1); 1622 TESTINSN_un("vsra.u16 d14, d15, #11", d14, d15, i32, -1); 1623 TESTINSN_un("vsra.u32 d10, d11, #9", d10, d11, i32, 1000); 1624 TESTINSN_un("vsra.u8 d7, d13, #7", d7, d13, i32, -1); 1625 TESTINSN_un("vsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 1626 TESTINSN_un("vsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 1627 TESTINSN_un("vsra.u64 d0, d1, #42", d0, d1, i32, -1); 1628 TESTINSN_un("vsra.s64 d6, d7, #12", d6, d7, i32, 0xfac); 1629 TESTINSN_un("vsra.u64 d8, d4, #9", d8, d4, i32, 13560); 1630 TESTINSN_un("vsra.s64 d9, d12, #11", d9, d12, i32, 98710); 1631 1632 printf("---- VSRI ----\n"); 1633 TESTINSN_un("vsri.16 d0, d1, #1", d0, d1, i32, -1); 1634 TESTINSN_un("vsri.16 d3, d4, #2", d3, d4, i32, -0x7c); 1635 TESTINSN_un("vsri.32 d2, d5, #31", d2, d5, i32, -1); 1636 TESTINSN_un("vsri.8 d6, d7, #7", d6, d7, i32, 0xffff); 1637 TESTINSN_un("vsri.16 d8, d9, #12", d8, d9, i32, -10); 1638 TESTINSN_un("vsri.32 d10, d11, #5", d10, d11, i32, 10234); 1639 TESTINSN_un("vsri.8 d12, d13, #1", d12, d13, i32, -1); 1640 TESTINSN_un("vsri.16 d14, d15, #11", d14, d15, i32, -1); 1641 TESTINSN_un("vsri.32 d10, d11, #9", d10, d11, i32, 1000); 1642 TESTINSN_un("vsri.8 d7, d13, #7", d7, d13, i32, -1); 1643 TESTINSN_un("vsri.16 d8, d1, #5", d8, d1, i32, 0xabcf); 1644 TESTINSN_un("vsri.32 d12, d3, #15", d12, d3, i32, -0x1b0); 1645 TESTINSN_un("vsri.64 d0, d1, #42", d0, d1, i32, -1); 1646 TESTINSN_un("vsri.64 d6, d7, #12", d6, d7, i32, 0xfac); 1647 TESTINSN_un("vsri.64 d8, d4, #9", d8, d4, i32, 13560); 1648 TESTINSN_un("vsri.64 d9, d12, #11", d9, d12, i32, 98710); 1649 1650 printf("---- VMOV (ARM core register to scalar) ----\n"); 1651 TESTINSN_core_to_scalar("vmov.32 d0[0], r5", d0, r5, 13); 1652 TESTINSN_core_to_scalar("vmov.32 d1[1], r3", d1, r3, 12); 1653 TESTINSN_core_to_scalar("vmov.16 d0[0], r5", d0, r5, 13); 1654 TESTINSN_core_to_scalar("vmov.16 d2[2], r6", d2, r6, 14); 1655 TESTINSN_core_to_scalar("vmov.16 d3[3], r1", d3, r1, 17); 1656 TESTINSN_core_to_scalar("vmov.8 d0[0], r5", d0, r5, 13); 1657 TESTINSN_core_to_scalar("vmov.8 d0[1], r5", d0, r5, 13); 1658 TESTINSN_core_to_scalar("vmov.8 d0[2], r5", d0, r5, 13); 1659 TESTINSN_core_to_scalar("vmov.8 d0[3], r5", d0, r5, 13); 1660 TESTINSN_core_to_scalar("vmov.8 d0[4], r5", d0, r5, 13); 1661 TESTINSN_core_to_scalar("vmov.8 d0[5], r5", d0, r5, 13); 1662 TESTINSN_core_to_scalar("vmov.8 d0[6], r5", d0, r5, 13); 1663 TESTINSN_core_to_scalar("vmov.8 d31[7], r5", d31, r5, 13); 1664 1665 printf("---- VMOV (scalar toARM core register) ----\n"); 1666 TESTINSN_scalar_to_core("vmov.32 r5, d0[0]", r5, d0, i32, 0x11223344); 1667 TESTINSN_scalar_to_core("vmov.32 r6, d5[1]", r6, d5, i32, 0x11223344); 1668 TESTINSN_scalar_to_core("vmov.u16 r5, d31[0]", r5, d31, i32, 0x11223344); 1669 TESTINSN_scalar_to_core("vmov.u16 r5, d30[1]", r5, d30, i32, 0x11223344); 1670 TESTINSN_scalar_to_core("vmov.u16 r5, d31[2]", r5, d31, i32, 0x11223344); 1671 TESTINSN_scalar_to_core("vmov.u16 r5, d31[3]", r5, d31, i32, 0x11223344); 1672 TESTINSN_scalar_to_core("vmov.u8 r2, d4[0]", r2, d4, i32, 0x11223344); 1673 TESTINSN_scalar_to_core("vmov.u8 r2, d4[1]", r2, d4, i32, 0x11223344); 1674 TESTINSN_scalar_to_core("vmov.u8 r2, d4[2]", r2, d4, i32, 0x11223344); 1675 TESTINSN_scalar_to_core("vmov.u8 r2, d4[3]", r2, d4, i32, 0x11223344); 1676 TESTINSN_scalar_to_core("vmov.u8 r2, d4[4]", r2, d4, i32, 0x11223344); 1677 TESTINSN_scalar_to_core("vmov.u8 r2, d4[5]", r2, d4, i32, 0x11223344); 1678 TESTINSN_scalar_to_core("vmov.u8 r2, d4[6]", r2, d4, i32, 0x11223344); 1679 TESTINSN_scalar_to_core("vmov.u8 r2, d4[7]", r2, d4, i32, 0x11223344); 1680 TESTINSN_scalar_to_core("vmov.s16 r5, d31[0]", r5, d31, i8, 128); 1681 TESTINSN_scalar_to_core("vmov.s16 r5, d30[1]", r5, d30, i8, 128); 1682 TESTINSN_scalar_to_core("vmov.s16 r5, d31[2]", r5, d31, i8, 128); 1683 TESTINSN_scalar_to_core("vmov.s16 r5, d31[3]", r5, d31, i8, 128); 1684 TESTINSN_scalar_to_core("vmov.s8 r2, d4[0]", r2, d4, i8, 128); 1685 TESTINSN_scalar_to_core("vmov.s8 r2, d4[1]", r2, d4, i8, 128); 1686 TESTINSN_scalar_to_core("vmov.s8 r2, d4[2]", r2, d4, i8, 128); 1687 TESTINSN_scalar_to_core("vmov.s8 r2, d4[3]", r2, d4, i8, 128); 1688 TESTINSN_scalar_to_core("vmov.s8 r2, d4[4]", r2, d4, i8, 128); 1689 TESTINSN_scalar_to_core("vmov.s8 r2, d4[5]", r2, d4, i8, 130); 1690 TESTINSN_scalar_to_core("vmov.s8 r2, d4[6]", r2, d4, i8, 129); 1691 TESTINSN_scalar_to_core("vmov.s8 r2, d4[7]", r2, d4, i8, 131); 1692 1693 printf("---- VLD1 (multiple single elements) ----\n"); 1694 TESTINSN_VLDn("vld1.8 {d0}", d0, d0, d0, d0); 1695 TESTINSN_VLDn("vld1.16 {d0}", d0, d0, d0, d0); 1696 TESTINSN_VLDn("vld1.32 {d0}", d0, d0, d0, d0); 1697 TESTINSN_VLDn("vld1.64 {d0}", d0, d0, d0, d0); 1698 TESTINSN_VLDn("vld1.8 {d9}", d9, d9, d9, d9); 1699 TESTINSN_VLDn("vld1.16 {d17}", d17, d17, d17, d17); 1700 TESTINSN_VLDn("vld1.32 {d31}", d31, d31, d31, d31); 1701 TESTINSN_VLDn("vld1.64 {d14}", d14, d14, d14, d14); 1702 TESTINSN_VLDn("vld1.8 {d0-d1}", d0, d1, d0, d1); 1703 TESTINSN_VLDn("vld1.16 {d0-d1}", d0, d1, d0, d1); 1704 TESTINSN_VLDn("vld1.32 {d5-d6}", d5, d6, d5, d6); 1705 TESTINSN_VLDn("vld1.64 {d30-d31}", d30, d31, d30, d31); 1706 TESTINSN_VLDn("vld1.8 {d0-d2}", d0, d1, d2, d0); 1707 TESTINSN_VLDn("vld1.16 {d0-d2}", d0, d1, d2, d0); 1708 TESTINSN_VLDn("vld1.32 {d0-d2}", d0, d1, d2, d0); 1709 TESTINSN_VLDn("vld1.64 {d0-d2}", d0, d1, d2, d0); 1710 TESTINSN_VLDn("vld1.8 {d0-d3}", d0, d1, d2, d3); 1711 TESTINSN_VLDn("vld1.16 {d0-d3}", d0, d1, d2, d3); 1712 TESTINSN_VLDn("vld1.32 {d0-d3}", d0, d1, d2, d3); 1713 TESTINSN_VLDn("vld1.64 {d0-d3}", d0, d1, d2, d3); 1714 1715 printf("---- VLD1 (single element to one lane) ----\n"); 1716 TESTINSN_VLDn("vld1.32 {d0[0]}", d0, d0, d0, d0); 1717 TESTINSN_VLDn("vld1.32 {d0[1]}", d0, d0, d0, d0); 1718 TESTINSN_VLDn("vld1.16 {d1[0]}", d1, d1, d1, d1); 1719 TESTINSN_VLDn("vld1.16 {d1[1]}", d1, d1, d1, d1); 1720 TESTINSN_VLDn("vld1.16 {d1[2]}", d1, d1, d1, d1); 1721 TESTINSN_VLDn("vld1.16 {d1[3]}", d1, d1, d1, d1); 1722 TESTINSN_VLDn("vld1.8 {d0[7]}", d0, d0, d0, d0); 1723 TESTINSN_VLDn("vld1.8 {d1[6]}", d1, d1, d1, d1); 1724 TESTINSN_VLDn("vld1.8 {d0[5]}", d0, d0, d0, d0); 1725 TESTINSN_VLDn("vld1.8 {d0[4]}", d0, d0, d0, d0); 1726 TESTINSN_VLDn("vld1.8 {d20[3]}", d20, d20, d20, d20); 1727 TESTINSN_VLDn("vld1.8 {d0[2]}", d0, d0, d0, d0); 1728 TESTINSN_VLDn("vld1.8 {d17[1]}", d17, d17, d17, d17); 1729 TESTINSN_VLDn("vld1.8 {d30[0]}", d30, d30, d30, d30); 1730 1731 printf("---- VLD1 (single element to all lanes) ----\n"); 1732 TESTINSN_VLDn("vld1.8 {d0[]}", d0, d0, d0, d0); 1733 TESTINSN_VLDn("vld1.16 {d0[]}", d0, d0, d0, d0); 1734 TESTINSN_VLDn("vld1.32 {d0[]}", d0, d0, d0, d0); 1735 TESTINSN_VLDn("vld1.8 {d9[]}", d9, d9, d9, d9); 1736 TESTINSN_VLDn("vld1.16 {d17[]}", d17, d17, d17, d17); 1737 TESTINSN_VLDn("vld1.32 {d31[]}", d31, d31, d31, d31); 1738 TESTINSN_VLDn("vld1.8 {d0[],d1[]}", d0, d1, d0, d1); 1739 TESTINSN_VLDn("vld1.16 {d0[],d1[]}", d0, d1, d0, d1); 1740 TESTINSN_VLDn("vld1.32 {d5[],d6[]}", d5, d6, d5, d6); 1741 1742 printf("---- VLD2 (multiple 2-elements) ----\n"); 1743 TESTINSN_VLDn("vld2.8 {d30-d31}", d30, d31, d30, d31); 1744 TESTINSN_VLDn("vld2.16 {d0-d1}", d0, d1, d0, d1); 1745 TESTINSN_VLDn("vld2.32 {d0-d1}", d0, d1, d0, d1); 1746 TESTINSN_VLDn("vld2.8 {d10,d12}", d10, d12, d10, d12); 1747 TESTINSN_VLDn("vld2.16 {d20,d22}", d20, d22, d20, d22); 1748 TESTINSN_VLDn("vld2.32 {d0,d2}", d0, d2, d0, d2); 1749 TESTINSN_VLDn("vld2.8 {d0-d3}", d0, d1, d2, d3); 1750 TESTINSN_VLDn("vld2.16 {d20-d23}", d20, d21, d22, d23); 1751 TESTINSN_VLDn("vld2.32 {d0-d3}", d0, d1, d2, d3); 1752 1753 printf("---- VLD2 (single 2-element structure to one lane) ----\n"); 1754 TESTINSN_VLDn("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 1755 TESTINSN_VLDn("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 1756 TESTINSN_VLDn("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 1757 TESTINSN_VLDn("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 1758 TESTINSN_VLDn("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 1759 TESTINSN_VLDn("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 1760 TESTINSN_VLDn("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 1761 TESTINSN_VLDn("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 1762 TESTINSN_VLDn("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 1763 TESTINSN_VLDn("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 1764 TESTINSN_VLDn("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 1765 TESTINSN_VLDn("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 1766 TESTINSN_VLDn("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 1767 TESTINSN_VLDn("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 1768 TESTINSN_VLDn("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 1769 TESTINSN_VLDn("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 1770 TESTINSN_VLDn("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 1771 TESTINSN_VLDn("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 1772 TESTINSN_VLDn("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 1773 TESTINSN_VLDn("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 1774 1775 printf("---- VLD2 (2-elements to all lanes) ----\n"); 1776 TESTINSN_VLDn("vld2.8 {d0[],d1[]}", d0, d1, d0, d1); 1777 TESTINSN_VLDn("vld2.16 {d0[],d1[]}", d0, d1, d0, d1); 1778 TESTINSN_VLDn("vld2.32 {d0[],d1[]}", d0, d1, d0, d1); 1779 TESTINSN_VLDn("vld2.8 {d9[],d11[]}", d9, d11, d9, d11); 1780 TESTINSN_VLDn("vld2.16 {d17[],d18[]}", d17, d18, d17, d18); 1781 TESTINSN_VLDn("vld2.32 {d30[],d31[]}", d30, d31, d30, d31); 1782 TESTINSN_VLDn("vld2.8 {d0[],d2[]}", d0, d2, d0, d2); 1783 TESTINSN_VLDn("vld2.16 {d0[],d2[]}", d0, d2, d0, d2); 1784 TESTINSN_VLDn("vld2.32 {d5[],d7[]}", d5, d7, d5, d7); 1785 1786 printf("---- VLD3 (multiple 3-elements) ----\n"); 1787 TESTINSN_VLDn("vld3.8 {d20-d22}", d20, d21, d22, d20); 1788 TESTINSN_VLDn("vld3.16 {d0-d2}", d0, d1, d2, d0); 1789 TESTINSN_VLDn("vld3.32 {d0-d2}", d0, d1, d2, d0); 1790 TESTINSN_VLDn("vld3.8 {d0,d2,d4}", d0, d2, d4, d0); 1791 TESTINSN_VLDn("vld3.16 {d20,d22,d24}", d20, d22, d24, d20); 1792 TESTINSN_VLDn("vld3.32 {d0,d2,d4}", d0, d2, d4, d0); 1793 1794 printf("---- VLD3 (single 3-element structure to one lane) ----\n"); 1795 TESTINSN_VLDn("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 1796 TESTINSN_VLDn("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 1797 TESTINSN_VLDn("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 1798 TESTINSN_VLDn("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 1799 TESTINSN_VLDn("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 1800 TESTINSN_VLDn("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 1801 TESTINSN_VLDn("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 1802 TESTINSN_VLDn("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 1803 TESTINSN_VLDn("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 1804 TESTINSN_VLDn("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 1805 TESTINSN_VLDn("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 1806 TESTINSN_VLDn("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 1807 TESTINSN_VLDn("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 1808 TESTINSN_VLDn("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 1809 TESTINSN_VLDn("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 1810 TESTINSN_VLDn("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 1811 TESTINSN_VLDn("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 1812 TESTINSN_VLDn("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 1813 TESTINSN_VLDn("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 1814 TESTINSN_VLDn("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 1815 1816 printf("---- VLD3 (3-elements to all lanes) ----\n"); 1817 TESTINSN_VLDn("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1); 1818 TESTINSN_VLDn("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1); 1819 TESTINSN_VLDn("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1); 1820 TESTINSN_VLDn("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11); 1821 TESTINSN_VLDn("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18); 1822 TESTINSN_VLDn("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31); 1823 TESTINSN_VLDn("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2); 1824 TESTINSN_VLDn("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2); 1825 TESTINSN_VLDn("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7); 1826 1827 printf("---- VLD4 (multiple 3-elements) ----\n"); 1828 TESTINSN_VLDn("vld4.8 {d0-d3}", d0, d1, d2, d3); 1829 TESTINSN_VLDn("vld4.16 {d20-d23}", d20, d21, d22, d23); 1830 TESTINSN_VLDn("vld4.32 {d0-d3}", d0, d1, d2, d3); 1831 TESTINSN_VLDn("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 1832 TESTINSN_VLDn("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 1833 TESTINSN_VLDn("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 1834 1835 printf("---- VLD4 (single 4-element structure to one lane) ----\n"); 1836 TESTINSN_VLDn("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 1837 TESTINSN_VLDn("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 1838 TESTINSN_VLDn("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 1839 TESTINSN_VLDn("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 1840 TESTINSN_VLDn("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 1841 TESTINSN_VLDn("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 1842 TESTINSN_VLDn("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 1843 TESTINSN_VLDn("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 1844 TESTINSN_VLDn("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 1845 TESTINSN_VLDn("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 1846 TESTINSN_VLDn("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 1847 TESTINSN_VLDn("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 1848 TESTINSN_VLDn("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 1849 TESTINSN_VLDn("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 1850 TESTINSN_VLDn("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 1851 TESTINSN_VLDn("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 1852 TESTINSN_VLDn("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 1853 TESTINSN_VLDn("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 1854 TESTINSN_VLDn("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 1855 TESTINSN_VLDn("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 1856 1857 printf("---- VLD4 (4-elements to all lanes) ----\n"); 1858 TESTINSN_VLDn("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 1859 TESTINSN_VLDn("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 1860 TESTINSN_VLDn("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 1861 TESTINSN_VLDn("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15); 1862 TESTINSN_VLDn("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20); 1863 TESTINSN_VLDn("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31); 1864 TESTINSN_VLDn("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 1865 TESTINSN_VLDn("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 1866 TESTINSN_VLDn("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11); 1867 1868 printf("---- VST1 (multiple single elements) ----\n"); 1869 TESTINSN_VSTn("vst1.8 {d0}", d0, d0, d0, d0); 1870 TESTINSN_VSTn("vst1.16 {d0}", d0, d0, d0, d0); 1871 TESTINSN_VSTn("vst1.32 {d0}", d0, d0, d0, d0); 1872 TESTINSN_VSTn("vst1.64 {d0}", d0, d0, d0, d0); 1873 TESTINSN_VSTn("vst1.8 {d9}", d9, d9, d9, d9); 1874 TESTINSN_VSTn("vst1.16 {d17}", d17, d17, d17, d17); 1875 TESTINSN_VSTn("vst1.32 {d31}", d31, d31, d31, d31); 1876 TESTINSN_VSTn("vst1.64 {d14}", d14, d14, d14, d14); 1877 TESTINSN_VSTn("vst1.8 {d0-d1}", d0, d1, d0, d1); 1878 TESTINSN_VSTn("vst1.16 {d0-d1}", d0, d1, d0, d1); 1879 TESTINSN_VSTn("vst1.32 {d5-d6}", d5, d6, d5, d6); 1880 TESTINSN_VSTn("vst1.64 {d30-d31}", d30, d31, d30, d31); 1881 TESTINSN_VSTn("vst1.8 {d0-d2}", d0, d1, d2, d0); 1882 TESTINSN_VSTn("vst1.16 {d0-d2}", d0, d1, d2, d0); 1883 TESTINSN_VSTn("vst1.32 {d0-d2}", d0, d1, d2, d0); 1884 TESTINSN_VSTn("vst1.64 {d0-d2}", d0, d1, d2, d0); 1885 TESTINSN_VSTn("vst1.8 {d0-d3}", d0, d1, d2, d3); 1886 TESTINSN_VSTn("vst1.16 {d0-d3}", d0, d1, d2, d3); 1887 TESTINSN_VSTn("vst1.32 {d0-d3}", d0, d1, d2, d3); 1888 TESTINSN_VSTn("vst1.64 {d0-d3}", d0, d1, d2, d3); 1889 1890 printf("---- VST1 (single element from one lane) ----\n"); 1891 TESTINSN_VSTn("vst1.32 {d0[0]}", d0, d0, d0, d0); 1892 TESTINSN_VSTn("vst1.32 {d0[1]}", d0, d0, d0, d0); 1893 TESTINSN_VSTn("vst1.16 {d1[0]}", d1, d1, d1, d1); 1894 TESTINSN_VSTn("vst1.16 {d1[1]}", d1, d1, d1, d1); 1895 TESTINSN_VSTn("vst1.16 {d1[2]}", d1, d1, d1, d1); 1896 TESTINSN_VSTn("vst1.16 {d1[3]}", d1, d1, d1, d1); 1897 TESTINSN_VSTn("vst1.8 {d0[7]}", d0, d0, d0, d0); 1898 TESTINSN_VSTn("vst1.8 {d1[6]}", d1, d1, d1, d1); 1899 TESTINSN_VSTn("vst1.8 {d0[5]}", d0, d0, d0, d0); 1900 TESTINSN_VSTn("vst1.8 {d0[4]}", d0, d0, d0, d0); 1901 TESTINSN_VSTn("vst1.8 {d20[3]}", d20, d20, d20, d20); 1902 TESTINSN_VSTn("vst1.8 {d0[2]}", d0, d0, d0, d0); 1903 TESTINSN_VSTn("vst1.8 {d17[1]}", d17, d17, d17, d17); 1904 TESTINSN_VSTn("vst1.8 {d30[0]}", d30, d30, d30, d30); 1905 1906 printf("---- VST2 (multiple 2-elements) ----\n"); 1907 TESTINSN_VSTn("vst2.8 {d30-d31}", d30, d31, d30, d31); 1908 TESTINSN_VSTn("vst2.16 {d0-d1}", d0, d1, d0, d1); 1909 TESTINSN_VSTn("vst2.32 {d0-d1}", d0, d1, d0, d1); 1910 TESTINSN_VSTn("vst2.8 {d10,d12}", d10, d12, d10, d12); 1911 TESTINSN_VSTn("vst2.16 {d20,d22}", d20, d22, d20, d22); 1912 TESTINSN_VSTn("vst2.32 {d0,d2}", d0, d2, d0, d2); 1913 TESTINSN_VSTn("vst2.8 {d0-d3}", d0, d1, d2, d3); 1914 TESTINSN_VSTn("vst2.16 {d20-d23}", d20, d21, d22, d23); 1915 TESTINSN_VSTn("vst2.32 {d0-d3}", d0, d1, d2, d3); 1916 1917 printf("---- VST2 (single 2-element structure from one lane) ----\n"); 1918 TESTINSN_VSTn("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 1919 TESTINSN_VSTn("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 1920 TESTINSN_VSTn("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 1921 TESTINSN_VSTn("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 1922 TESTINSN_VSTn("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 1923 TESTINSN_VSTn("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 1924 TESTINSN_VSTn("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 1925 TESTINSN_VSTn("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 1926 TESTINSN_VSTn("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 1927 TESTINSN_VSTn("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 1928 TESTINSN_VSTn("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 1929 TESTINSN_VSTn("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 1930 TESTINSN_VSTn("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 1931 TESTINSN_VSTn("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 1932 TESTINSN_VSTn("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 1933 TESTINSN_VSTn("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 1934 TESTINSN_VSTn("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 1935 TESTINSN_VSTn("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 1936 TESTINSN_VSTn("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 1937 TESTINSN_VSTn("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 1938 1939 printf("---- VST3 (multiple 3-elements) ----\n"); 1940 TESTINSN_VSTn("vst3.8 {d20-d22}", d20, d21, d22, d20); 1941 TESTINSN_VSTn("vst3.16 {d0-d2}", d0, d1, d2, d0); 1942 TESTINSN_VSTn("vst3.32 {d0-d2}", d0, d1, d2, d0); 1943 TESTINSN_VSTn("vst3.8 {d0,d2,d4}", d0, d2, d4, d0); 1944 TESTINSN_VSTn("vst3.16 {d20,d22,d24}", d20, d22, d24, d20); 1945 TESTINSN_VSTn("vst3.32 {d0,d2,d4}", d0, d2, d4, d0); 1946 1947 printf("---- VST3 (single 3-element structure from one lane) ----\n"); 1948 TESTINSN_VSTn("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 1949 TESTINSN_VSTn("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 1950 TESTINSN_VSTn("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 1951 TESTINSN_VSTn("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 1952 TESTINSN_VSTn("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 1953 TESTINSN_VSTn("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 1954 TESTINSN_VSTn("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 1955 TESTINSN_VSTn("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 1956 TESTINSN_VSTn("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 1957 TESTINSN_VSTn("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 1958 TESTINSN_VSTn("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 1959 TESTINSN_VSTn("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 1960 TESTINSN_VSTn("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 1961 TESTINSN_VSTn("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 1962 TESTINSN_VSTn("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 1963 TESTINSN_VSTn("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 1964 TESTINSN_VSTn("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 1965 TESTINSN_VSTn("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 1966 TESTINSN_VSTn("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 1967 TESTINSN_VSTn("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 1968 1969 printf("---- VST4 (multiple 4-elements) ----\n"); 1970 TESTINSN_VSTn("vst4.8 {d0-d3}", d0, d1, d2, d3); 1971 TESTINSN_VSTn("vst4.16 {d20-d23}", d20, d21, d22, d23); 1972 TESTINSN_VSTn("vst4.32 {d0-d3}", d0, d1, d2, d3); 1973 TESTINSN_VSTn("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 1974 TESTINSN_VSTn("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 1975 TESTINSN_VSTn("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 1976 1977 printf("---- VST4 (single 4-element structure from one lane) ----\n"); 1978 TESTINSN_VSTn("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 1979 TESTINSN_VSTn("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 1980 TESTINSN_VSTn("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 1981 TESTINSN_VSTn("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 1982 TESTINSN_VSTn("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 1983 TESTINSN_VSTn("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 1984 TESTINSN_VSTn("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 1985 TESTINSN_VSTn("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 1986 TESTINSN_VSTn("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 1987 TESTINSN_VSTn("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 1988 TESTINSN_VSTn("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 1989 TESTINSN_VSTn("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 1990 TESTINSN_VSTn("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 1991 TESTINSN_VSTn("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 1992 TESTINSN_VSTn("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 1993 TESTINSN_VSTn("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 1994 TESTINSN_VSTn("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 1995 TESTINSN_VSTn("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 1996 TESTINSN_VSTn("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 1997 TESTINSN_VSTn("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 1998 1999 printf("---- VLD1 (multiple single elements) ----\n"); 2000 TESTINSN_VLDn_WB("vld1.8 {d0}", d0, d0, d0, d0); 2001 TESTINSN_VLDn_WB("vld1.16 {d0}", d0, d0, d0, d0); 2002 TESTINSN_VLDn_WB("vld1.32 {d0}", d0, d0, d0, d0); 2003 TESTINSN_VLDn_WB("vld1.64 {d0}", d0, d0, d0, d0); 2004 TESTINSN_VLDn_WB("vld1.8 {d9}", d9, d9, d9, d9); 2005 TESTINSN_VLDn_WB("vld1.16 {d17}", d17, d17, d17, d17); 2006 TESTINSN_VLDn_WB("vld1.32 {d31}", d31, d31, d31, d31); 2007 TESTINSN_VLDn_WB("vld1.64 {d14}", d14, d14, d14, d14); 2008 TESTINSN_VLDn_WB("vld1.8 {d0-d1}", d0, d1, d0, d1); 2009 TESTINSN_VLDn_WB("vld1.16 {d0-d1}", d0, d1, d0, d1); 2010 TESTINSN_VLDn_WB("vld1.32 {d5-d6}", d5, d6, d5, d6); 2011 TESTINSN_VLDn_WB("vld1.64 {d30-d31}", d30, d31, d30, d31); 2012 TESTINSN_VLDn_WB("vld1.8 {d0-d2}", d0, d1, d2, d0); 2013 TESTINSN_VLDn_WB("vld1.16 {d0-d2}", d0, d1, d2, d0); 2014 TESTINSN_VLDn_WB("vld1.32 {d0-d2}", d0, d1, d2, d0); 2015 TESTINSN_VLDn_WB("vld1.64 {d0-d2}", d0, d1, d2, d0); 2016 TESTINSN_VLDn_WB("vld1.8 {d0-d3}", d0, d1, d2, d3); 2017 TESTINSN_VLDn_WB("vld1.16 {d0-d3}", d0, d1, d2, d3); 2018 TESTINSN_VLDn_WB("vld1.32 {d0-d3}", d0, d1, d2, d3); 2019 TESTINSN_VLDn_WB("vld1.64 {d0-d3}", d0, d1, d2, d3); 2020 2021 printf("---- VLD1 (single element to one lane) ----\n"); 2022 TESTINSN_VLDn_WB("vld1.32 {d0[0]}", d0, d0, d0, d0); 2023 TESTINSN_VLDn_WB("vld1.32 {d0[1]}", d0, d0, d0, d0); 2024 TESTINSN_VLDn_WB("vld1.16 {d1[0]}", d1, d1, d1, d1); 2025 TESTINSN_VLDn_WB("vld1.16 {d1[1]}", d1, d1, d1, d1); 2026 TESTINSN_VLDn_WB("vld1.16 {d1[2]}", d1, d1, d1, d1); 2027 TESTINSN_VLDn_WB("vld1.16 {d1[3]}", d1, d1, d1, d1); 2028 TESTINSN_VLDn_WB("vld1.8 {d0[7]}", d0, d0, d0, d0); 2029 TESTINSN_VLDn_WB("vld1.8 {d1[6]}", d1, d1, d1, d1); 2030 TESTINSN_VLDn_WB("vld1.8 {d0[5]}", d0, d0, d0, d0); 2031 TESTINSN_VLDn_WB("vld1.8 {d0[4]}", d0, d0, d0, d0); 2032 TESTINSN_VLDn_WB("vld1.8 {d20[3]}", d20, d20, d20, d20); 2033 TESTINSN_VLDn_WB("vld1.8 {d0[2]}", d0, d0, d0, d0); 2034 TESTINSN_VLDn_WB("vld1.8 {d17[1]}", d17, d17, d17, d17); 2035 TESTINSN_VLDn_WB("vld1.8 {d30[0]}", d30, d30, d30, d30); 2036 2037 printf("---- VLD1 (single element to all lanes) ----\n"); 2038 TESTINSN_VLDn_WB("vld1.8 {d0[]}", d0, d0, d0, d0); 2039 TESTINSN_VLDn_WB("vld1.16 {d0[]}", d0, d0, d0, d0); 2040 TESTINSN_VLDn_WB("vld1.32 {d0[]}", d0, d0, d0, d0); 2041 TESTINSN_VLDn_WB("vld1.8 {d9[]}", d9, d9, d9, d9); 2042 TESTINSN_VLDn_WB("vld1.16 {d17[]}", d17, d17, d17, d17); 2043 TESTINSN_VLDn_WB("vld1.32 {d31[]}", d31, d31, d31, d31); 2044 TESTINSN_VLDn_WB("vld1.8 {d0[],d1[]}", d0, d1, d0, d1); 2045 TESTINSN_VLDn_WB("vld1.16 {d0[],d1[]}", d0, d1, d0, d1); 2046 TESTINSN_VLDn_WB("vld1.32 {d5[],d6[]}", d5, d6, d5, d6); 2047 2048 printf("---- VLD2 (multiple 2-elements) ----\n"); 2049 TESTINSN_VLDn_WB("vld2.8 {d30-d31}", d30, d31, d30, d31); 2050 TESTINSN_VLDn_WB("vld2.16 {d0-d1}", d0, d1, d0, d1); 2051 TESTINSN_VLDn_WB("vld2.32 {d0-d1}", d0, d1, d0, d1); 2052 TESTINSN_VLDn_WB("vld2.8 {d10,d12}", d10, d12, d10, d12); 2053 TESTINSN_VLDn_WB("vld2.16 {d20,d22}", d20, d22, d20, d22); 2054 TESTINSN_VLDn_WB("vld2.32 {d0,d2}", d0, d2, d0, d2); 2055 TESTINSN_VLDn_WB("vld2.8 {d0-d3}", d0, d1, d2, d3); 2056 TESTINSN_VLDn_WB("vld2.16 {d20-d23}", d20, d21, d22, d23); 2057 TESTINSN_VLDn_WB("vld2.32 {d0-d3}", d0, d1, d2, d3); 2058 2059 printf("---- VLD2 (single 2-element structure to one lane) ----\n"); 2060 TESTINSN_VLDn_WB("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 2061 TESTINSN_VLDn_WB("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 2062 TESTINSN_VLDn_WB("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 2063 TESTINSN_VLDn_WB("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 2064 TESTINSN_VLDn_WB("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 2065 TESTINSN_VLDn_WB("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 2066 TESTINSN_VLDn_WB("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 2067 TESTINSN_VLDn_WB("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 2068 TESTINSN_VLDn_WB("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 2069 TESTINSN_VLDn_WB("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 2070 TESTINSN_VLDn_WB("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 2071 TESTINSN_VLDn_WB("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 2072 TESTINSN_VLDn_WB("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 2073 TESTINSN_VLDn_WB("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 2074 TESTINSN_VLDn_WB("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 2075 TESTINSN_VLDn_WB("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 2076 TESTINSN_VLDn_WB("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 2077 TESTINSN_VLDn_WB("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 2078 TESTINSN_VLDn_WB("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 2079 TESTINSN_VLDn_WB("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 2080 2081 printf("---- VLD2 (2-elements to all lanes) ----\n"); 2082 TESTINSN_VLDn_WB("vld2.8 {d0[],d1[]}", d0, d1, d0, d1); 2083 TESTINSN_VLDn_WB("vld2.16 {d0[],d1[]}", d0, d1, d0, d1); 2084 TESTINSN_VLDn_WB("vld2.32 {d0[],d1[]}", d0, d1, d0, d1); 2085 TESTINSN_VLDn_WB("vld2.8 {d9[],d11[]}", d9, d11, d9, d11); 2086 TESTINSN_VLDn_WB("vld2.16 {d17[],d18[]}", d17, d18, d17, d18); 2087 TESTINSN_VLDn_WB("vld2.32 {d30[],d31[]}", d30, d31, d30, d31); 2088 TESTINSN_VLDn_WB("vld2.8 {d0[],d2[]}", d0, d2, d0, d2); 2089 TESTINSN_VLDn_WB("vld2.16 {d0[],d2[]}", d0, d2, d0, d2); 2090 TESTINSN_VLDn_WB("vld2.32 {d5[],d7[]}", d5, d7, d5, d7); 2091 2092 printf("---- VLD3 (multiple 3-elements) ----\n"); 2093 TESTINSN_VLDn_WB("vld3.8 {d20-d22}", d20, d21, d22, d20); 2094 TESTINSN_VLDn_WB("vld3.16 {d0-d2}", d0, d1, d2, d0); 2095 TESTINSN_VLDn_WB("vld3.32 {d0-d2}", d0, d1, d2, d0); 2096 TESTINSN_VLDn_WB("vld3.8 {d0,d2,d4}", d0, d2, d4, d0); 2097 TESTINSN_VLDn_WB("vld3.16 {d20,d22,d24}", d20, d22, d24, d20); 2098 TESTINSN_VLDn_WB("vld3.32 {d0,d2,d4}", d0, d2, d4, d0); 2099 2100 printf("---- VLD3 (single 3-element structure to one lane) ----\n"); 2101 TESTINSN_VLDn_WB("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 2102 TESTINSN_VLDn_WB("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 2103 TESTINSN_VLDn_WB("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 2104 TESTINSN_VLDn_WB("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 2105 TESTINSN_VLDn_WB("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 2106 TESTINSN_VLDn_WB("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 2107 TESTINSN_VLDn_WB("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 2108 TESTINSN_VLDn_WB("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 2109 TESTINSN_VLDn_WB("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 2110 TESTINSN_VLDn_WB("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 2111 TESTINSN_VLDn_WB("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 2112 TESTINSN_VLDn_WB("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 2113 TESTINSN_VLDn_WB("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 2114 TESTINSN_VLDn_WB("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 2115 TESTINSN_VLDn_WB("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 2116 TESTINSN_VLDn_WB("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 2117 TESTINSN_VLDn_WB("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 2118 TESTINSN_VLDn_WB("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 2119 TESTINSN_VLDn_WB("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 2120 TESTINSN_VLDn_WB("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 2121 2122 printf("---- VLD3 (3-elements to all lanes) ----\n"); 2123 TESTINSN_VLDn_WB("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1); 2124 TESTINSN_VLDn_WB("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1); 2125 TESTINSN_VLDn_WB("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1); 2126 TESTINSN_VLDn_WB("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11); 2127 TESTINSN_VLDn_WB("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18); 2128 TESTINSN_VLDn_WB("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31); 2129 TESTINSN_VLDn_WB("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2); 2130 TESTINSN_VLDn_WB("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2); 2131 TESTINSN_VLDn_WB("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7); 2132 2133 printf("---- VLD4 (multiple 3-elements) ----\n"); 2134 TESTINSN_VLDn_WB("vld4.8 {d0-d3}", d0, d1, d2, d3); 2135 TESTINSN_VLDn_WB("vld4.16 {d20-d23}", d20, d21, d22, d23); 2136 TESTINSN_VLDn_WB("vld4.32 {d0-d3}", d0, d1, d2, d3); 2137 TESTINSN_VLDn_WB("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 2138 TESTINSN_VLDn_WB("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 2139 TESTINSN_VLDn_WB("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 2140 2141 printf("---- VLD4 (single 4-element structure to one lane) ----\n"); 2142 TESTINSN_VLDn_WB("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 2143 TESTINSN_VLDn_WB("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 2144 TESTINSN_VLDn_WB("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 2145 TESTINSN_VLDn_WB("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 2146 TESTINSN_VLDn_WB("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 2147 TESTINSN_VLDn_WB("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 2148 TESTINSN_VLDn_WB("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 2149 TESTINSN_VLDn_WB("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 2150 TESTINSN_VLDn_WB("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 2151 TESTINSN_VLDn_WB("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 2152 TESTINSN_VLDn_WB("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 2153 TESTINSN_VLDn_WB("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 2154 TESTINSN_VLDn_WB("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 2155 TESTINSN_VLDn_WB("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 2156 TESTINSN_VLDn_WB("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 2157 TESTINSN_VLDn_WB("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 2158 TESTINSN_VLDn_WB("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 2159 TESTINSN_VLDn_WB("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 2160 TESTINSN_VLDn_WB("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 2161 TESTINSN_VLDn_WB("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 2162 2163 printf("---- VLD4 (4-elements to all lanes) ----\n"); 2164 TESTINSN_VLDn_WB("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 2165 TESTINSN_VLDn_WB("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 2166 TESTINSN_VLDn_WB("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 2167 TESTINSN_VLDn_WB("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15); 2168 TESTINSN_VLDn_WB("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20); 2169 TESTINSN_VLDn_WB("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31); 2170 TESTINSN_VLDn_WB("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 2171 TESTINSN_VLDn_WB("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 2172 TESTINSN_VLDn_WB("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11); 2173 2174 printf("---- VST1 (multiple single elements) ----\n"); 2175 TESTINSN_VSTn_WB("vst1.8 {d0}", d0, d0, d0, d0); 2176 TESTINSN_VSTn_WB("vst1.16 {d0}", d0, d0, d0, d0); 2177 TESTINSN_VSTn_WB("vst1.32 {d0}", d0, d0, d0, d0); 2178 TESTINSN_VSTn_WB("vst1.64 {d0}", d0, d0, d0, d0); 2179 TESTINSN_VSTn_WB("vst1.8 {d9}", d9, d9, d9, d9); 2180 TESTINSN_VSTn_WB("vst1.16 {d17}", d17, d17, d17, d17); 2181 TESTINSN_VSTn_WB("vst1.32 {d31}", d31, d31, d31, d31); 2182 TESTINSN_VSTn_WB("vst1.64 {d14}", d14, d14, d14, d14); 2183 TESTINSN_VSTn_WB("vst1.8 {d0-d1}", d0, d1, d0, d1); 2184 TESTINSN_VSTn_WB("vst1.16 {d0-d1}", d0, d1, d0, d1); 2185 TESTINSN_VSTn_WB("vst1.32 {d5-d6}", d5, d6, d5, d6); 2186 TESTINSN_VSTn_WB("vst1.64 {d30-d31}", d30, d31, d30, d31); 2187 TESTINSN_VSTn_WB("vst1.8 {d0-d2}", d0, d1, d2, d0); 2188 TESTINSN_VSTn_WB("vst1.16 {d0-d2}", d0, d1, d2, d0); 2189 TESTINSN_VSTn_WB("vst1.32 {d0-d2}", d0, d1, d2, d0); 2190 TESTINSN_VSTn_WB("vst1.64 {d0-d2}", d0, d1, d2, d0); 2191 TESTINSN_VSTn_WB("vst1.8 {d0-d3}", d0, d1, d2, d3); 2192 TESTINSN_VSTn_WB("vst1.16 {d0-d3}", d0, d1, d2, d3); 2193 TESTINSN_VSTn_WB("vst1.32 {d0-d3}", d0, d1, d2, d3); 2194 TESTINSN_VSTn_WB("vst1.64 {d0-d3}", d0, d1, d2, d3); 2195 2196 printf("---- VST1 (single element from one lane) ----\n"); 2197 TESTINSN_VSTn_WB("vst1.32 {d0[0]}", d0, d0, d0, d0); 2198 TESTINSN_VSTn_WB("vst1.32 {d0[1]}", d0, d0, d0, d0); 2199 TESTINSN_VSTn_WB("vst1.16 {d1[0]}", d1, d1, d1, d1); 2200 TESTINSN_VSTn_WB("vst1.16 {d1[1]}", d1, d1, d1, d1); 2201 TESTINSN_VSTn_WB("vst1.16 {d1[2]}", d1, d1, d1, d1); 2202 TESTINSN_VSTn_WB("vst1.16 {d1[3]}", d1, d1, d1, d1); 2203 TESTINSN_VSTn_WB("vst1.8 {d0[7]}", d0, d0, d0, d0); 2204 TESTINSN_VSTn_WB("vst1.8 {d1[6]}", d1, d1, d1, d1); 2205 TESTINSN_VSTn_WB("vst1.8 {d0[5]}", d0, d0, d0, d0); 2206 TESTINSN_VSTn_WB("vst1.8 {d0[4]}", d0, d0, d0, d0); 2207 TESTINSN_VSTn_WB("vst1.8 {d20[3]}", d20, d20, d20, d20); 2208 TESTINSN_VSTn_WB("vst1.8 {d0[2]}", d0, d0, d0, d0); 2209 TESTINSN_VSTn_WB("vst1.8 {d17[1]}", d17, d17, d17, d17); 2210 TESTINSN_VSTn_WB("vst1.8 {d30[0]}", d30, d30, d30, d30); 2211 2212 printf("---- VST2 (multiple 2-elements) ----\n"); 2213 TESTINSN_VSTn_WB("vst2.8 {d30-d31}", d30, d31, d30, d31); 2214 TESTINSN_VSTn_WB("vst2.16 {d0-d1}", d0, d1, d0, d1); 2215 TESTINSN_VSTn_WB("vst2.32 {d0-d1}", d0, d1, d0, d1); 2216 TESTINSN_VSTn_WB("vst2.8 {d10,d12}", d10, d12, d10, d12); 2217 TESTINSN_VSTn_WB("vst2.16 {d20,d22}", d20, d22, d20, d22); 2218 TESTINSN_VSTn_WB("vst2.32 {d0,d2}", d0, d2, d0, d2); 2219 TESTINSN_VSTn_WB("vst2.8 {d0-d3}", d0, d1, d2, d3); 2220 TESTINSN_VSTn_WB("vst2.16 {d20-d23}", d20, d21, d22, d23); 2221 TESTINSN_VSTn_WB("vst2.32 {d0-d3}", d0, d1, d2, d3); 2222 2223 printf("---- VST2 (single 2-element structure from one lane) ----\n"); 2224 TESTINSN_VSTn_WB("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 2225 TESTINSN_VSTn_WB("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 2226 TESTINSN_VSTn_WB("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 2227 TESTINSN_VSTn_WB("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 2228 TESTINSN_VSTn_WB("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 2229 TESTINSN_VSTn_WB("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 2230 TESTINSN_VSTn_WB("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 2231 TESTINSN_VSTn_WB("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 2232 TESTINSN_VSTn_WB("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 2233 TESTINSN_VSTn_WB("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 2234 TESTINSN_VSTn_WB("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 2235 TESTINSN_VSTn_WB("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 2236 TESTINSN_VSTn_WB("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 2237 TESTINSN_VSTn_WB("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 2238 TESTINSN_VSTn_WB("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 2239 TESTINSN_VSTn_WB("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 2240 TESTINSN_VSTn_WB("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 2241 TESTINSN_VSTn_WB("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 2242 TESTINSN_VSTn_WB("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 2243 TESTINSN_VSTn_WB("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 2244 2245 printf("---- VST3 (multiple 3-elements) ----\n"); 2246 TESTINSN_VSTn_WB("vst3.8 {d20-d22}", d20, d21, d22, d20); 2247 TESTINSN_VSTn_WB("vst3.16 {d0-d2}", d0, d1, d2, d0); 2248 TESTINSN_VSTn_WB("vst3.32 {d0-d2}", d0, d1, d2, d0); 2249 TESTINSN_VSTn_WB("vst3.8 {d0,d2,d4}", d0, d2, d4, d0); 2250 TESTINSN_VSTn_WB("vst3.16 {d20,d22,d24}", d20, d22, d24, d20); 2251 TESTINSN_VSTn_WB("vst3.32 {d0,d2,d4}", d0, d2, d4, d0); 2252 2253 printf("---- VST3 (single 3-element structure from one lane) ----\n"); 2254 TESTINSN_VSTn_WB("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 2255 TESTINSN_VSTn_WB("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 2256 TESTINSN_VSTn_WB("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 2257 TESTINSN_VSTn_WB("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 2258 TESTINSN_VSTn_WB("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 2259 TESTINSN_VSTn_WB("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 2260 TESTINSN_VSTn_WB("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 2261 TESTINSN_VSTn_WB("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 2262 TESTINSN_VSTn_WB("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 2263 TESTINSN_VSTn_WB("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 2264 TESTINSN_VSTn_WB("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 2265 TESTINSN_VSTn_WB("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 2266 TESTINSN_VSTn_WB("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 2267 TESTINSN_VSTn_WB("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 2268 TESTINSN_VSTn_WB("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 2269 TESTINSN_VSTn_WB("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 2270 TESTINSN_VSTn_WB("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 2271 TESTINSN_VSTn_WB("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 2272 TESTINSN_VSTn_WB("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 2273 TESTINSN_VSTn_WB("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 2274 2275 printf("---- VST4 (multiple 4-elements) ----\n"); 2276 TESTINSN_VSTn_WB("vst4.8 {d0-d3}", d0, d1, d2, d3); 2277 TESTINSN_VSTn_WB("vst4.16 {d20-d23}", d20, d21, d22, d23); 2278 TESTINSN_VSTn_WB("vst4.32 {d0-d3}", d0, d1, d2, d3); 2279 TESTINSN_VSTn_WB("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 2280 TESTINSN_VSTn_WB("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 2281 TESTINSN_VSTn_WB("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 2282 2283 printf("---- VST4 (single 4-element structure from one lane) ----\n"); 2284 TESTINSN_VSTn_WB("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 2285 TESTINSN_VSTn_WB("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 2286 TESTINSN_VSTn_WB("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 2287 TESTINSN_VSTn_WB("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 2288 TESTINSN_VSTn_WB("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 2289 TESTINSN_VSTn_WB("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 2290 TESTINSN_VSTn_WB("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 2291 TESTINSN_VSTn_WB("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 2292 TESTINSN_VSTn_WB("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 2293 TESTINSN_VSTn_WB("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 2294 TESTINSN_VSTn_WB("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 2295 TESTINSN_VSTn_WB("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 2296 TESTINSN_VSTn_WB("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 2297 TESTINSN_VSTn_WB("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 2298 TESTINSN_VSTn_WB("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 2299 TESTINSN_VSTn_WB("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 2300 TESTINSN_VSTn_WB("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 2301 TESTINSN_VSTn_WB("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 2302 TESTINSN_VSTn_WB("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 2303 TESTINSN_VSTn_WB("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 2304 2305 printf("---- VLD1 (multiple single elements) ----\n"); 2306 TESTINSN_VLDn_RI("vld1.8 {d0}", d0, d0, d0, d0, r5, 13); 2307 TESTINSN_VLDn_RI("vld1.16 {d0}", d0, d0, d0, d0, r8, 13); 2308 TESTINSN_VLDn_RI("vld1.32 {d0}", d0, d0, d0, d0, r5, 42); 2309 TESTINSN_VLDn_RI("vld1.64 {d0}", d0, d0, d0, d0, r5, 0); 2310 TESTINSN_VLDn_RI("vld1.8 {d9}", d9, d9, d9, d9, r5, 13); 2311 TESTINSN_VLDn_RI("vld1.16 {d17}", d17, d17, d17, d17, r6, 13); 2312 TESTINSN_VLDn_RI("vld1.32 {d31}", d31, d31, d31, d31, r5, -3); 2313 TESTINSN_VLDn_RI("vld1.64 {d14}", d14, d14, d14, d14, r5, 13); 2314 TESTINSN_VLDn_RI("vld1.8 {d0-d1}", d0, d1, d0, d1, r5, 13); 2315 TESTINSN_VLDn_RI("vld1.16 {d0-d1}", d0, d1, d0, d1, r5, 13); 2316 TESTINSN_VLDn_RI("vld1.32 {d5-d6}", d5, d6, d5, d6, r5, 13); 2317 TESTINSN_VLDn_RI("vld1.64 {d30-d31}", d30, d31, d30, d31, r5, 13); 2318 TESTINSN_VLDn_RI("vld1.8 {d0-d2}", d0, d1, d2, d0, r5, 13); 2319 TESTINSN_VLDn_RI("vld1.16 {d0-d2}", d0, d1, d2, d0, r5, 13); 2320 TESTINSN_VLDn_RI("vld1.32 {d0-d2}", d0, d1, d2, d0, r5, 13); 2321 TESTINSN_VLDn_RI("vld1.64 {d0-d2}", d0, d1, d2, d0, r5, 13); 2322 TESTINSN_VLDn_RI("vld1.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2323 TESTINSN_VLDn_RI("vld1.16 {d0-d3}", d0, d1, d2, d3, r5, 13); 2324 TESTINSN_VLDn_RI("vld1.32 {d0-d3}", d0, d1, d2, d3, r5, 13); 2325 TESTINSN_VLDn_RI("vld1.64 {d0-d3}", d0, d1, d2, d3, r5, 13); 2326 2327 printf("---- VLD1 (single element to one lane) ----\n"); 2328 TESTINSN_VLDn_RI("vld1.32 {d0[0]}", d0, d0, d0, d0, r5, 13); 2329 TESTINSN_VLDn_RI("vld1.32 {d0[1]}", d0, d0, d0, d0, r9, 42); 2330 TESTINSN_VLDn_RI("vld1.16 {d1[0]}", d1, d1, d1, d1, r5, 13); 2331 TESTINSN_VLDn_RI("vld1.16 {d1[1]}", d1, d1, d1, d1, r1, 0); 2332 TESTINSN_VLDn_RI("vld1.16 {d1[2]}", d1, d1, d1, d1, r5, -3); 2333 TESTINSN_VLDn_RI("vld1.16 {d1[3]}", d1, d1, d1, d1, r5, 13); 2334 TESTINSN_VLDn_RI("vld1.8 {d0[7]}", d0, d0, d0, d0, r5, 13); 2335 TESTINSN_VLDn_RI("vld1.8 {d1[6]}", d1, d1, d1, d1, r5, 13); 2336 TESTINSN_VLDn_RI("vld1.8 {d0[5]}", d0, d0, d0, d0, r5, 13); 2337 TESTINSN_VLDn_RI("vld1.8 {d0[4]}", d0, d0, d0, d0, r5, 13); 2338 TESTINSN_VLDn_RI("vld1.8 {d20[3]}", d20, d20, d20, d20, r5, 13); 2339 TESTINSN_VLDn_RI("vld1.8 {d0[2]}", d0, d0, d0, d0, r5, 13); 2340 TESTINSN_VLDn_RI("vld1.8 {d17[1]}", d17, d17, d17, d17, r5, 13); 2341 TESTINSN_VLDn_RI("vld1.8 {d30[0]}", d30, d30, d30, d30, r5, 13); 2342 2343 printf("---- VLD1 (single element to all lanes) ----\n"); 2344 TESTINSN_VLDn_RI("vld1.8 {d0[]}", d0, d0, d0, d0, r5, 13); 2345 TESTINSN_VLDn_RI("vld1.16 {d0[]}", d0, d0, d0, d0, r9, 42); 2346 TESTINSN_VLDn_RI("vld1.32 {d0[]}", d0, d0, d0, d0, r1, 0); 2347 TESTINSN_VLDn_RI("vld1.8 {d9[]}", d9, d9, d9, d9, r5, -3); 2348 TESTINSN_VLDn_RI("vld1.16 {d17[]}", d17, d17, d17, d17, r5, 13); 2349 TESTINSN_VLDn_RI("vld1.32 {d31[]}", d31, d31, d31, d31, r5, 13); 2350 TESTINSN_VLDn_RI("vld1.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); 2351 TESTINSN_VLDn_RI("vld1.16 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); 2352 TESTINSN_VLDn_RI("vld1.32 {d5[],d6[]}", d5, d6, d5, d6, r5, 13); 2353 2354 printf("---- VLD2 (multiple 2-elements) ----\n"); 2355 TESTINSN_VLDn_RI("vld2.8 {d30-d31}", d30, d31, d30, d31, r5, 13); 2356 TESTINSN_VLDn_RI("vld2.16 {d0-d1}", d0, d1, d0, d1, r9, 42); 2357 TESTINSN_VLDn_RI("vld2.32 {d0-d1}", d0, d1, d0, d1, r1, 0); 2358 TESTINSN_VLDn_RI("vld2.8 {d10,d12}", d10, d12, d10, d12, r5, -3); 2359 TESTINSN_VLDn_RI("vld2.16 {d20,d22}", d20, d22, d20, d22, r5, 13); 2360 TESTINSN_VLDn_RI("vld2.32 {d0,d2}", d0, d2, d0, d2, r5, 13); 2361 TESTINSN_VLDn_RI("vld2.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2362 TESTINSN_VLDn_RI("vld2.16 {d20-d23}", d20, d21, d22, d23, r5, 13); 2363 TESTINSN_VLDn_RI("vld2.32 {d0-d3}", d0, d1, d2, d3, r5, 13); 2364 2365 printf("---- VLD2 (single 2-element structure to one lane) ----\n"); 2366 TESTINSN_VLDn_RI("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13); 2367 TESTINSN_VLDn_RI("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42); 2368 TESTINSN_VLDn_RI("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0); 2369 TESTINSN_VLDn_RI("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3); 2370 TESTINSN_VLDn_RI("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13); 2371 TESTINSN_VLDn_RI("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13); 2372 TESTINSN_VLDn_RI("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13); 2373 TESTINSN_VLDn_RI("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13); 2374 TESTINSN_VLDn_RI("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13); 2375 TESTINSN_VLDn_RI("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13); 2376 TESTINSN_VLDn_RI("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13); 2377 TESTINSN_VLDn_RI("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13); 2378 TESTINSN_VLDn_RI("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13); 2379 TESTINSN_VLDn_RI("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13); 2380 TESTINSN_VLDn_RI("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13); 2381 TESTINSN_VLDn_RI("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13); 2382 TESTINSN_VLDn_RI("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13); 2383 TESTINSN_VLDn_RI("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13); 2384 TESTINSN_VLDn_RI("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13); 2385 TESTINSN_VLDn_RI("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13); 2386 2387 printf("---- VLD2 (2-elements to all lanes) ----\n"); 2388 TESTINSN_VLDn_RI("vld2.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); 2389 TESTINSN_VLDn_RI("vld2.16 {d0[],d1[]}", d0, d1, d0, d1, r9, 42); 2390 TESTINSN_VLDn_RI("vld2.32 {d0[],d1[]}", d0, d1, d0, d1, r1, 0); 2391 TESTINSN_VLDn_RI("vld2.8 {d9[],d11[]}", d9, d11, d9, d11, r5, -3); 2392 TESTINSN_VLDn_RI("vld2.16 {d17[],d18[]}", d17, d18, d17, d18, r5, 13); 2393 TESTINSN_VLDn_RI("vld2.32 {d30[],d31[]}", d30, d31, d30, d31, r5, 13); 2394 TESTINSN_VLDn_RI("vld2.8 {d0[],d2[]}", d0, d2, d0, d2, r5, 13); 2395 TESTINSN_VLDn_RI("vld2.16 {d0[],d2[]}", d0, d2, d0, d2, r5, 13); 2396 TESTINSN_VLDn_RI("vld2.32 {d5[],d7[]}", d5, d7, d5, d7, r5, 13); 2397 2398 printf("---- VLD3 (multiple 3-elements) ----\n"); 2399 TESTINSN_VLDn_RI("vld3.8 {d20-d22}", d20, d21, d22, d20, r5, 13); 2400 TESTINSN_VLDn_RI("vld3.16 {d0-d2}", d0, d1, d2, d0, r9, 42); 2401 TESTINSN_VLDn_RI("vld3.32 {d0-d2}", d0, d1, d2, d0, r1, 0); 2402 TESTINSN_VLDn_RI("vld3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3); 2403 TESTINSN_VLDn_RI("vld3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13); 2404 TESTINSN_VLDn_RI("vld3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13); 2405 2406 printf("---- VLD3 (single 3-element structure to one lane) ----\n"); 2407 TESTINSN_VLDn_RI("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13); 2408 TESTINSN_VLDn_RI("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42); 2409 TESTINSN_VLDn_RI("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0); 2410 TESTINSN_VLDn_RI("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3); 2411 TESTINSN_VLDn_RI("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13); 2412 TESTINSN_VLDn_RI("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13); 2413 TESTINSN_VLDn_RI("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13); 2414 TESTINSN_VLDn_RI("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13); 2415 TESTINSN_VLDn_RI("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13); 2416 TESTINSN_VLDn_RI("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13); 2417 TESTINSN_VLDn_RI("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13); 2418 TESTINSN_VLDn_RI("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13); 2419 TESTINSN_VLDn_RI("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13); 2420 TESTINSN_VLDn_RI("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13); 2421 TESTINSN_VLDn_RI("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13); 2422 TESTINSN_VLDn_RI("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13); 2423 TESTINSN_VLDn_RI("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13); 2424 TESTINSN_VLDn_RI("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13); 2425 TESTINSN_VLDn_RI("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13); 2426 TESTINSN_VLDn_RI("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13); 2427 2428 printf("---- VLD3 (3-elements to all lanes) ----\n"); 2429 TESTINSN_VLDn_RI("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1, r5, 13); 2430 TESTINSN_VLDn_RI("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1, r9, 42); 2431 TESTINSN_VLDn_RI("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1, r1, 0); 2432 TESTINSN_VLDn_RI("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11, r5, -3); 2433 TESTINSN_VLDn_RI("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18, r5, 13); 2434 TESTINSN_VLDn_RI("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31, r5, 13); 2435 TESTINSN_VLDn_RI("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13); 2436 TESTINSN_VLDn_RI("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13); 2437 TESTINSN_VLDn_RI("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7, r5, 13); 2438 2439 printf("---- VLD4 (multiple 3-elements) ----\n"); 2440 TESTINSN_VLDn_RI("vld4.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2441 TESTINSN_VLDn_RI("vld4.16 {d20-d23}", d20, d21, d22, d23, r9, 0); 2442 TESTINSN_VLDn_RI("vld4.32 {d0-d3}", d0, d1, d2, d3, r0, 42); 2443 TESTINSN_VLDn_RI("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3); 2444 TESTINSN_VLDn_RI("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13); 2445 TESTINSN_VLDn_RI("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13); 2446 2447 printf("---- VLD4 (single 4-element structure to one lane) ----\n"); 2448 TESTINSN_VLDn_RI("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13); 2449 TESTINSN_VLDn_RI("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42); 2450 TESTINSN_VLDn_RI("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0); 2451 TESTINSN_VLDn_RI("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3); 2452 TESTINSN_VLDn_RI("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13); 2453 TESTINSN_VLDn_RI("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13); 2454 TESTINSN_VLDn_RI("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13); 2455 TESTINSN_VLDn_RI("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13); 2456 TESTINSN_VLDn_RI("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13); 2457 TESTINSN_VLDn_RI("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13); 2458 TESTINSN_VLDn_RI("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13); 2459 TESTINSN_VLDn_RI("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13); 2460 TESTINSN_VLDn_RI("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13); 2461 TESTINSN_VLDn_RI("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13); 2462 TESTINSN_VLDn_RI("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13); 2463 TESTINSN_VLDn_RI("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13); 2464 TESTINSN_VLDn_RI("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13); 2465 TESTINSN_VLDn_RI("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13); 2466 TESTINSN_VLDn_RI("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13); 2467 TESTINSN_VLDn_RI("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13); 2468 2469 printf("---- VLD4 (4-elements to all lanes) ----\n"); 2470 TESTINSN_VLDn_RI("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r5, 13); 2471 TESTINSN_VLDn_RI("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r9, 42); 2472 TESTINSN_VLDn_RI("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r1, 0); 2473 TESTINSN_VLDn_RI("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15, r5, -3); 2474 TESTINSN_VLDn_RI("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20, r5, 13); 2475 TESTINSN_VLDn_RI("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31, r5, 13); 2476 TESTINSN_VLDn_RI("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13); 2477 TESTINSN_VLDn_RI("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13); 2478 TESTINSN_VLDn_RI("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11, r5, 13); 2479 2480 printf("---- VST1 (multiple single elements) ----\n"); 2481 TESTINSN_VSTn_RI("vst1.8 {d0}", d0, d0, d0, d0, r5, 13); 2482 TESTINSN_VSTn_RI("vst1.16 {d0}", d0, d0, d0, d0, r9, 42); 2483 TESTINSN_VSTn_RI("vst1.32 {d0}", d0, d0, d0, d0, r5, 0); 2484 TESTINSN_VSTn_RI("vst1.64 {d0}", d0, d0, d0, d0, r5, -3); 2485 TESTINSN_VSTn_RI("vst1.8 {d9}", d9, d9, d9, d9, r5, 13); 2486 TESTINSN_VSTn_RI("vst1.16 {d17}", d17, d17, d17, d17, r5, 13); 2487 TESTINSN_VSTn_RI("vst1.32 {d31}", d31, d31, d31, d31, r5, 13); 2488 TESTINSN_VSTn_RI("vst1.64 {d14}", d14, d14, d14, d14, r5, 13); 2489 TESTINSN_VSTn_RI("vst1.8 {d0-d1}", d0, d1, d0, d1, r5, 13); 2490 TESTINSN_VSTn_RI("vst1.16 {d0-d1}", d0, d1, d0, d1, r5, 13); 2491 TESTINSN_VSTn_RI("vst1.32 {d5-d6}", d5, d6, d5, d6, r5, 13); 2492 TESTINSN_VSTn_RI("vst1.64 {d30-d31}", d30, d31, d30, d31, r5, 13); 2493 TESTINSN_VSTn_RI("vst1.8 {d0-d2}", d0, d1, d2, d0, r5, 13); 2494 TESTINSN_VSTn_RI("vst1.16 {d0-d2}", d0, d1, d2, d0, r5, 13); 2495 TESTINSN_VSTn_RI("vst1.32 {d0-d2}", d0, d1, d2, d0, r5, 13); 2496 TESTINSN_VSTn_RI("vst1.64 {d0-d2}", d0, d1, d2, d0, r5, 13); 2497 TESTINSN_VSTn_RI("vst1.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2498 TESTINSN_VSTn_RI("vst1.16 {d0-d3}", d0, d1, d2, d3, r5, 13); 2499 TESTINSN_VSTn_RI("vst1.32 {d0-d3}", d0, d1, d2, d3, r5, 13); 2500 TESTINSN_VSTn_RI("vst1.64 {d0-d3}", d0, d1, d2, d3, r5, 13); 2501 2502 printf("---- VST1 (single element from one lane) ----\n"); 2503 TESTINSN_VSTn_RI("vst1.32 {d0[0]}", d0, d0, d0, d0, r5, 13); 2504 TESTINSN_VSTn_RI("vst1.32 {d0[1]}", d0, d0, d0, d0, r9, 42); 2505 TESTINSN_VSTn_RI("vst1.16 {d1[0]}", d1, d1, d1, d1, r1, 0); 2506 TESTINSN_VSTn_RI("vst1.16 {d1[1]}", d1, d1, d1, d1, r5, -3); 2507 TESTINSN_VSTn_RI("vst1.16 {d1[2]}", d1, d1, d1, d1, r5, 13); 2508 TESTINSN_VSTn_RI("vst1.16 {d1[3]}", d1, d1, d1, d1, r5, 13); 2509 TESTINSN_VSTn_RI("vst1.8 {d0[7]}", d0, d0, d0, d0, r5, 13); 2510 TESTINSN_VSTn_RI("vst1.8 {d1[6]}", d1, d1, d1, d1, r5, 13); 2511 TESTINSN_VSTn_RI("vst1.8 {d0[5]}", d0, d0, d0, d0, r5, 13); 2512 TESTINSN_VSTn_RI("vst1.8 {d0[4]}", d0, d0, d0, d0, r5, 13); 2513 TESTINSN_VSTn_RI("vst1.8 {d20[3]}", d20, d20, d20, d20, r5, 13); 2514 TESTINSN_VSTn_RI("vst1.8 {d0[2]}", d0, d0, d0, d0, r5, 13); 2515 TESTINSN_VSTn_RI("vst1.8 {d17[1]}", d17, d17, d17, d17, r5, 13); 2516 TESTINSN_VSTn_RI("vst1.8 {d30[0]}", d30, d30, d30, d30, r5, 13); 2517 2518 printf("---- VST2 (multiple 2-elements) ----\n"); 2519 TESTINSN_VSTn_RI("vst2.8 {d30-d31}", d30, d31, d30, d31, r5, 13); 2520 TESTINSN_VSTn_RI("vst2.16 {d0-d1}", d0, d1, d0, d1, r9, 42); 2521 TESTINSN_VSTn_RI("vst2.32 {d0-d1}", d0, d1, d0, d1, r1, 0); 2522 TESTINSN_VSTn_RI("vst2.8 {d10,d12}", d10, d12, d10, d12, r5, -3); 2523 TESTINSN_VSTn_RI("vst2.16 {d20,d22}", d20, d22, d20, d22, r5, 13); 2524 TESTINSN_VSTn_RI("vst2.32 {d0,d2}", d0, d2, d0, d2, r5, 13); 2525 TESTINSN_VSTn_RI("vst2.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2526 TESTINSN_VSTn_RI("vst2.16 {d20-d23}", d20, d21, d22, d23, r5, 13); 2527 TESTINSN_VSTn_RI("vst2.32 {d0-d3}", d0, d1, d2, d3, r5, 13); 2528 2529 printf("---- VST2 (single 2-element structure from one lane) ----\n"); 2530 TESTINSN_VSTn_RI("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13); 2531 TESTINSN_VSTn_RI("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42); 2532 TESTINSN_VSTn_RI("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0); 2533 TESTINSN_VSTn_RI("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3); 2534 TESTINSN_VSTn_RI("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13); 2535 TESTINSN_VSTn_RI("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13); 2536 TESTINSN_VSTn_RI("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13); 2537 TESTINSN_VSTn_RI("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13); 2538 TESTINSN_VSTn_RI("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13); 2539 TESTINSN_VSTn_RI("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13); 2540 TESTINSN_VSTn_RI("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13); 2541 TESTINSN_VSTn_RI("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13); 2542 TESTINSN_VSTn_RI("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13); 2543 TESTINSN_VSTn_RI("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13); 2544 TESTINSN_VSTn_RI("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13); 2545 TESTINSN_VSTn_RI("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13); 2546 TESTINSN_VSTn_RI("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13); 2547 TESTINSN_VSTn_RI("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13); 2548 TESTINSN_VSTn_RI("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13); 2549 TESTINSN_VSTn_RI("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13); 2550 2551 printf("---- VST3 (multiple 3-elements) ----\n"); 2552 TESTINSN_VSTn_RI("vst3.8 {d20-d22}", d20, d21, d22, d20, r5, 13); 2553 TESTINSN_VSTn_RI("vst3.16 {d0-d2}", d0, d1, d2, d0, r9, 42); 2554 TESTINSN_VSTn_RI("vst3.32 {d0-d2}", d0, d1, d2, d0, r1, 0); 2555 TESTINSN_VSTn_RI("vst3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3); 2556 TESTINSN_VSTn_RI("vst3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13); 2557 TESTINSN_VSTn_RI("vst3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13); 2558 2559 printf("---- VST3 (single 3-element structure from one lane) ----\n"); 2560 TESTINSN_VSTn_RI("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13); 2561 TESTINSN_VSTn_RI("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42); 2562 TESTINSN_VSTn_RI("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0); 2563 TESTINSN_VSTn_RI("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3); 2564 TESTINSN_VSTn_RI("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13); 2565 TESTINSN_VSTn_RI("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13); 2566 TESTINSN_VSTn_RI("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13); 2567 TESTINSN_VSTn_RI("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13); 2568 TESTINSN_VSTn_RI("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13); 2569 TESTINSN_VSTn_RI("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13); 2570 TESTINSN_VSTn_RI("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13); 2571 TESTINSN_VSTn_RI("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13); 2572 TESTINSN_VSTn_RI("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13); 2573 TESTINSN_VSTn_RI("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13); 2574 TESTINSN_VSTn_RI("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13); 2575 TESTINSN_VSTn_RI("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13); 2576 TESTINSN_VSTn_RI("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13); 2577 TESTINSN_VSTn_RI("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13); 2578 TESTINSN_VSTn_RI("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13); 2579 TESTINSN_VSTn_RI("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13); 2580 2581 printf("---- VST4 (multiple 4-elements) ----\n"); 2582 TESTINSN_VSTn_RI("vst4.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2583 TESTINSN_VSTn_RI("vst4.16 {d20-d23}", d20, d21, d22, d23, r9, 42); 2584 TESTINSN_VSTn_RI("vst4.32 {d0-d3}", d0, d1, d2, d3, r1, 0); 2585 TESTINSN_VSTn_RI("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3); 2586 TESTINSN_VSTn_RI("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13); 2587 TESTINSN_VSTn_RI("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13); 2588 2589 printf("---- VST4 (single 4-element structure from one lane) ----\n"); 2590 TESTINSN_VSTn_RI("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13); 2591 TESTINSN_VSTn_RI("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42); 2592 TESTINSN_VSTn_RI("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0); 2593 TESTINSN_VSTn_RI("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3); 2594 TESTINSN_VSTn_RI("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13); 2595 TESTINSN_VSTn_RI("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13); 2596 TESTINSN_VSTn_RI("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13); 2597 TESTINSN_VSTn_RI("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13); 2598 TESTINSN_VSTn_RI("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13); 2599 TESTINSN_VSTn_RI("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13); 2600 TESTINSN_VSTn_RI("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13); 2601 TESTINSN_VSTn_RI("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13); 2602 TESTINSN_VSTn_RI("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13); 2603 TESTINSN_VSTn_RI("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13); 2604 TESTINSN_VSTn_RI("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13); 2605 TESTINSN_VSTn_RI("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13); 2606 TESTINSN_VSTn_RI("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13); 2607 TESTINSN_VSTn_RI("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13); 2608 TESTINSN_VSTn_RI("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13); 2609 TESTINSN_VSTn_RI("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13); 2610 2611 printf("---- VMOVN ----\n"); 2612 TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 2613 TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 2614 TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 2615 TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 2616 TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 2617 TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 2618 2619 printf("---- VQMOVN ----\n"); 2620 TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 2621 TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 2622 TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 2623 TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 2624 TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 2625 TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 2626 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 2627 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 2628 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 2629 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 2630 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 2631 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 2632 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff); 2633 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff); 2634 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff); 2635 2636 printf("---- VQMOVN ----\n"); 2637 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 2638 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 2639 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 2640 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 2641 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 2642 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 2643 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff); 2644 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff); 2645 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff); 2646 2647 printf("---- VABS ----\n"); 2648 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0x73); 2649 TESTINSN_un("vabs.s16 d15, d4", d15, d4, i32, 0x73); 2650 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0x73); 2651 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0xfe); 2652 TESTINSN_un("vabs.s16 d31, d4", d31, d4, i32, 0xef); 2653 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0xde); 2654 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i16, 0xfe0a); 2655 TESTINSN_un("vabs.s16 d15, d4", d15, d4, i16, 0xef0b); 2656 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i16, 0xde0c); 2657 2658 printf("---- VQABS ----\n"); 2659 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0x73); 2660 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 1 << 31); 2661 TESTINSN_un_q("vqabs.s16 d0, d1", d0, d1, i32, 1 << 31); 2662 TESTINSN_un_q("vqabs.s8 d0, d1", d0, d1, i32, 1 << 31); 2663 TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i32, 0x73); 2664 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0x73); 2665 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0xfe); 2666 TESTINSN_un_q("vqabs.s16 d31, d4", d31, d4, i32, 0xef); 2667 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0xde); 2668 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i16, 0xfe0a); 2669 TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i16, 0xef0b); 2670 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i16, 0xde0c); 2671 2672 printf("---- VADDHN ----\n"); 2673 TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 2674 TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2675 TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2676 TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2677 TESTINSN_bin("vaddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 2678 TESTINSN_bin("vaddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 2679 TESTINSN_bin("vaddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 2680 TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 2681 TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2682 TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2683 TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2684 2685 printf("---- VRADDHN ----\n"); 2686 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 2687 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2688 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2689 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2690 TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 2691 TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 2692 TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 2693 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 2694 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2695 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2696 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2697 TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0102); 2698 TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0102); 2699 TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0102); 2700 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x02); 2701 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 2702 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 2703 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 2704 2705 printf("---- VSUBHN ----\n"); 2706 TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 2707 TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2708 TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2709 TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2710 TESTINSN_bin("vsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 2711 TESTINSN_bin("vsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 2712 TESTINSN_bin("vsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 2713 TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 2714 TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2715 TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2716 TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2717 2718 printf("---- VRSUBHN ----\n"); 2719 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 2720 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2721 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2722 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2723 TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 2724 TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 2725 TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 2726 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 2727 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2728 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2729 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2730 TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef93, q2, i32, 0x0102); 2731 TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef93, q2, i32, 0x0102); 2732 TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef93, q8, i32, 0x0102); 2733 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x93, q1, i32, 0x02); 2734 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 2735 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 2736 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 2737 2738 printf("---- VCEQ #0 ----\n"); 2739 TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x21); 2740 TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x21); 2741 TESTINSN_un("vceq.i8 d10, d11, #0", d10, d11, i32, 0x21); 2742 TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x0); 2743 TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x0); 2744 TESTINSN_un("vceq.i8 d10, d31, #0", d10, d31, i32, 0x0); 2745 2746 printf("---- VCGT #0 ----\n"); 2747 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x21); 2748 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x21); 2749 TESTINSN_un("vcgt.s8 d10, d31, #0", d10, d31, i32, 0x21); 2750 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x0); 2751 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x0); 2752 TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i32, 0x0); 2753 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i8, 0xef); 2754 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i8, 0xed); 2755 TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i8, 0xae); 2756 2757 printf("---- VCGE #0 ----\n"); 2758 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x21); 2759 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x21); 2760 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0x21); 2761 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x0); 2762 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x0); 2763 TESTINSN_un("vcge.s8 d10, d31, #0", d10, d31, i32, 0x0); 2764 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i8, 0xef); 2765 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i8, 0xed); 2766 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i8, 0xae); 2767 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0xef); 2768 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0xed); 2769 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0xae); 2770 2771 printf("---- VCLE #0 ----\n"); 2772 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x21); 2773 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x21); 2774 TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i32, 0x21); 2775 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x0); 2776 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x0); 2777 TESTINSN_un("vcle.s8 d10, d31, #0", d10, d31, i32, 0x0); 2778 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i8, 0xef); 2779 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i8, 0xed); 2780 TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i8, 0xae); 2781 2782 printf("---- VCLT #0 ----\n"); 2783 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x21); 2784 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x21); 2785 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x21); 2786 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x0); 2787 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x0); 2788 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x0); 2789 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i8, 0xef); 2790 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i8, 0xed); 2791 TESTINSN_un("vclt.s8 d10, d31, #0", d10, d31, i8, 0xae); 2792 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0xef); 2793 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0xed); 2794 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0xae); 2795 2796 printf("---- VCNT ----\n"); 2797 TESTINSN_un("vcnt.8 d0, d1", d0, d1, i32, 0xac3d25eb); 2798 TESTINSN_un("vcnt.8 d11, d14", d11, d14, i32, 0xac3d25eb); 2799 TESTINSN_un("vcnt.8 d6, d2", d6, d2, i32, 0xad0eb); 2800 2801 printf("---- VCLS ----\n"); 2802 TESTINSN_un("vcls.s8 d0, d1", d0, d1, i32, 0x21); 2803 TESTINSN_un("vcls.s8 d30, d31", d30, d31, i8, 0x82); 2804 TESTINSN_un("vcls.s16 d0, d1", d0, d1, i32, 0x21); 2805 TESTINSN_un("vcls.s16 d31, d30", d31, d30, i8, 0x82); 2806 TESTINSN_un("vcls.s32 d6, d1", d6, d1, i32, 0x21); 2807 TESTINSN_un("vcls.s32 d30, d5", d30, d5, i8, 0x82); 2808 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0xff); 2809 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0xff); 2810 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0xff); 2811 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0xffef); 2812 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0xffef); 2813 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0xffef); 2814 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0x00); 2815 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0x00); 2816 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0x00); 2817 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0x00ef); 2818 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0x00ef); 2819 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0x00ef); 2820 2821 printf("---- VCLZ ----\n"); 2822 TESTINSN_un("vclz.i8 d0, d1", d0, d1, i32, 0x21); 2823 TESTINSN_un("vclz.i8 d30, d31", d30, d31, i8, 0x82); 2824 TESTINSN_un("vclz.i16 d0, d1", d0, d1, i32, 0x21); 2825 TESTINSN_un("vclz.i16 d31, d30", d31, d30, i8, 0x82); 2826 TESTINSN_un("vclz.i32 d6, d1", d6, d1, i32, 0x21); 2827 TESTINSN_un("vclz.i32 d30, d5", d30, d5, i8, 0x82); 2828 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0xff); 2829 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0xff); 2830 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0xff); 2831 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0xffef); 2832 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0xffef); 2833 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0xffef); 2834 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0x00); 2835 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0x00); 2836 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0x00); 2837 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0x00ef); 2838 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0x00ef); 2839 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0x00ef); 2840 2841 printf("---- VSLI ----\n"); 2842 TESTINSN_un("vsli.16 d0, d1, #1", d0, d1, i32, 7); 2843 TESTINSN_un("vsli.16 d3, d4, #2", d3, d4, i32, -0x7c); 2844 TESTINSN_un("vsli.32 d2, d5, #31", d2, d5, i32, -1); 2845 TESTINSN_un("vsli.8 d6, d7, #7", d6, d7, i32, 0xffff); 2846 TESTINSN_un("vsli.16 d8, d9, #12", d8, d9, i32, -10); 2847 TESTINSN_un("vsli.32 d10, d11, #5", d10, d11, i32, 10234); 2848 TESTINSN_un("vsli.8 d12, d13, #1", d12, d13, i32, -1); 2849 TESTINSN_un("vsli.16 d14, d15, #11", d14, d15, i32, -1); 2850 TESTINSN_un("vsli.32 d10, d11, #9", d10, d11, i32, 1000); 2851 TESTINSN_un("vsli.8 d7, d13, #7", d7, d13, i32, -1); 2852 TESTINSN_un("vsli.16 d8, d1, #1", d8, d1, i32, 0xabcf); 2853 TESTINSN_un("vsli.32 d12, d3, #15", d12, d3, i32, -0x1b0); 2854 TESTINSN_un("vsli.64 d0, d1, #42", d0, d1, i32, -1); 2855 TESTINSN_un("vsli.64 d6, d7, #12", d6, d7, i32, 0xfac); 2856 TESTINSN_un("vsli.64 d8, d4, #9", d8, d4, i32, 13560); 2857 TESTINSN_un("vsli.64 d9, d12, #11", d9, d12, i32, 98710); 2858 2859 printf("---- VPADD ----\n"); 2860 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 2861 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 2862 TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 2863 TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 2864 TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 2865 TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 2866 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 2867 TESTINSN_bin("vpadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 2868 2869 printf("---- VPADDL ----\n"); 2870 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 24); 2871 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 140); 2872 TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, 140); 2873 TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, 140); 2874 TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, (1 << 31) + 1); 2875 TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, (1 << 31) + 1); 2876 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, (1 << 31) + 1); 2877 TESTINSN_un("vpaddl.u32 d10, d11", d10, d11, i32, 24); 2878 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 24); 2879 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 140); 2880 TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, 140); 2881 TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, 140); 2882 TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, (1 << 31) + 1); 2883 TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, (1 << 31) + 1); 2884 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, (1 << 31) + 1); 2885 TESTINSN_un("vpaddl.s32 d10, d11", d10, d11, i32, 24); 2886 2887 printf("---- VPADAL ----\n"); 2888 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 24); 2889 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 140); 2890 TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, 140); 2891 TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i8, 140); 2892 TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i32, (1 << 31) + 1); 2893 TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, (1 << 31) + 1); 2894 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, (1 << 31) + 1); 2895 TESTINSN_un("vpadal.u32 d10, d11", d10, d11, i32, 24); 2896 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 24); 2897 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 140); 2898 TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, 140); 2899 TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i8, 140); 2900 TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i32, (1 << 31) + 1); 2901 TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, (1 << 31) + 1); 2902 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, (1 << 31) + 1); 2903 TESTINSN_un("vpadal.s32 d10, d11", d10, d11, i32, 24); 2904 2905 printf("---- VZIP ----\n"); 2906 TESTINSN_dual("vzip.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 2907 TESTINSN_dual("vzip.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 2908 TESTINSN_dual("vzip.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 2909 TESTINSN_dual("vzip.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 2910 TESTINSN_dual("vzip.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 2911 TESTINSN_dual("vzip.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 2912 2913 printf("---- VUZP ----\n"); 2914 TESTINSN_dual("vuzp.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 2915 TESTINSN_dual("vuzp.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 2916 TESTINSN_dual("vuzp.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 2917 TESTINSN_dual("vuzp.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 2918 TESTINSN_dual("vuzp.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 2919 TESTINSN_dual("vuzp.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 2920 2921 printf("---- VTRN ----\n"); 2922 TESTINSN_dual("vtrn.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 2923 TESTINSN_dual("vtrn.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 2924 TESTINSN_dual("vtrn.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 2925 TESTINSN_dual("vtrn.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 2926 TESTINSN_dual("vtrn.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 2927 TESTINSN_dual("vtrn.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 2928 2929 printf("---- VSWP ----\n"); 2930 TESTINSN_dual("vswp d0, d1", d0, i8, 0x12, d1, i8, 0x34); 2931 TESTINSN_dual("vswp d1, d0", d0, i8, 0x12, d1, i8, 0x34); 2932 TESTINSN_dual("vswp d10, d11", d10, i8, 0x12, d11, i8, 0x34); 2933 TESTINSN_dual("vswp d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 2934 TESTINSN_dual("vswp d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 2935 TESTINSN_dual("vswp d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 2936 2937 printf("---- VSHRN ----\n"); 2938 TESTINSN_un("vshrn.i16 d0, q1, #1", d0, q1, i32, -1); 2939 TESTINSN_un("vshrn.i16 d3, q4, #2", d3, q4, i32, -0x7c); 2940 TESTINSN_un("vshrn.i32 d2, q5, #10", d2, q5, i32, -1); 2941 TESTINSN_un("vshrn.i32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 2942 TESTINSN_un("vshrn.i64 d6, q7, #7", d6, q7, i32, 0xffff); 2943 TESTINSN_un("vshrn.i16 d8, q9, #8", d8, q9, i32, -10); 2944 TESTINSN_un("vshrn.i32 d10, q11, #5", d10, q11, i32, 10234); 2945 TESTINSN_un("vshrn.i64 d12, q13, #1", d12, q13, i32, -1); 2946 TESTINSN_un("vshrn.i16 d14, q15, #6", d14, q15, i32, -1); 2947 TESTINSN_un("vshrn.i32 d10, q11, #9", d10, q11, i32, 1000); 2948 TESTINSN_un("vshrn.i64 d7, q13, #7", d7, q13, i32, -1); 2949 TESTINSN_un("vshrn.i16 d8, q1, #1", d8, q1, i32, 0xabcf); 2950 TESTINSN_un("vshrn.i32 d12, q3, #15", d12, q3, i32, -0x1b0); 2951 TESTINSN_un("vshrn.i64 d0, q1, #22", d0, q1, i32, -1); 2952 TESTINSN_un("vshrn.i64 d6, q7, #12", d6, q7, i32, 0xfac); 2953 TESTINSN_un("vshrn.i64 d8, q4, #9", d8, q4, i32, 13560); 2954 TESTINSN_un("vshrn.i64 d9, q12, #11", d9, q12, i32, 98710); 2955 2956 printf("---- VDUP ----\n"); 2957 TESTINSN_un("vdup.8 d12, d2[0]", d12, d2, i32, 0xabc4657); 2958 TESTINSN_un("vdup.8 d0, d3[2]", d0, d3, i32, 0x7a1b3); 2959 TESTINSN_un("vdup.8 d1, d0[7]", d1, d0, i32, 0x713aaa); 2960 TESTINSN_un("vdup.8 d10, d4[3]", d10, d4, i32, 0xaa713); 2961 TESTINSN_un("vdup.8 d4, d28[4]", d4, d28, i32, 0x7b1c3); 2962 TESTINSN_un("vdup.16 d17, d19[1]", d17, d19, i32, 0x713ffff); 2963 TESTINSN_un("vdup.16 d15, d31[2]", d15, d31, i32, 0x7f00fa); 2964 TESTINSN_un("vdup.16 d6, d2[0]", d6, d2, i32, 0xffabcde); 2965 TESTINSN_un("vdup.16 d8, d22[3]", d8, d22, i32, 0x713); 2966 TESTINSN_un("vdup.16 d9, d2[0]", d9, d2, i32, 0x713); 2967 TESTINSN_un("vdup.32 d10, d17[1]", d10, d17, i32, 0x713); 2968 TESTINSN_un("vdup.32 d15, d11[0]", d15, d11, i32, 0x3); 2969 TESTINSN_un("vdup.32 d30, d29[1]", d30, d29, i32, 0xf00000aa); 2970 TESTINSN_un("vdup.32 d22, d0[1]", d22, d0, i32, 0xf); 2971 TESTINSN_un("vdup.32 d13, d13[0]", d13, d13, i32, -1); 2972 2973 printf("---- VQDMULH ----\n"); 2974 TESTINSN_bin_q("vqdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 2975 TESTINSN_bin_q("vqdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 2976 TESTINSN_bin_q("vqdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 2977 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2978 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2979 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 2980 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 2981 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 2982 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2983 TESTINSN_bin_q("vqdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 2984 TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2985 TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2986 TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31); 2987 TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2988 2989 printf("---- VQDMULH (by scalar) ----\n"); 2990 TESTINSN_bin_q("vqdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120); 2991 TESTINSN_bin_q("vqdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120); 2992 TESTINSN_bin_q("vqdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120); 2993 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2994 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2995 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 2996 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12); 2997 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 2998 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2999 TESTINSN_bin_q("vqdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120); 3000 TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31); 3001 TESTINSN_bin_q("vqdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, 1 << 31); 3002 TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31); 3003 TESTINSN_bin_q("vqdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30); 3004 3005 printf("---- VSHRN ----\n"); 3006 TESTINSN_un("vshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657); 3007 TESTINSN_un("vshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3); 3008 TESTINSN_un("vshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa); 3009 TESTINSN_un("vshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713); 3010 TESTINSN_un("vshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3); 3011 TESTINSN_un("vshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff); 3012 TESTINSN_un("vshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa); 3013 TESTINSN_un("vshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc); 3014 TESTINSN_un("vshrn.i16 d8, q12, #3", d8, q12, i32, 0x713); 3015 TESTINSN_un("vshrn.i16 d9, q2, #7", d9, q2, i32, 0x713); 3016 TESTINSN_un("vshrn.i32 d10, q13, #2", d10, q13, i32, 0x713); 3017 TESTINSN_un("vshrn.i32 d15, q11, #1", d15, q11, i32, 0x3); 3018 TESTINSN_un("vshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa); 3019 TESTINSN_un("vshrn.i32 d12, q0, #6", d12, q0, i32, 0xf); 3020 TESTINSN_un("vshrn.i32 d13, q13, #2", d13, q13, i32, -1); 3021 3022 printf("---- VQSHRN ----\n"); 3023 TESTINSN_un_q("vqshrn.s16 d0, q1, #1", d0, q1, i32, -1); 3024 TESTINSN_un_q("vqshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c); 3025 TESTINSN_un_q("vqshrn.s32 d2, q5, #10", d2, q5, i32, -1); 3026 TESTINSN_un_q("vqshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3027 TESTINSN_un_q("vqshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 3028 TESTINSN_un_q("vqshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff); 3029 TESTINSN_un_q("vqshrn.s16 d8, q9, #8", d8, q9, i32, -10); 3030 TESTINSN_un_q("vqshrn.s32 d10, q11, #5", d10, q11, i32, 10234); 3031 TESTINSN_un_q("vqshrn.s64 d12, q13, #1", d12, q13, i32, -1); 3032 TESTINSN_un_q("vqshrn.s16 d14, q15, #6", d14, q15, i32, -1); 3033 TESTINSN_un_q("vqshrn.s32 d10, q11, #9", d10, q11, i32, 1000); 3034 TESTINSN_un_q("vqshrn.s64 d7, q13, #7", d7, q13, i32, -1); 3035 TESTINSN_un_q("vqshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 3036 TESTINSN_un_q("vqshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 3037 TESTINSN_un_q("vqshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 3038 TESTINSN_un_q("vqshrn.s64 d0, q1, #22", d0, q1, i32, -1); 3039 TESTINSN_un_q("vqshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac); 3040 TESTINSN_un_q("vqshrn.s64 d8, q4, #9", d8, q4, i32, 13560); 3041 TESTINSN_un_q("vqshrn.s64 d9, q12, #11", d9, q12, i32, 98710); 3042 TESTINSN_un_q("vqshrn.u16 d0, q1, #1", d0, q1, i32, -1); 3043 TESTINSN_un_q("vqshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c); 3044 TESTINSN_un_q("vqshrn.u32 d2, q5, #10", d2, q5, i32, -1); 3045 TESTINSN_un_q("vqshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3046 TESTINSN_un_q("vqshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff); 3047 TESTINSN_un_q("vqshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff); 3048 TESTINSN_un_q("vqshrn.u16 d8, q9, #8", d8, q9, i32, -10); 3049 TESTINSN_un_q("vqshrn.u32 d10, q11, #5", d10, q11, i32, 10234); 3050 TESTINSN_un_q("vqshrn.u64 d12, q13, #1", d12, q13, i32, -1); 3051 TESTINSN_un_q("vqshrn.u16 d14, q15, #6", d14, q15, i32, -1); 3052 TESTINSN_un_q("vqshrn.u32 d10, q11, #9", d10, q11, i32, 1000); 3053 TESTINSN_un_q("vqshrn.u64 d7, q13, #7", d7, q13, i32, -1); 3054 TESTINSN_un_q("vqshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf); 3055 TESTINSN_un_q("vqshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf); 3056 TESTINSN_un_q("vqshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0); 3057 TESTINSN_un_q("vqshrn.u64 d0, q1, #22", d0, q1, i32, -1); 3058 TESTINSN_un_q("vqshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac); 3059 TESTINSN_un_q("vqshrn.u64 d8, q4, #9", d8, q4, i32, 13560); 3060 TESTINSN_un_q("vqshrn.u64 d9, q12, #11", d9, q12, i32, 98710); 3061 3062 printf("---- VQSHRUN ----\n"); 3063 TESTINSN_un_q("vqshrun.s16 d0, q1, #1", d0, q1, i32, -1); 3064 TESTINSN_un_q("vqshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c); 3065 TESTINSN_un_q("vqshrun.s32 d2, q5, #10", d2, q5, i32, -1); 3066 TESTINSN_un_q("vqshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3067 TESTINSN_un_q("vqshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 3068 TESTINSN_un_q("vqshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff); 3069 TESTINSN_un_q("vqshrun.s16 d8, q9, #8", d8, q9, i32, -10); 3070 TESTINSN_un_q("vqshrun.s32 d10, q11, #5", d10, q11, i32, 10234); 3071 TESTINSN_un_q("vqshrun.s64 d12, q13, #1", d12, q13, i32, -1); 3072 TESTINSN_un_q("vqshrun.s16 d14, q15, #6", d14, q15, i32, -1); 3073 TESTINSN_un_q("vqshrun.s32 d10, q11, #9", d10, q11, i32, 1000); 3074 TESTINSN_un_q("vqshrun.s64 d7, q13, #7", d7, q13, i32, -1); 3075 TESTINSN_un_q("vqshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 3076 TESTINSN_un_q("vqshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 3077 TESTINSN_un_q("vqshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 3078 TESTINSN_un_q("vqshrun.s64 d0, q1, #22", d0, q1, i32, -1); 3079 TESTINSN_un_q("vqshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac); 3080 TESTINSN_un_q("vqshrun.s64 d8, q4, #9", d8, q4, i32, 13560); 3081 TESTINSN_un_q("vqshrun.s64 d9, q12, #11", d9, q12, i32, 98710); 3082 3083 printf("---- VQRSHRN ----\n"); 3084 TESTINSN_un_q("vqrshrn.s16 d0, q1, #1", d0, q1, i32, -1); 3085 TESTINSN_un_q("vqrshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c); 3086 TESTINSN_un_q("vqrshrn.s32 d2, q5, #10", d2, q5, i32, -1); 3087 TESTINSN_un_q("vqrshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3088 TESTINSN_un_q("vqrshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 3089 TESTINSN_un_q("vqrshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff); 3090 TESTINSN_un_q("vqrshrn.s16 d8, q9, #8", d8, q9, i32, -10); 3091 TESTINSN_un_q("vqrshrn.s32 d10, q11, #5", d10, q11, i32, 10234); 3092 TESTINSN_un_q("vqrshrn.s64 d12, q13, #1", d12, q13, i32, -1); 3093 TESTINSN_un_q("vqrshrn.s16 d14, q15, #6", d14, q15, i32, -1); 3094 TESTINSN_un_q("vqrshrn.s32 d10, q11, #9", d10, q11, i32, 1000); 3095 TESTINSN_un_q("vqrshrn.s64 d7, q13, #7", d7, q13, i32, -1); 3096 TESTINSN_un_q("vqrshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 3097 TESTINSN_un_q("vqrshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 3098 TESTINSN_un_q("vqrshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 3099 TESTINSN_un_q("vqrshrn.s64 d0, q1, #22", d0, q1, i32, -1); 3100 TESTINSN_un_q("vqrshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac); 3101 TESTINSN_un_q("vqrshrn.s64 d8, q4, #9", d8, q4, i32, 13560); 3102 TESTINSN_un_q("vqrshrn.s64 d9, q12, #11", d9, q12, i32, 98710); 3103 TESTINSN_un_q("vqrshrn.u16 d0, q1, #1", d0, q1, i32, -1); 3104 TESTINSN_un_q("vqrshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c); 3105 TESTINSN_un_q("vqrshrn.u32 d2, q5, #10", d2, q5, i32, -1); 3106 TESTINSN_un_q("vqrshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3107 TESTINSN_un_q("vqrshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff); 3108 TESTINSN_un_q("vqrshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff); 3109 TESTINSN_un_q("vqrshrn.u16 d8, q9, #8", d8, q9, i32, -10); 3110 TESTINSN_un_q("vqrshrn.u32 d10, q11, #5", d10, q11, i32, 10234); 3111 TESTINSN_un_q("vqrshrn.u64 d12, q13, #1", d12, q13, i32, -1); 3112 TESTINSN_un_q("vqrshrn.u16 d14, q15, #6", d14, q15, i32, -1); 3113 TESTINSN_un_q("vqrshrn.u32 d10, q11, #9", d10, q11, i32, 1000); 3114 TESTINSN_un_q("vqrshrn.u64 d7, q13, #7", d7, q13, i32, -1); 3115 TESTINSN_un_q("vqrshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf); 3116 TESTINSN_un_q("vqrshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf); 3117 TESTINSN_un_q("vqrshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0); 3118 TESTINSN_un_q("vqrshrn.u64 d0, q1, #22", d0, q1, i32, -1); 3119 TESTINSN_un_q("vqrshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac); 3120 TESTINSN_un_q("vqrshrn.u64 d8, q4, #9", d8, q4, i32, 13560); 3121 TESTINSN_un_q("vqrshrn.u64 d9, q12, #11", d9, q12, i32, 98710); 3122 3123 printf("---- VQRSHRUN ----\n"); 3124 TESTINSN_un_q("vqrshrun.s16 d0, q1, #1", d0, q1, i32, -1); 3125 TESTINSN_un_q("vqrshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c); 3126 TESTINSN_un_q("vqrshrun.s32 d2, q5, #10", d2, q5, i32, -1); 3127 TESTINSN_un_q("vqrshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3128 TESTINSN_un_q("vqrshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 3129 TESTINSN_un_q("vqrshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff); 3130 TESTINSN_un_q("vqrshrun.s16 d8, q9, #8", d8, q9, i32, -10); 3131 TESTINSN_un_q("vqrshrun.s32 d10, q11, #5", d10, q11, i32, 10234); 3132 TESTINSN_un_q("vqrshrun.s64 d12, q13, #1", d12, q13, i32, -1); 3133 TESTINSN_un_q("vqrshrun.s16 d14, q15, #6", d14, q15, i32, -1); 3134 TESTINSN_un_q("vqrshrun.s32 d10, q11, #9", d10, q11, i32, 1000); 3135 TESTINSN_un_q("vqrshrun.s64 d7, q13, #7", d7, q13, i32, -1); 3136 TESTINSN_un_q("vqrshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 3137 TESTINSN_un_q("vqrshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 3138 TESTINSN_un_q("vqrshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 3139 TESTINSN_un_q("vqrshrun.s64 d0, q1, #22", d0, q1, i32, -1); 3140 TESTINSN_un_q("vqrshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac); 3141 TESTINSN_un_q("vqrshrun.s64 d8, q4, #9", d8, q4, i32, 13560); 3142 TESTINSN_un_q("vqrshrun.s64 d9, q12, #11", d9, q12, i32, 98710); 3143 3144 printf("---- VRSHRN ----\n"); 3145 TESTINSN_un("vrshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657); 3146 TESTINSN_un("vrshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3); 3147 TESTINSN_un("vrshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa); 3148 TESTINSN_un("vrshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713); 3149 TESTINSN_un("vrshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3); 3150 TESTINSN_un("vrshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff); 3151 TESTINSN_un("vrshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa); 3152 TESTINSN_un("vrshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc); 3153 TESTINSN_un("vrshrn.i16 d8, q12, #3", d8, q12, i32, 0x713); 3154 TESTINSN_un("vrshrn.i16 d9, q2, #7", d9, q2, i32, 0x713); 3155 TESTINSN_un("vrshrn.i32 d10, q13, #2", d10, q13, i32, 0x713); 3156 TESTINSN_un("vrshrn.i32 d15, q11, #1", d15, q11, i32, 0x3); 3157 TESTINSN_un("vrshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa); 3158 TESTINSN_un("vrshrn.i32 d12, q0, #6", d12, q0, i32, 0xf); 3159 TESTINSN_un("vrshrn.i32 d13, q13, #2", d13, q13, i32, -1); 3160 3161 printf("---- VSHL (immediate) ----\n"); 3162 TESTINSN_un("vshl.i64 d0, d1, #1", d0, d1, i32, 24); 3163 TESTINSN_un("vshl.i64 d5, d2, #1", d5, d2, i32, (1 << 30)); 3164 TESTINSN_un("vshl.i64 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 3165 TESTINSN_un("vshl.i64 d11, d2, #12", d11, d2, i32, -1); 3166 TESTINSN_un("vshl.i64 d15, d12, #63", d15, d12, i32, 5); 3167 TESTINSN_un("vshl.i64 d5, d12, #62", d5, d12, i32, (1 << 31) + 1); 3168 TESTINSN_un("vshl.i32 d0, d1, #1", d0, d1, i32, 24); 3169 TESTINSN_un("vshl.i32 d5, d2, #1", d5, d2, i32, (1 << 30)); 3170 TESTINSN_un("vshl.i32 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 3171 TESTINSN_un("vshl.i32 d11, d2, #12", d11, d2, i32, -1); 3172 TESTINSN_un("vshl.i32 d15, d12, #20", d15, d12, i32, 5); 3173 TESTINSN_un("vshl.i32 d5, d12, #30", d5, d12, i32, (1 << 31) + 1); 3174 TESTINSN_un("vshl.i16 d0, d1, #1", d0, d1, i16, 24); 3175 TESTINSN_un("vshl.i16 d5, d2, #1", d5, d2, i32, (1 << 30)); 3176 TESTINSN_un("vshl.i16 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 3177 TESTINSN_un("vshl.i16 d11, d2, #12", d11, d2, i16, -1); 3178 TESTINSN_un("vshl.i16 d15, d12, #3", d15, d12, i16, 5); 3179 TESTINSN_un("vshl.i16 d5, d12, #14", d5, d12, i32, (1 << 31) + 1); 3180 TESTINSN_un("vshl.i8 d0, d1, #1", d0, d1, i8, 24); 3181 TESTINSN_un("vshl.i8 d5, d2, #1", d5, d2, i32, (1 << 30)); 3182 TESTINSN_un("vshl.i8 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 3183 TESTINSN_un("vshl.i8 d11, d2, #7", d11, d2, i8, -1); 3184 TESTINSN_un("vshl.i8 d15, d12, #3", d15, d12, i8, 5); 3185 TESTINSN_un("vshl.i8 d5, d12, #6", d5, d12, i32, (1 << 31) + 1); 3186 3187 printf("---- VNEG ----\n"); 3188 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0x73); 3189 TESTINSN_un("vneg.s16 d15, d4", d15, d4, i32, 0x73); 3190 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0x73); 3191 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0xfe); 3192 TESTINSN_un("vneg.s16 d31, d4", d31, d4, i32, 0xef); 3193 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0xde); 3194 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i16, 0xfe0a); 3195 TESTINSN_un("vneg.s16 d15, d4", d15, d4, i16, 0xef0b); 3196 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i16, 0xde0c); 3197 3198 printf("---- VQNEG ----\n"); 3199 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0x73); 3200 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 1 << 31); 3201 TESTINSN_un_q("vqneg.s16 d0, d1", d0, d1, i32, 1 << 31); 3202 TESTINSN_un_q("vqneg.s8 d0, d1", d0, d1, i32, 1 << 31); 3203 TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i32, 0x73); 3204 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0x73); 3205 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0xfe); 3206 TESTINSN_un_q("vqneg.s16 d31, d4", d31, d4, i32, 0xef); 3207 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0xde); 3208 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i16, 0xfe0a); 3209 TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i16, 0xef0b); 3210 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i16, 0xde0c); 3211 3212 printf("---- VREV ----\n"); 3213 TESTINSN_un("vrev64.8 d0, d1", d0, d1, i32, 0xaabbccdd); 3214 TESTINSN_un("vrev64.16 d10, d31", d10, d31, i32, 0xaabbccdd); 3215 TESTINSN_un("vrev64.32 d1, d14", d1, d14, i32, 0xaabbccdd); 3216 TESTINSN_un("vrev32.8 d0, d1", d0, d1, i32, 0xaabbccdd); 3217 TESTINSN_un("vrev32.16 d30, d15", d30, d15, i32, 0xaabbccdd); 3218 TESTINSN_un("vrev16.8 d0, d1", d0, d1, i32, 0xaabbccdd); 3219 3220 printf("---- VTBL ----\n"); 3221 TESTINSN_tbl_1("vtbl.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678); 3222 TESTINSN_tbl_1("vtbl.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678); 3223 TESTINSN_tbl_1("vtbl.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678); 3224 TESTINSN_tbl_1("vtbl.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678); 3225 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678); 3226 TESTINSN_tbl_1("vtbl.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678); 3227 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678); 3228 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678); 3229 TESTINSN_tbl_2("vtbl.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3230 TESTINSN_tbl_2("vtbl.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4); 3231 TESTINSN_tbl_2("vtbl.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4); 3232 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3233 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3234 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3235 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3236 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3237 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3238 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3239 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3240 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3241 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3242 TESTINSN_tbl_3("vtbl.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3243 TESTINSN_tbl_3("vtbl.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd); 3244 TESTINSN_tbl_3("vtbl.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd); 3245 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3246 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3247 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3248 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3249 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3250 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3251 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3252 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3253 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3254 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3255 TESTINSN_tbl_4("vtbl.8 d0, {d2-d5}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3256 TESTINSN_tbl_4("vtbl.8 d0, {d1-d4}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd, d4, i32, 0xfefdfcfb); 3257 TESTINSN_tbl_4("vtbl.8 d0, {d28-d31}, d1", d0, d1, i8, 0x17, d28, i32, 0x12345678, d29, i32, 0xa1a2a3a4, d30, i32, 0xcacbcccd, d31, i32, 0xfefdfcfb); 3258 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3259 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1a, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3260 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3261 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3262 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1f, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3263 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1a0315ff, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3264 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3265 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x171efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3266 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1d130f1a, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3267 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x17101c11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3268 3269 printf("---- VTBX ----\n"); 3270 TESTINSN_tbl_1("vtbx.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678); 3271 TESTINSN_tbl_1("vtbx.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678); 3272 TESTINSN_tbl_1("vtbx.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678); 3273 TESTINSN_tbl_1("vtbx.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678); 3274 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678); 3275 TESTINSN_tbl_1("vtbx.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678); 3276 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678); 3277 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678); 3278 TESTINSN_tbl_2("vtbx.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3279 TESTINSN_tbl_2("vtbx.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4); 3280 TESTINSN_tbl_2("vtbx.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4); 3281 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3282 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3283 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3284 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3285 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3286 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3287 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3288 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3289 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3290 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3291 TESTINSN_tbl_3("vtbx.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3292 TESTINSN_tbl_3("vtbx.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd); 3293 TESTINSN_tbl_3("vtbx.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd); 3294 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3295 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3296 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3297 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3298 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3299 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3300 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3301 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3302 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3303 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3304 TESTINSN_tbl_4("vtbx.8 d0, {d2-d5}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3305 TESTINSN_tbl_4("vtbx.8 d0, {d1-d4}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd, d4, i32, 0xfefdfcfb); 3306 TESTINSN_tbl_4("vtbx.8 d0, {d28-d31}, d1", d0, d1, i8, 0x17, d28, i32, 0x12345678, d29, i32, 0xa1a2a3a4, d30, i32, 0xcacbcccd, d31, i32, 0xfefdfcfb); 3307 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3308 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1a, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3309 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3310 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3311 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1f, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 3312 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1a0315ff, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3313 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3314 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x171efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3315 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1d130f1a, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3316 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x17101c11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 3317 3318 printf("---- VPMAX (integer) ----\n"); 3319 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 3320 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 3321 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 3322 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 3323 TESTINSN_bin("vpmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 3324 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 3325 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3326 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3327 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 3328 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3329 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3330 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 3331 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3332 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3333 TESTINSN_bin("vpmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3334 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 3335 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 3336 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 3337 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 3338 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120); 3339 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3340 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3341 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3342 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3343 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3344 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3345 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3346 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3347 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3348 TESTINSN_bin("vpmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3349 3350 printf("---- VPMIN (integer) ----\n"); 3351 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 3352 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 3353 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 3354 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 3355 TESTINSN_bin("vpmin.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 3356 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 3357 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3358 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3359 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 3360 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3361 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3362 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 3363 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3364 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3365 TESTINSN_bin("vpmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3366 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 3367 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 3368 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 3369 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 3370 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120); 3371 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3372 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3373 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3374 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3375 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3376 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3377 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3378 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3379 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3380 TESTINSN_bin("vpmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3381 3382 printf("---- VQRDMULH ----\n"); 3383 TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 3384 TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 3385 TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 3386 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 3387 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3388 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 3389 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 3390 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 3391 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3392 TESTINSN_bin_q("vqrdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 3393 TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 3394 TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, (1 << 31) + 1); 3395 TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31); 3396 TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30); 3397 3398 printf("---- VQRDMULH (by scalar) ----\n"); 3399 TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120); 3400 TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120); 3401 TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120); 3402 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 3403 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3404 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 3405 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12); 3406 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 3407 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3408 TESTINSN_bin_q("vqrdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120); 3409 TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31); 3410 TESTINSN_bin_q("vqrdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, (1 << 31) + 1); 3411 TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31); 3412 TESTINSN_bin_q("vqrdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30); 3413 3414 printf("---- VADD (fp) ----\n"); 3415 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3416 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3417 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3418 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3419 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3420 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 3421 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 3422 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3423 TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3424 TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3425 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3426 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3427 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3428 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3429 TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3430 TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3431 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3432 TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3433 TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3434 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3435 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3436 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3437 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3438 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3439 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3440 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3441 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3442 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3443 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3444 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3445 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3446 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3447 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3448 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3449 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3450 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3451 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3452 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3453 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3454 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3455 3456 printf("---- VSUB (fp) ----\n"); 3457 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3458 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3459 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3460 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3461 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3462 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3463 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3464 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3465 TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3466 TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3467 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3468 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3469 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3470 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3471 TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3472 TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3473 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3474 TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3475 TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3476 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3477 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3478 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3479 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3480 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3481 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3482 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3483 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3484 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3485 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3486 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3487 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3488 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3489 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3490 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3491 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3492 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3493 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3494 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3495 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3496 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3497 3498 printf("---- VMUL (fp) ----\n"); 3499 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3500 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3501 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3502 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3503 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3504 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3505 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3506 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3507 TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3508 TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3509 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3510 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3511 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3512 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3513 TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3514 TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3515 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3516 TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3517 TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3518 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3519 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3520 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3521 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3522 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3523 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3524 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3525 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3526 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3527 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3528 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3529 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3530 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3531 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3532 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3533 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3534 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3535 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3536 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3537 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3538 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3539 3540 printf("---- VMUL (fp by scalar) ----\n"); 3541 TESTINSN_bin("vmul.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120)); 3542 TESTINSN_bin("vmul.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120)); 3543 TESTINSN_bin("vmul.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 3544 TESTINSN_bin("vmul.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 3545 TESTINSN_bin("vmul.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 3546 TESTINSN_bin("vmul.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 3547 TESTINSN_bin("vmul.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11)); 3548 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3549 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3550 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3551 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3552 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3553 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3554 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3555 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3556 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3557 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3558 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3559 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3560 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3561 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3562 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3563 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3564 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3565 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3566 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3567 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3568 3569 printf("---- VMLA (fp) ----\n"); 3570 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3571 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3572 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3573 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3574 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3575 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3576 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3577 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3578 TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3579 TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3580 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3581 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3582 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3583 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3584 TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3585 TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3586 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3587 TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3588 TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3589 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3590 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3591 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3592 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3593 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3594 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3595 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3596 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3597 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3598 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3599 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3600 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3601 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3602 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3603 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3604 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3605 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3606 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3607 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3608 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3609 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3610 3611 printf("---- VMLA (fp by scalar) ----\n"); 3612 TESTINSN_bin_f("vmla.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120)); 3613 TESTINSN_bin_f("vmla.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120)); 3614 TESTINSN_bin_f("vmla.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 3615 TESTINSN_bin_f("vmla.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 3616 TESTINSN_bin_f("vmla.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 3617 TESTINSN_bin_f("vmla.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 3618 TESTINSN_bin_f("vmla.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11)); 3619 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3620 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3621 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3622 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3623 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3624 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3625 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3626 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3627 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3628 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3629 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3630 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3631 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3632 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3633 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3634 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3635 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3636 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3637 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3638 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3639 3640 printf("---- VMLS (fp) ----\n"); 3641 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3642 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3643 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3644 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3645 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3646 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3647 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3648 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3649 TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3650 TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3651 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3652 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3653 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3654 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3655 TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3656 TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3657 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3658 TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3659 TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3660 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3661 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3662 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3663 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3664 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3665 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3666 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3667 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3668 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3669 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3670 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3671 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3672 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3673 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3674 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3675 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3676 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3677 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3678 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3679 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3680 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3681 3682 printf("---- VMLS (fp by scalar) ----\n"); 3683 TESTINSN_bin_f("vmls.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120)); 3684 TESTINSN_bin_f("vmls.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120)); 3685 TESTINSN_bin_f("vmls.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 3686 TESTINSN_bin_f("vmls.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 3687 TESTINSN_bin_f("vmls.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 3688 TESTINSN_bin_f("vmls.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 3689 TESTINSN_bin_f("vmls.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11)); 3690 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3691 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3692 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3693 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3694 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3695 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3696 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3697 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3698 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3699 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3700 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3701 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3702 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3703 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3704 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3705 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3706 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3707 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3708 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3709 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3710 3711 printf("---- VABD (fp) ----\n"); 3712 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3713 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3714 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3715 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3716 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3717 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3718 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3719 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3720 TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3721 TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3722 TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3723 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3724 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3725 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3726 TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3727 TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3728 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3729 TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3730 TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3731 TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3732 3733 printf("---- VPADD (fp) ----\n"); 3734 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3735 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3736 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3737 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3738 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3739 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3740 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3741 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3742 TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3743 TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3744 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3745 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3746 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3747 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3748 TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3749 TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3750 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3751 TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3752 TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3753 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3754 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3755 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3756 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3757 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3758 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3759 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3760 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3761 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3762 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3763 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3764 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3765 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3766 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3767 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3768 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3769 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3770 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3771 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3772 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3773 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3774 3775 printf("---- VCVT (integer <-> fp) ----\n"); 3776 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(3.2)); 3777 TESTINSN_un("vcvt.u32.f32 d10, d11", d10, d11, i32, f2u(3e22)); 3778 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(3e9)); 3779 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 3780 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 3781 TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 3782 TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 3783 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(3.2)); 3784 TESTINSN_un("vcvt.s32.f32 d20, d21", d20, d21, i32, f2u(3e22)); 3785 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(3e9)); 3786 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 3787 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 3788 TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 3789 TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 3790 TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, 7); 3791 TESTINSN_un("vcvt.f32.u32 d10, d11", d10, d11, i32, 1 << 31); 3792 TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, (1U << 31) + 1); 3793 TESTINSN_un("vcvt.f32.u32 d24, d26", d24, d26, i32, (1U << 31) - 1); 3794 TESTINSN_un("vcvt.f32.u32 d0, d14", d0, d14, i32, 0x30a0bcef); 3795 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, 7); 3796 TESTINSN_un("vcvt.f32.s32 d30, d31", d30, d31, i32, 1 << 31); 3797 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) + 1); 3798 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) - 1); 3799 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(NAN)); 3800 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(0.0)); 3801 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 3802 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 3803 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(NAN)); 3804 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(0.0)); 3805 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 3806 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 3807 3808 printf("---- VCVT (fixed <-> fp) ----\n"); 3809 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(3.2)); 3810 TESTINSN_un("vcvt.u32.f32 d10, d11, #1", d10, d11, i32, f2u(3e22)); 3811 TESTINSN_un("vcvt.u32.f32 d15, d4, #32", d15, d4, i32, f2u(3e9)); 3812 TESTINSN_un("vcvt.u32.f32 d15, d4, #7", d15, d4, i32, f2u(-0.5)); 3813 TESTINSN_un("vcvt.u32.f32 d15, d4, #4", d15, d4, i32, f2u(-7.1)); 3814 TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 3815 TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 3816 TESTINSN_un("vcvt.s32.f32 d0, d1, #5", d0, d1, i32, f2u(3.2)); 3817 TESTINSN_un("vcvt.s32.f32 d20, d21, #1", d20, d21, i32, f2u(3e22)); 3818 TESTINSN_un("vcvt.s32.f32 d15, d4, #8", d15, d4, i32, f2u(3e9)); 3819 TESTINSN_un("vcvt.s32.f32 d15, d4, #2", d15, d4, i32, f2u(-0.5)); 3820 TESTINSN_un("vcvt.s32.f32 d15, d4, #1", d15, d4, i32, f2u(-7.1)); 3821 TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 3822 TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 3823 TESTINSN_un("vcvt.f32.u32 d0, d1, #5", d0, d1, i32, 7); 3824 TESTINSN_un("vcvt.f32.u32 d10, d11, #9", d10, d11, i32, 1 << 31); 3825 TESTINSN_un("vcvt.f32.u32 d0, d1, #4", d0, d1, i32, (1U << 31) + 1); 3826 TESTINSN_un("vcvt.f32.u32 d24, d26, #6", d24, d26, i32, (1U << 31) - 1); 3827 TESTINSN_un("vcvt.f32.u32 d0, d14, #5", d0, d14, i32, 0x30a0bcef); 3828 TESTINSN_un("vcvt.f32.s32 d0, d1, #12", d0, d1, i32, 7); 3829 TESTINSN_un("vcvt.f32.s32 d30, d31, #8", d30, d31, i32, 1 << 31); 3830 TESTINSN_un("vcvt.f32.s32 d0, d1, #1", d0, d1, i32, (1U << 31) + 1); 3831 TESTINSN_un("vcvt.f32.s32 d0, d1, #6", d0, d1, i32, (1U << 31) - 1); 3832 TESTINSN_un("vcvt.f32.s32 d0, d14, #2", d0, d14, i32, 0x30a0bcef); 3833 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN)); 3834 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0)); 3835 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY)); 3836 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY)); 3837 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN)); 3838 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0)); 3839 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY)); 3840 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY)); 3841 3842 printf("---- VMAX (fp) ----\n"); 3843 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3844 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3845 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3846 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3847 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3848 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 3849 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 3850 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3851 TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3852 TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3853 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3854 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3855 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3856 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3857 TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3858 TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3859 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3860 TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3861 TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3862 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3863 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 3864 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 3865 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 3866 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 3867 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 3868 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 3869 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3870 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3871 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3872 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3873 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3874 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3875 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3876 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3877 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3878 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3879 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3880 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3881 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3882 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3883 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3884 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3885 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3886 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3887 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3888 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3889 3890 printf("---- VMIN (fp) ----\n"); 3891 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3892 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3893 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3894 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3895 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3896 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 3897 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 3898 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3899 TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3900 TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3901 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3902 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3903 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3904 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3905 TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3906 TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3907 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3908 TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3909 TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3910 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3911 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 3912 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 3913 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 3914 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 3915 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 3916 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 3917 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3918 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3919 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3920 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3921 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3922 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3923 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3924 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3925 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3926 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3927 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3928 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3929 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3930 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3931 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3932 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3933 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3934 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3935 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3936 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3937 3938 printf("---- VPMAX (fp) ----\n"); 3939 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3940 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3941 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3942 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3943 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3944 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 3945 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 3946 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3947 TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3948 TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3949 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3950 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3951 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3952 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3953 TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3954 TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3955 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3956 TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3957 TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3958 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3959 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 3960 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 3961 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 3962 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 3963 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 3964 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 3965 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3966 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3967 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3968 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3969 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3970 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3971 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3972 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3973 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3974 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3975 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3976 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3977 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3978 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3979 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3980 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3981 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3982 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3983 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3984 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3985 3986 printf("---- VPMIN (fp) ----\n"); 3987 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3988 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3989 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3990 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3991 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3992 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 3993 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 3994 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3995 TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3996 TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3997 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3998 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3999 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4000 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4001 TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4002 TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4003 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4004 TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4005 TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4006 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4007 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4008 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4009 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4010 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4011 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4012 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4013 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4014 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4015 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4016 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4017 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4018 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4019 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4020 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4021 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4022 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4023 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4024 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4025 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4026 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4027 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4028 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4029 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4030 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4031 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4032 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4033 4034 printf("---- VRECPE ----\n"); 4035 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2)); 4036 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(-653.2)); 4037 TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22)); 4038 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9)); 4039 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-0.5)); 4040 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-7.1)); 4041 TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4042 TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4043 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2)); 4044 TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22)); 4045 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9)); 4046 TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4047 TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4048 TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4049 TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4050 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7); 4051 TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31); 4052 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4053 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4054 TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4055 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7); 4056 TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31); 4057 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4058 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4059 TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4060 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(NAN)); 4061 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(0.0)); 4062 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 4063 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 4064 4065 printf("---- VRECPS ----\n"); 4066 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4067 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4068 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4069 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4070 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4071 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 4072 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 4073 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4074 TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4075 TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4076 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4077 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4078 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4079 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4080 TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4081 TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4082 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4083 TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4084 TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4085 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4086 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4087 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4088 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4089 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4090 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4091 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4092 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4093 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4094 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4095 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4096 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4097 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4098 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4099 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4100 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4101 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4102 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4103 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4104 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4105 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4106 4107 printf("---- VABS (fp) ----\n"); 4108 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2)); 4109 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22)); 4110 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9)); 4111 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4112 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4113 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4114 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4115 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2)); 4116 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22)); 4117 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9)); 4118 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4119 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4120 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4121 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4122 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7); 4123 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31); 4124 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4125 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4126 TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4127 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7); 4128 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31); 4129 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4130 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4131 TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4132 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(NAN)); 4133 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(0.0)); 4134 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 4135 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 4136 4137 printf("---- VCGT (fp) ----\n"); 4138 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4139 TESTINSN_bin("vcgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4140 TESTINSN_bin("vcgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4141 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4142 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4143 TESTINSN_bin("vcgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4144 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4145 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4146 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4147 TESTINSN_bin("vcgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4148 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4149 TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4150 TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4151 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4152 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4153 TESTINSN_bin("vcgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4154 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4155 TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4156 TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4157 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4158 TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4159 TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4160 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4161 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4162 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4163 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4164 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4165 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4166 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4167 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4168 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4169 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4170 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4171 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4172 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4173 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4174 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4175 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4176 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4177 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4178 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4179 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4180 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4181 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4182 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4183 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4184 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4185 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4186 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4187 4188 printf("---- VCGE (fp) ----\n"); 4189 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4190 TESTINSN_bin("vcge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4191 TESTINSN_bin("vcge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4192 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4193 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4194 TESTINSN_bin("vcge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4195 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4196 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4197 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4198 TESTINSN_bin("vcge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4199 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4200 TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4201 TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4202 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4203 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4204 TESTINSN_bin("vcge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4205 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4206 TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4207 TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4208 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4209 TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4210 TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4211 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4212 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4213 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4214 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4215 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4216 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4217 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4218 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4219 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4220 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4221 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4222 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4223 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4224 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4225 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4226 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4227 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4228 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4229 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4230 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4231 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4232 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4233 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4234 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4235 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4236 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4237 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4238 4239 printf("---- VACGT (fp) ----\n"); 4240 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4241 TESTINSN_bin("vacgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4242 TESTINSN_bin("vacgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4243 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4244 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4245 TESTINSN_bin("vacgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4246 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4247 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4248 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4249 TESTINSN_bin("vacgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4250 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4251 TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4252 TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4253 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4254 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4255 TESTINSN_bin("vacgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4256 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4257 TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4258 TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4259 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4260 TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4261 TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4262 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4263 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4264 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4265 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4266 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4267 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4268 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4269 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4270 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4271 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4272 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4273 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4274 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4275 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4276 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4277 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4278 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4279 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4280 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4281 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4282 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4283 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4284 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4285 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4286 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4287 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4288 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4289 4290 printf("---- VACGE (fp) ----\n"); 4291 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4292 TESTINSN_bin("vacge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4293 TESTINSN_bin("vacge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4294 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4295 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4296 TESTINSN_bin("vacge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4297 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4298 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4299 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4300 TESTINSN_bin("vacge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4301 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4302 TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4303 TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4304 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4305 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4306 TESTINSN_bin("vacge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4307 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4308 TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4309 TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4310 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4311 TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4312 TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4313 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4314 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4315 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4316 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4317 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4318 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4319 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4320 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4321 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4322 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4323 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4324 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4325 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4326 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4327 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4328 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4329 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4330 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4331 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4332 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4333 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4334 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4335 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4336 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4337 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4338 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4339 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4340 4341 printf("---- VCEQ (fp) ----\n"); 4342 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4343 TESTINSN_bin("vceq.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4344 TESTINSN_bin("vceq.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4345 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4346 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4347 TESTINSN_bin("vceq.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4348 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4349 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4350 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4351 TESTINSN_bin("vceq.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4352 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4353 TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4354 TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4355 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4356 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4357 TESTINSN_bin("vceq.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4358 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4359 TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4360 TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4361 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4362 TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4363 TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4364 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4365 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4366 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4367 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4368 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4369 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4370 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4371 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4372 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4373 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4374 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4375 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4376 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4377 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4378 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4379 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4380 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4381 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4382 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4383 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4384 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4385 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4386 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4387 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4388 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4389 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4390 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4391 4392 printf("---- VCEQ (fp) #0 ----\n"); 4393 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4394 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x1); 4395 TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4396 TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4397 TESTINSN_un("vceq.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4398 TESTINSN_un("vceq.f32 d30, d15, #0", d30, d15, i32, 0x0); 4399 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4400 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4401 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4402 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4403 4404 printf("---- VCGT (fp) #0 ----\n"); 4405 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4406 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x1); 4407 TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4408 TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4409 TESTINSN_un("vcgt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4410 TESTINSN_un("vcgt.f32 d30, d15, #0", d30, d15, i32, 0x0); 4411 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4412 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4413 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4414 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4415 4416 printf("---- VCLT (fp) #0 ----\n"); 4417 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4418 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x1); 4419 TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4420 TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4421 TESTINSN_un("vclt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4422 TESTINSN_un("vclt.f32 d30, d15, #0", d30, d15, i32, 0x0); 4423 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4424 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4425 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4426 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4427 4428 printf("---- VCGE (fp) #0 ----\n"); 4429 TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4430 TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x1); 4431 TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4432 TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4433 TESTINSN_un("vcge.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4434 TESTINSN_un("vcge.f32 d30, d15, #0", d30, d15, i32, 0x0); 4435 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4436 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4437 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4438 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4439 4440 printf("---- VCLE (fp) #0 ----\n"); 4441 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4442 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x1); 4443 TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4444 TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4445 TESTINSN_un("vcle.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4446 TESTINSN_un("vcle.f32 d30, d15, #0", d30, d15, i32, 0x0); 4447 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4448 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4449 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4450 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4451 4452 printf("---- VNEG (fp) ----\n"); 4453 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x01000000); 4454 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x1); 4455 TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, 1 << 31); 4456 TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, f2u(23.04)); 4457 TESTINSN_un("vneg.f32 d2, d31", d2, d31, i32, f2u(-23.04)); 4458 TESTINSN_un("vneg.f32 d30, d15", d30, d15, i32, 0x0); 4459 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(NAN)); 4460 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(0.0)); 4461 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 4462 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 4463 4464 printf("---- VRSQRTS ----\n"); 4465 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4466 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4467 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4468 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4469 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4470 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 4471 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 4472 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4473 TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4474 TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4475 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4476 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4477 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4478 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4479 TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4480 TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4481 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4482 TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4483 TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4484 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4485 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4486 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4487 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4488 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4489 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4490 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4491 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4492 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4493 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4494 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4495 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4496 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4497 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4498 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4499 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4500 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4501 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4502 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4503 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4504 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4505 4506 printf("---- VRSQRTE (fp) ----\n"); 4507 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2)); 4508 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22)); 4509 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9)); 4510 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4511 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4512 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4513 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4514 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2)); 4515 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22)); 4516 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9)); 4517 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4518 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4519 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4520 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4521 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7); 4522 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31); 4523 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4524 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4525 TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4526 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7); 4527 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31); 4528 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4529 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4530 TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4531 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(NAN)); 4532 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(0.0)); 4533 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 4534 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 4535 4536 return 0; 4537} 4538 4539/* How to compile: 4540 4541 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ 4542 -marm -o neon64-a neon64.c 4543 4544 or 4545 4546 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ 4547 -mthumb -o neon64-t neon64.c 4548 4549*/ 4550 4551#include <stdio.h> 4552#include <string.h> 4553#include <math.h> 4554 4555#ifndef __thumb__ 4556// ARM 4557#define MOVE_to_FPSCR_from_R4 \ 4558 ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t" 4559#define MOVE_to_R4_from_FPSCR \ 4560 ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t" 4561#endif 4562 4563#ifdef __thumb__ 4564// Thumb 4565#define MOVE_to_FPSCR_from_R4 \ 4566 ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t" 4567#define MOVE_to_R4_from_FPSCR \ 4568 ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t" 4569#endif 4570 4571static inline unsigned int f2u(float x) { 4572 union { 4573 float f; 4574 unsigned int u; 4575 } cvt; 4576 cvt.f = x; 4577 return cvt.u; 4578} 4579 4580/* test macros to generate and output the result of a single instruction */ 4581 4582const unsigned int mem[] = { 4583 0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d, 4584 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, 4585 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, 4586 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c 4587}; 4588 4589#define TESTINSN_imm(instruction, QD, imm) \ 4590{ \ 4591 unsigned int out[2]; \ 4592\ 4593 __asm__ volatile( \ 4594 "vmov.i8 " #QD ", #0x55" "\n\t" \ 4595 instruction ", #" #imm "\n\t" \ 4596 "vstmia %0, {" #QD "}\n\t" \ 4597 : \ 4598 : "r" (out) \ 4599 : #QD, "memory" \ 4600 ); \ 4601 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \ 4602 instruction, out[1], out[0]); \ 4603} 4604 4605#define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \ 4606{ \ 4607 unsigned int out[2]; \ 4608\ 4609 __asm__ volatile( \ 4610 "vmov.i8 " #QD ", #0x55" "\n\t" \ 4611 "vdup." #QMtype " " #QM ", %1\n\t" \ 4612 instruction "\n\t" \ 4613 "vstmia %0, {" #QD "}\n\t" \ 4614 : \ 4615 : "r" (out), "r" (QMval) \ 4616 : #QD, #QM, "memory" \ 4617 ); \ 4618 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ 4619 instruction, out[1], out[0], QMval); \ 4620} 4621 4622#define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \ 4623{ \ 4624 unsigned int out[2]; \ 4625 unsigned int fpscr; \ 4626\ 4627 __asm__ volatile( \ 4628 "vmov.i8 " #QD ", #0x55" "\n\t" \ 4629 "mov r4, #0\n\t" \ 4630 MOVE_to_FPSCR_from_R4 \ 4631 "vdup." #QMtype " " #QM ", %2\n\t" \ 4632 instruction "\n\t" \ 4633 "vstmia %1, {" #QD "}\n\t" \ 4634 MOVE_to_R4_from_FPSCR \ 4635 "mov %0, r4" \ 4636 : "=r" (fpscr) \ 4637 : "r" (out), "r" (QMval) \ 4638 : #QD, #QM, "memory", "r4" \ 4639 ); \ 4640 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \ 4641 instruction, out[1], out[0], QMval, fpscr); \ 4642} 4643 4644#define TESTINSN_core_to_scalar(instruction, QD, QM, QMval) \ 4645{ \ 4646 unsigned int out[2]; \ 4647\ 4648 __asm__ volatile( \ 4649 "vmov.i8 " #QD ", #0x55" "\n\t" \ 4650 "mov " #QM ", %1\n\t" \ 4651 instruction "\n\t" \ 4652 "vstmia %0, {" #QD "}\n\t" \ 4653 : \ 4654 : "r" (out), "r" (QMval) \ 4655 : #QD, #QM, "memory" \ 4656 ); \ 4657 printf("%s :: Qd 0x%08x 0x%08x Qm 0x%08x\n", \ 4658 instruction, out[1], out[0], QMval); \ 4659} 4660 4661#define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \ 4662{ \ 4663 unsigned int out[2]; \ 4664\ 4665 __asm__ volatile( \ 4666 "mov " #QD ", #0x55" "\n\t" \ 4667 "vdup." #QMtype " " #QM ", %1\n\t" \ 4668 instruction "\n\t" \ 4669 "str " #QD ", [%0]\n\t" \ 4670 : \ 4671 : "r" (out), "r" (QMval) \ 4672 : #QD, #QM, "memory" \ 4673 ); \ 4674 printf("%s :: Rd 0x%08x Qm (" #QMtype ")0x%08x\n", \ 4675 instruction, out[0], QMval); \ 4676} 4677 4678#define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \ 4679{ \ 4680 unsigned int out[8]; \ 4681\ 4682 __asm__ volatile( \ 4683 "vmov.i8 " #QD1 ", #0x55" "\n\t" \ 4684 "vmov.i8 " #QD2 ", #0x55" "\n\t" \ 4685 "vmov.i8 " #QD3 ", #0x55" "\n\t" \ 4686 "vmov.i8 " #QD4 ", #0x55" "\n\t" \ 4687 instruction ", [%1]\n\t" \ 4688 "mov r4, %0\n\t" \ 4689 "vstmia %0!, {" #QD1 "}\n\t" \ 4690 "vstmia %0!, {" #QD2 "}\n\t" \ 4691 "vstmia %0!, {" #QD3 "}\n\t" \ 4692 "vstmia %0!, {" #QD4 "}\n\t" \ 4693 "mov %0, r4\n\t" \ 4694 : \ 4695 : "r" (out), "r" (mem) \ 4696 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ 4697 ); \ 4698 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ 4699 "0x%08x 0x%08x 0x%08x 0x%08x\n", \ 4700 instruction, out[0], out[1], out[2], out[3], out[4],\ 4701 out[5], out[6], out[7]); \ 4702} 4703 4704#define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \ 4705{ \ 4706 unsigned int out[8]; \ 4707\ 4708 memset(out, 0x55, 8 * (sizeof(unsigned int)));\ 4709 __asm__ volatile( \ 4710 "mov r4, %1\n\t" \ 4711 "vldmia %1!, {" #QD1 "}\n\t" \ 4712 "vldmia %1!, {" #QD2 "}\n\t" \ 4713 "vldmia %1!, {" #QD3 "}\n\t" \ 4714 "vldmia %1!, {" #QD4 "}\n\t" \ 4715 "mov %1, r4\n\t" \ 4716 instruction ", [%0]\n\t" \ 4717 : \ 4718 : "r" (out), "r" (mem) \ 4719 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ 4720 ); \ 4721 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x "\ 4722 "0x%08x 0x%08x 0x%08x 0x%08x\n", \ 4723 instruction, out[0], out[1], out[2], out[3], out[4],\ 4724 out[5], out[6], out[7]); \ 4725} 4726 4727#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 4728{ \ 4729 unsigned int out[2]; \ 4730\ 4731 __asm__ volatile( \ 4732 "vmov.i8 " #QD ", #0x55" "\n\t" \ 4733 "vdup." #QMtype " " #QM ", %1\n\t" \ 4734 "vdup." #QNtype " " #QN ", %2\n\t" \ 4735 instruction "\n\t" \ 4736 "vstmia %0, {" #QD "}\n\t" \ 4737 : \ 4738 : "r" (out), "r" (QMval), "r" (QNval) \ 4739 : #QD, #QM, #QN, "memory" \ 4740 ); \ 4741 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 4742 " Qn (" #QNtype ")0x%08x\n", \ 4743 instruction, out[1], out[0], QMval, QNval); \ 4744} 4745 4746#define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 4747{ \ 4748 unsigned int out[2]; \ 4749\ 4750 __asm__ volatile( \ 4751 "vdup.i32 " #QD ", %3\n\t" \ 4752 "vdup." #QMtype " " #QM ", %1\n\t" \ 4753 "vdup." #QNtype " " #QN ", %2\n\t" \ 4754 instruction "\n\t" \ 4755 "vstmia %0, {" #QD "}\n\t" \ 4756 : \ 4757 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000) \ 4758 : #QD, #QM, #QN, "memory" \ 4759 ); \ 4760 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 4761 " Qn (" #QNtype ")0x%08x\n", \ 4762 instruction, out[1], out[0], QMval, QNval); \ 4763} 4764 4765#define TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 4766 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \ 4767{ \ 4768 unsigned int out[2]; \ 4769\ 4770 __asm__ volatile( \ 4771 "vmov.i8 " #QD ", #0x55" "\n\t" \ 4772 "vdup." #QMtype " " #QM ", %1\n\t" \ 4773 "vdup." #QN1type " " #QN1 ", %2\n\t" \ 4774 "vdup." #QN2type " " #QN2 ", %3\n\t" \ 4775 "vdup." #QN3type " " #QN3 ", %4\n\t" \ 4776 "vdup." #QN4type " " #QN4 ", %5\n\t" \ 4777 instruction "\n\t" \ 4778 "vstmia %0, {" #QD "}\n\t" \ 4779 : \ 4780 : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \ 4781 "r" (QN4val) \ 4782 : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \ 4783 ); \ 4784 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 4785 " Qn1 (" #QN1type ")0x%08x" \ 4786 " Qn2 (" #QN2type ")0x%08x" \ 4787 " Qn3 (" #QN3type ")0x%08x" \ 4788 " Qn4 (" #QN4type ")0x%08x\n", \ 4789 instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \ 4790} 4791#define TESTINSN_tbl_1(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val) \ 4792 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 4793 QN1, QN1type, QN1val, QN1, QN1type, QN1val, QN1, QN1type, QN1val) 4794#define TESTINSN_tbl_2(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 4795 QN2, QN2type, QN2val) \ 4796 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 4797 QN2, QN2type, QN2val, QN1, QN1type, QN1val, QN2, QN2type, QN2val) 4798#define TESTINSN_tbl_3(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 4799 QN2, QN2type, QN2val, QN3, QN3type, QN3val) \ 4800 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 4801 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN2, QN2type, QN2val) 4802#define TESTINSN_tbl_4(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 4803 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \ 4804 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 4805 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) 4806 4807#define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 4808{ \ 4809 unsigned int out[2]; \ 4810 unsigned int fpscr; \ 4811\ 4812 __asm__ volatile( \ 4813 "vmov.i8 " #QD ", #0x55" "\n\t" \ 4814 "mov r4, #0\n\t" \ 4815 MOVE_to_FPSCR_from_R4 \ 4816 "vdup." #QMtype " " #QM ", %2\n\t" \ 4817 "vdup." #QNtype " " #QN ", %3\n\t" \ 4818 instruction "\n\t" \ 4819 "vstmia %1, {" #QD "}\n\t" \ 4820 MOVE_to_R4_from_FPSCR \ 4821 "mov %0, r4" \ 4822 : "=r" (fpscr) \ 4823 : "r" (out), "r" (QMval), "r" (QNval) \ 4824 : #QD, #QM, #QN, "memory", "r4" \ 4825 ); \ 4826 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 4827 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 4828 instruction, out[1], out[0], QMval, QNval, fpscr); \ 4829} 4830 4831#define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \ 4832{ \ 4833 unsigned int out1[2]; \ 4834 unsigned int out2[2]; \ 4835\ 4836 __asm__ volatile( \ 4837 "vdup." #QMtype " " #QM ", %2\n\t" \ 4838 "vdup." #QNtype " " #QN ", %3\n\t" \ 4839 instruction "\n\t" \ 4840 "vstmia %0, {" #QM "}\n\t" \ 4841 "vstmia %1, {" #QN "}\n\t" \ 4842 : \ 4843 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval) \ 4844 : #QM, #QN, "memory" \ 4845 ); \ 4846 printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 4847 " Qn (" #QNtype ")0x%08x\n", \ 4848 instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \ 4849} 4850 4851// Ditto TESTING_bin(), but in QD all zeros 4852#define TESTINSN_bin_0s(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 4853{ \ 4854 unsigned int out[2]; \ 4855\ 4856 __asm__ volatile( \ 4857 "vmov.i8 " #QD ", #0x00" "\n\t" \ 4858 "vdup." #QMtype " " #QM ", %1\n\t" \ 4859 "vdup." #QNtype " " #QN ", %2\n\t" \ 4860 instruction "\n\t" \ 4861 "vstmia %0, {" #QD "}\n\t" \ 4862 : \ 4863 : "r" (out), "r" (QMval), "r" (QNval) \ 4864 : #QD, #QM, #QN, "memory" \ 4865 ); \ 4866 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 4867 " Qn (" #QNtype ")0x%08x\n", \ 4868 instruction, out[1], out[0], QMval, QNval); \ 4869} 4870 4871#if 0 4872#define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \ 4873{ \ 4874 unsigned int out[2]; \ 4875\ 4876 __asm__ volatile( \ 4877 "vmov.i8 " #QD ", #0x55" "\n\t" \ 4878 "vdup." #QMtype " " #QM ", %1\n\t" \ 4879 instruction ", #" #imm "\n\t" \ 4880 "vstmia %0, {" #QD "}\n\t" \ 4881 : \ 4882 : "r" (out), "r" (QMval) \ 4883 : #QD, #QM, "memory" \ 4884 ); \ 4885 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x", \ 4886 instruction, out[1], out[0], QMval); \ 4887} 4888#endif 4889 4890int main(int argc, char **argv) 4891{ 4892 printf("----- VMOV (immediate) -----\n"); 4893 TESTINSN_imm("vmov.i32 d0", d0, 0x7); 4894 TESTINSN_imm("vmov.i16 d1", d1, 0x7); 4895 TESTINSN_imm("vmov.i8 d2", d2, 0x7); 4896 TESTINSN_imm("vmov.i32 d5", d5, 0x700); 4897 TESTINSN_imm("vmov.i16 d7", d7, 0x700); 4898 TESTINSN_imm("vmov.i32 d10", d10, 0x70000); 4899 TESTINSN_imm("vmov.i32 d12", d12, 0x7000000); 4900 TESTINSN_imm("vmov.i32 d13", d13, 0x7FF); 4901 TESTINSN_imm("vmov.i32 d14", d14, 0x7FFFF); 4902 TESTINSN_imm("vmov.i64 d15", d15, 0xFF0000FF00FFFF00); 4903 4904 printf("----- VMVN (immediate) -----\n"); 4905 TESTINSN_imm("vmvn.i32 d0", d0, 0x7); 4906 TESTINSN_imm("vmvn.i16 d1", d1, 0x7); 4907 TESTINSN_imm("vmvn.i8 d2", d2, 0x7); 4908 TESTINSN_imm("vmvn.i32 d5", d5, 0x700); 4909 TESTINSN_imm("vmvn.i16 d7", d7, 0x700); 4910 TESTINSN_imm("vmvn.i32 d10", d10, 0x70000); 4911 TESTINSN_imm("vmvn.i32 d13", d13, 0x7000000); 4912 TESTINSN_imm("vmvn.i32 d11", d11, 0x7FF); 4913 TESTINSN_imm("vmvn.i32 d14", d14, 0x7FFFF); 4914 TESTINSN_imm("vmvn.i64 d15", d15, 0xFF0000FF00FFFF00); 4915 4916 printf("----- VORR (immediate) -----\n"); 4917 TESTINSN_imm("vorr.i32 d0", d0, 0x7); 4918 TESTINSN_imm("vorr.i16 d2", d2, 0x7); 4919 TESTINSN_imm("vorr.i32 d8", d8, 0x700); 4920 TESTINSN_imm("vorr.i16 d6", d6, 0x700); 4921 TESTINSN_imm("vorr.i32 d14", d14, 0x70000); 4922 TESTINSN_imm("vorr.i32 d15", d15, 0x7000000); 4923 4924 printf("----- VBIC (immediate) -----\n"); 4925 TESTINSN_imm("vbic.i32 d0", d0, 0x7); 4926 TESTINSN_imm("vbic.i16 d3", d3, 0x7); 4927 TESTINSN_imm("vbic.i32 d5", d5, 0x700); 4928 TESTINSN_imm("vbic.i16 d8", d8, 0x700); 4929 TESTINSN_imm("vbic.i32 d10", d10, 0x70000); 4930 TESTINSN_imm("vbic.i32 d15", d15, 0x7000000); 4931 4932 printf("---- VMVN (register) ----\n"); 4933 TESTINSN_un("vmvn d0, d1", d0, d1, i32, 24); 4934 TESTINSN_un("vmvn d10, d15", d10, d15, i32, 24); 4935 TESTINSN_un("vmvn d0, d14", d0, d14, i32, 24); 4936 4937 printf("---- VMOV (register) ----\n"); 4938 TESTINSN_un("vmov d0, d1", d0, d1, i32, 24); 4939 TESTINSN_un("vmov d10, d15", d10, d15, i32, 24); 4940 TESTINSN_un("vmov d0, d14", d0, d14, i32, 24); 4941 4942 printf("---- VDUP (ARM core register) (tested indirectly) ----\n"); 4943 TESTINSN_un("vmov d0, d1", d0, d1, i8, 7); 4944 TESTINSN_un("vmov d10, d11", d10, d11, i16, 7); 4945 TESTINSN_un("vmov d0, d15", d0, d15, i32, 7); 4946 4947 printf("---- VADD ----\n"); 4948 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 4949 TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 4950 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 4951 TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 4952 TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 4953 TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4954 TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4955 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4956 TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4957 TESTINSN_bin("vadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 4958 TESTINSN_bin("vadd.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120); 4959 4960 printf("---- VSUB ----\n"); 4961 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 4962 TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 4963 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 4964 TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 4965 TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 4966 TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4967 TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4968 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4969 TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4970 TESTINSN_bin("vsub.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 4971 TESTINSN_bin("vsub.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120); 4972 4973 printf("---- VAND ----\n"); 4974 TESTINSN_bin("vand d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 4975 TESTINSN_bin("vand d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 4976 TESTINSN_bin("vand d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 4977 TESTINSN_bin("vand d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 4978 4979 printf("---- VBIC ----\n"); 4980 TESTINSN_bin("vbic d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 4981 TESTINSN_bin("vbic d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 4982 TESTINSN_bin("vbic d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 4983 TESTINSN_bin("vbic d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 4984 4985 printf("---- VORR ----\n"); 4986 TESTINSN_bin("vorr d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 4987 TESTINSN_bin("vorr d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 4988 TESTINSN_bin("vorr d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 4989 TESTINSN_bin("vorr d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 4990 4991 printf("---- VORN ----\n"); 4992 TESTINSN_bin("vorn d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 4993 TESTINSN_bin("vorn d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 4994 TESTINSN_bin("vorn d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 4995 TESTINSN_bin("vorn d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 4996 4997 printf("---- VEOR ----\n"); 4998 TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 4999 TESTINSN_bin("veor d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 5000 TESTINSN_bin("veor d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 5001 TESTINSN_bin("veor d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 5002 TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 5003 TESTINSN_bin("veor d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 5004 TESTINSN_bin("veor d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 5005 TESTINSN_bin("veor d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 5006 5007 printf("---- VBSL ----\n"); 5008 TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 5009 TESTINSN_bin("vbsl d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 5010 TESTINSN_bin("vbsl d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 5011 TESTINSN_bin("vbsl d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 5012 TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 5013 TESTINSN_bin("vbsl d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 5014 TESTINSN_bin("vbsl d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 5015 TESTINSN_bin("vbsl d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 5016 5017 printf("---- VBIT ----\n"); 5018 TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 5019 TESTINSN_bin("vbit d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 5020 TESTINSN_bin("vbit d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 5021 TESTINSN_bin("vbit d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 5022 TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 5023 TESTINSN_bin("vbit d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 5024 TESTINSN_bin("vbit d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 5025 TESTINSN_bin("vbit d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 5026 5027 printf("---- VBIF ----\n"); 5028 TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 5029 TESTINSN_bin("vbif d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 5030 TESTINSN_bin("vbif d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 5031 TESTINSN_bin("vbif d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 5032 TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 5033 TESTINSN_bin("vbif d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 5034 TESTINSN_bin("vbif d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 5035 TESTINSN_bin("vbif d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 5036 5037 printf("---- VEXT ----\n"); 5038 TESTINSN_bin("vext.8 d0, d1, d2, #0", d0, d1, i8, 0x77, d2, i8, 0xff); 5039 TESTINSN_bin("vext.8 d0, d1, d2, #1", d0, d1, i8, 0x77, d2, i8, 0xff); 5040 TESTINSN_bin("vext.8 d0, d1, d2, #7", d0, d1, i8, 0x77, d2, i8, 0xff); 5041 TESTINSN_bin("vext.8 d0, d1, d2, #6", d0, d1, i8, 0x77, d2, i8, 0xff); 5042 TESTINSN_bin("vext.8 d10, d11, d12, #4", d10, d11, i8, 0x77, d12, i8, 0xff); 5043 TESTINSN_bin("vext.8 d0, d5, d15, #5", d0, d5, i8, 0x77, d15, i8, 0xff); 5044 5045 printf("---- VHADD ----\n"); 5046 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5047 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5048 TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5049 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5050 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121); 5051 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5052 TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5053 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5054 TESTINSN_bin("vhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5055 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5056 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5057 TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5058 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5059 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121); 5060 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5061 TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5062 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5063 TESTINSN_bin("vhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5064 5065 printf("---- VHSUB ----\n"); 5066 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5067 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5068 TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5069 TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5070 TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5071 TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5072 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5073 TESTINSN_bin("vhsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5074 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5075 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5076 TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5077 TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5078 TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5079 TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5080 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5081 TESTINSN_bin("vhsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5082 5083 printf("---- VQADD ----\n"); 5084 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5085 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5086 TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5087 TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5088 TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5089 TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5090 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5091 TESTINSN_bin_q("vqadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5092 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5093 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5094 TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5095 TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5096 TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5097 TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5098 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5099 TESTINSN_bin_q("vqadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5100 5101 printf("---- VQSUB ----\n"); 5102 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5103 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5104 TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5105 TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5106 TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5107 TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5108 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5109 TESTINSN_bin_q("vqsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5110 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5111 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5112 TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5113 TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5114 TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5115 TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5116 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5117 TESTINSN_bin_q("vqsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5118 5119 printf("---- VRHADD ----\n"); 5120 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5121 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 5122 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5123 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5124 TESTINSN_bin("vrhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5125 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 5126 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5127 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5128 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 5129 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5130 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5131 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 5132 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5133 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5134 TESTINSN_bin("vrhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5135 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5136 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5137 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5138 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5139 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5140 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5141 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5142 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5143 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5144 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5145 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5146 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5147 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5148 TESTINSN_bin("vrhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5149 5150 printf("---- VCGT ----\n"); 5151 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5152 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 5153 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5154 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5155 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5156 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5157 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5158 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5159 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 5160 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 5161 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 5162 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2); 5163 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5164 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5165 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 5166 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5167 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5168 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2); 5169 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5170 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5171 TESTINSN_bin("vcgt.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5172 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5173 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5174 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5175 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5176 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5177 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5178 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5179 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5180 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5181 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5182 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5183 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5184 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5185 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5186 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5187 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5188 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5189 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5190 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5191 TESTINSN_bin("vcgt.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5192 5193 printf("---- VCGE ----\n"); 5194 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5195 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 5196 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5197 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5198 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5199 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5200 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5201 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5202 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 5203 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 5204 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 5205 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2); 5206 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5207 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5208 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 5209 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5210 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5211 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2); 5212 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5213 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5214 TESTINSN_bin("vcge.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5215 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5216 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5217 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5218 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5219 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5220 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5221 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5222 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5223 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5224 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5225 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5226 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5227 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 5228 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5229 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5230 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5231 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5232 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5233 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 5234 TESTINSN_bin("vcge.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5235 5236 printf("---- VSHL (register) ----\n"); 5237 TESTINSN_bin("vshl.s8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1); 5238 TESTINSN_bin("vshl.s8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8); 5239 TESTINSN_bin("vshl.s8 d10, d31, d7", d10, d31, i32, 24, d7, i32, 4); 5240 TESTINSN_bin("vshl.s16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2); 5241 TESTINSN_bin("vshl.s16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1); 5242 TESTINSN_bin("vshl.s16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11); 5243 TESTINSN_bin("vshl.s32 d9, d12, d19", d9, d12, i32, (1 << 31) + 2, d19, i32, 2); 5244 TESTINSN_bin("vshl.s32 d11, d22, d0", d11, d22, i32, -1, d0, i32, 12); 5245 TESTINSN_bin("vshl.s32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21); 5246 TESTINSN_bin("vshl.s64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20); 5247 TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4); 5248 TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30); 5249 TESTINSN_bin("vshl.s64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab); 5250 TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5); 5251 TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff); 5252 TESTINSN_bin("vshl.u8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1); 5253 TESTINSN_bin("vshl.u8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8); 5254 TESTINSN_bin("vshl.u8 d10, d11, d7", d10, d11, i32, 24, d7, i32, 4); 5255 TESTINSN_bin("vshl.u16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2); 5256 TESTINSN_bin("vshl.u16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1); 5257 TESTINSN_bin("vshl.u16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11); 5258 TESTINSN_bin("vshl.u32 d9, d12, d15", d9, d12, i32, (1 << 31) + 2, d15, i32, 2); 5259 TESTINSN_bin("vshl.u32 d11, d2, d0", d11, d2, i32, -1, d0, i32, 12); 5260 TESTINSN_bin("vshl.u32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21); 5261 TESTINSN_bin("vshl.u64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20); 5262 TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4); 5263 TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30); 5264 TESTINSN_bin("vshl.u64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab); 5265 TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5); 5266 TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff); 5267 5268 printf("---- VQSHL (register) ----\n"); 5269 TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 5270 TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 5271 TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 5272 TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 5273 TESTINSN_bin_q("vqshl.s64 d13, d14, d31", d13, d14, i32, -17, d31, i32, -26); 5274 TESTINSN_bin_q("vqshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 5275 TESTINSN_bin_q("vqshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 5276 TESTINSN_bin_q("vqshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 5277 TESTINSN_bin_q("vqshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 5278 TESTINSN_bin_q("vqshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 5279 TESTINSN_bin_q("vqshl.s32 d9, d30, d11", d9, d30, i32, (1 << 31) + 8, d11, i32, -1); 5280 TESTINSN_bin_q("vqshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 5281 TESTINSN_bin_q("vqshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 5282 TESTINSN_bin_q("vqshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 5283 TESTINSN_bin_q("vqshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 5284 TESTINSN_bin_q("vqshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 5285 TESTINSN_bin_q("vqshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 5286 TESTINSN_bin_q("vqshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 5287 TESTINSN_bin_q("vqshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 5288 TESTINSN_bin_q("vqshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 5289 TESTINSN_bin_q("vqshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 5290 TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 5291 TESTINSN_bin_q("vqshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 5292 TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5293 TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 5294 TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 5295 TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 5296 TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 5297 TESTINSN_bin_q("vqshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 5298 TESTINSN_bin_q("vqshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 5299 TESTINSN_bin_q("vqshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 5300 TESTINSN_bin_q("vqshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 5301 TESTINSN_bin_q("vqshl.u32 d12, d31, d13", d12, d31, i32, -120, d13, i32, -9); 5302 TESTINSN_bin_q("vqshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 5303 TESTINSN_bin_q("vqshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 5304 TESTINSN_bin_q("vqshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 5305 TESTINSN_bin_q("vqshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 5306 TESTINSN_bin_q("vqshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 5307 TESTINSN_bin_q("vqshl.u16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 5308 TESTINSN_bin_q("vqshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 5309 TESTINSN_bin_q("vqshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 5310 TESTINSN_bin_q("vqshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 5311 TESTINSN_bin_q("vqshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 5312 TESTINSN_bin_q("vqshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 5313 TESTINSN_bin_q("vqshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 5314 TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 5315 TESTINSN_bin_q("vqshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 5316 TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5317 5318 printf("---- VQSHL / VQSHLU (immediate) ----\n"); 5319 TESTINSN_un_q("vqshl.s64 d0, d1, #1", d0, d1, i32, 1); 5320 TESTINSN_un_q("vqshl.s64 d31, d30, #1", d31, d30, i32, -127); 5321 TESTINSN_un_q("vqshl.s64 d5, d4, #0", d5, d4, i32, -127); 5322 TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, 16); 5323 TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, 16); 5324 TESTINSN_un_q("vqshl.s64 d5, d4, #59", d5, d4, i32, 16); 5325 TESTINSN_un_q("vqshl.s64 d5, d4, #58", d5, d4, i32, 16); 5326 TESTINSN_un_q("vqshl.s64 d5, d4, #17", d5, d4, i32, 16); 5327 TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, -1); 5328 TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, -1); 5329 TESTINSN_un_q("vqshl.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5330 TESTINSN_un_q("vqshl.s32 d10, d11, #1", d10, d11, i32, 1); 5331 TESTINSN_un_q("vqshl.s32 d31, d30, #1", d31, d30, i32, -127); 5332 TESTINSN_un_q("vqshl.s32 d5, d4, #0", d5, d4, i32, -127); 5333 TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, 16); 5334 TESTINSN_un_q("vqshl.s32 d5, d4, #28", d5, d4, i32, 16); 5335 TESTINSN_un_q("vqshl.s32 d5, d4, #27", d5, d4, i32, 16); 5336 TESTINSN_un_q("vqshl.s32 d5, d4, #26", d5, d4, i32, 16); 5337 TESTINSN_un_q("vqshl.s32 d5, d4, #17", d5, d4, i32, 16); 5338 TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, -1); 5339 TESTINSN_un_q("vqshl.s32 d5, d4, #29", d5, d4, i32, -1); 5340 TESTINSN_un_q("vqshl.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5341 TESTINSN_un_q("vqshl.s16 d9, d8, #1", d9, d8, i32, 1); 5342 TESTINSN_un_q("vqshl.s16 d31, d30, #1", d31, d30, i32, -127); 5343 TESTINSN_un_q("vqshl.s16 d5, d4, #0", d5, d4, i32, -127); 5344 TESTINSN_un_q("vqshl.s16 d9, d8, #15", d9, d8, i32, 16); 5345 TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, 16); 5346 TESTINSN_un_q("vqshl.s16 d5, d4, #11", d5, d4, i32, 16); 5347 TESTINSN_un_q("vqshl.s16 d5, d4, #10", d5, d4, i32, 16); 5348 TESTINSN_un_q("vqshl.s16 d5, d4, #4", d5, d4, i32, 16); 5349 TESTINSN_un_q("vqshl.s16 d5, d4, #15", d5, d4, i32, -1); 5350 TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, -1); 5351 TESTINSN_un_q("vqshl.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5352 TESTINSN_un_q("vqshl.s8 d0, d1, #1", d0, d1, i32, 1); 5353 TESTINSN_un_q("vqshl.s8 d31, d30, #1", d31, d30, i32, -127); 5354 TESTINSN_un_q("vqshl.s8 d5, d4, #0", d5, d4, i32, -127); 5355 TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, 16); 5356 TESTINSN_un_q("vqshl.s8 d25, d4, #4", d25, d4, i32, 16); 5357 TESTINSN_un_q("vqshl.s8 d5, d4, #3", d5, d4, i32, 16); 5358 TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, 16); 5359 TESTINSN_un_q("vqshl.s8 d5, d4, #1", d5, d4, i32, 16); 5360 TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, -1); 5361 TESTINSN_un_q("vqshl.s8 d5, d4, #5", d5, d4, i32, -1); 5362 TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 5363 TESTINSN_un_q("vqshl.u64 d0, d1, #1", d0, d1, i32, 1); 5364 TESTINSN_un_q("vqshl.u64 d31, d30, #1", d31, d30, i32, -127); 5365 TESTINSN_un_q("vqshl.u64 d5, d4, #0", d5, d4, i32, -127); 5366 TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, 16); 5367 TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, 16); 5368 TESTINSN_un_q("vqshl.u64 d5, d4, #59", d5, d4, i32, 16); 5369 TESTINSN_un_q("vqshl.u64 d5, d4, #58", d5, d4, i32, 16); 5370 TESTINSN_un_q("vqshl.u64 d5, d4, #17", d5, d4, i32, 16); 5371 TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, -1); 5372 TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, -1); 5373 TESTINSN_un_q("vqshl.u64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5374 TESTINSN_un_q("vqshl.u32 d10, d11, #1", d10, d11, i32, 1); 5375 TESTINSN_un_q("vqshl.u32 d31, d30, #1", d31, d30, i32, -127); 5376 TESTINSN_un_q("vqshl.u32 d5, d4, #0", d5, d4, i32, -127); 5377 TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, 16); 5378 TESTINSN_un_q("vqshl.u32 d5, d4, #28", d5, d4, i32, 16); 5379 TESTINSN_un_q("vqshl.u32 d5, d4, #27", d5, d4, i32, 16); 5380 TESTINSN_un_q("vqshl.u32 d5, d4, #26", d5, d4, i32, 16); 5381 TESTINSN_un_q("vqshl.u32 d5, d4, #17", d5, d4, i32, 16); 5382 TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, -1); 5383 TESTINSN_un_q("vqshl.u32 d5, d4, #29", d5, d4, i32, -1); 5384 TESTINSN_un_q("vqshl.u32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5385 TESTINSN_un_q("vqshl.u16 d9, d8, #1", d9, d8, i32, 1); 5386 TESTINSN_un_q("vqshl.u16 d31, d30, #1", d31, d30, i32, -127); 5387 TESTINSN_un_q("vqshl.u16 d5, d4, #0", d5, d4, i32, -127); 5388 TESTINSN_un_q("vqshl.u16 d9, d8, #15", d9, d8, i32, 16); 5389 TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, 16); 5390 TESTINSN_un_q("vqshl.u16 d5, d4, #11", d5, d4, i32, 16); 5391 TESTINSN_un_q("vqshl.u16 d5, d4, #10", d5, d4, i32, 16); 5392 TESTINSN_un_q("vqshl.u16 d5, d4, #4", d5, d4, i32, 16); 5393 TESTINSN_un_q("vqshl.u16 d5, d4, #15", d5, d4, i32, -1); 5394 TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, -1); 5395 TESTINSN_un_q("vqshl.u16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5396 TESTINSN_un_q("vqshl.u8 d0, d1, #1", d0, d1, i32, 1); 5397 TESTINSN_un_q("vqshl.u8 d31, d30, #1", d31, d30, i32, -127); 5398 TESTINSN_un_q("vqshl.u8 d5, d4, #0", d5, d4, i32, -127); 5399 TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, 16); 5400 TESTINSN_un_q("vqshl.u8 d5, d4, #4", d5, d4, i32, 16); 5401 TESTINSN_un_q("vqshl.u8 d5, d4, #3", d5, d4, i32, 16); 5402 TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, 16); 5403 TESTINSN_un_q("vqshl.u8 d5, d4, #1", d5, d4, i32, 16); 5404 TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, -1); 5405 TESTINSN_un_q("vqshl.u8 d5, d4, #5", d5, d4, i32, -1); 5406 TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 5407 TESTINSN_un_q("vqshlu.s64 d0, d1, #1", d0, d1, i32, 1); 5408 TESTINSN_un_q("vqshlu.s64 d31, d30, #1", d31, d30, i32, -127); 5409 TESTINSN_un_q("vqshlu.s64 d5, d4, #0", d5, d4, i32, -127); 5410 TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, 16); 5411 TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, 16); 5412 TESTINSN_un_q("vqshlu.s64 d5, d4, #59", d5, d4, i32, 16); 5413 TESTINSN_un_q("vqshlu.s64 d5, d4, #58", d5, d4, i32, 16); 5414 TESTINSN_un_q("vqshlu.s64 d5, d4, #17", d5, d4, i32, 16); 5415 TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, -1); 5416 TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, -1); 5417 TESTINSN_un_q("vqshlu.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5418 TESTINSN_un_q("vqshlu.s32 d10, d11, #1", d10, d11, i32, 1); 5419 TESTINSN_un_q("vqshlu.s32 d31, d30, #1", d31, d30, i32, -127); 5420 TESTINSN_un_q("vqshlu.s32 d5, d4, #0", d5, d4, i32, -127); 5421 TESTINSN_un_q("vqshlu.s32 d5, d4, #31", d5, d4, i32, 16); 5422 TESTINSN_un_q("vqshlu.s32 d25, d24, #28", d25, d24, i32, 16); 5423 TESTINSN_un_q("vqshlu.s32 d5, d4, #27", d5, d4, i32, 16); 5424 TESTINSN_un_q("vqshlu.s32 d5, d4, #26", d5, d4, i32, 16); 5425 TESTINSN_un_q("vqshlu.s32 d5, d4, #17", d5, d4, i32, 16); 5426 TESTINSN_un_q("vqshlu.s32 d5, d24, #31", d5, d24, i32, -1); 5427 TESTINSN_un_q("vqshlu.s32 d5, d4, #29", d5, d4, i32, -1); 5428 TESTINSN_un_q("vqshlu.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5429 TESTINSN_un_q("vqshlu.s16 d9, d8, #1", d9, d8, i32, 1); 5430 TESTINSN_un_q("vqshlu.s16 d31, d30, #1", d31, d30, i32, -127); 5431 TESTINSN_un_q("vqshlu.s16 d5, d4, #0", d5, d4, i32, -127); 5432 TESTINSN_un_q("vqshlu.s16 d9, d8, #15", d9, d8, i32, 16); 5433 TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, 16); 5434 TESTINSN_un_q("vqshlu.s16 d5, d4, #11", d5, d4, i32, 16); 5435 TESTINSN_un_q("vqshlu.s16 d5, d4, #10", d5, d4, i32, 16); 5436 TESTINSN_un_q("vqshlu.s16 d5, d4, #4", d5, d4, i32, 16); 5437 TESTINSN_un_q("vqshlu.s16 d15, d14, #15", d15, d14, i32, -1); 5438 TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, -1); 5439 TESTINSN_un_q("vqshlu.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 5440 TESTINSN_un_q("vqshlu.s8 d0, d1, #1", d0, d1, i32, 1); 5441 TESTINSN_un_q("vqshlu.s8 d31, d30, #1", d31, d30, i32, -127); 5442 TESTINSN_un_q("vqshlu.s8 d5, d4, #0", d5, d4, i32, -127); 5443 TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, 16); 5444 TESTINSN_un_q("vqshlu.s8 d5, d4, #4", d5, d4, i32, 16); 5445 TESTINSN_un_q("vqshlu.s8 d5, d4, #3", d5, d4, i32, 16); 5446 TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, 16); 5447 TESTINSN_un_q("vqshlu.s8 d5, d4, #1", d5, d4, i32, 16); 5448 TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, -1); 5449 TESTINSN_un_q("vqshlu.s8 d5, d4, #5", d5, d4, i32, -1); 5450 TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 5451 5452 printf("---- VQRSHL (register) ----\n"); 5453 TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 5454 TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 5455 TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 5456 TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 5457 TESTINSN_bin_q("vqrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 5458 TESTINSN_bin_q("vqrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 5459 TESTINSN_bin_q("vqrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 5460 TESTINSN_bin_q("vqrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 5461 TESTINSN_bin_q("vqrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 5462 TESTINSN_bin_q("vqrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 5463 TESTINSN_bin_q("vqrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 5464 TESTINSN_bin_q("vqrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 5465 TESTINSN_bin_q("vqrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 5466 TESTINSN_bin_q("vqrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 5467 TESTINSN_bin_q("vqrshl.s16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 5468 TESTINSN_bin_q("vqrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 5469 TESTINSN_bin_q("vqrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 5470 TESTINSN_bin_q("vqrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 5471 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5472 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5473 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5474 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 5475 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 5476 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 5477 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5478 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5479 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5480 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 5481 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 5482 TESTINSN_bin_q("vqrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, 0); 5483 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 5484 TESTINSN_bin_q("vqrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 5485 TESTINSN_bin_q("vqrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 5486 TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 5487 TESTINSN_bin_q("vqrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 5488 TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5489 TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 5490 TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 5491 TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 5492 TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 5493 TESTINSN_bin_q("vqrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 5494 TESTINSN_bin_q("vqrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 5495 TESTINSN_bin_q("vqrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 5496 TESTINSN_bin_q("vqrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 5497 TESTINSN_bin_q("vqrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 5498 TESTINSN_bin_q("vqrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 5499 TESTINSN_bin_q("vqrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 5500 TESTINSN_bin_q("vqrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 5501 TESTINSN_bin_q("vqrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 5502 TESTINSN_bin_q("vqrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 5503 TESTINSN_bin_q("vqrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 5504 TESTINSN_bin_q("vqrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 5505 TESTINSN_bin_q("vqrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 5506 TESTINSN_bin_q("vqrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 5507 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 5508 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 5509 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5510 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5511 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5512 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5513 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5514 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5515 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 5516 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 5517 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 5518 TESTINSN_bin_q("vqrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 5519 TESTINSN_bin_q("vqrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 5520 TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 5521 TESTINSN_bin_q("vqrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 5522 TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5523 5524 printf("---- VRSHL (register) ----\n"); 5525 TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 5526 TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 5527 TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 5528 TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 5529 TESTINSN_bin("vrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 5530 TESTINSN_bin("vrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 5531 TESTINSN_bin("vrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 5532 TESTINSN_bin("vrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 5533 TESTINSN_bin("vrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 5534 TESTINSN_bin("vrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 5535 TESTINSN_bin("vrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 5536 TESTINSN_bin("vrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 5537 TESTINSN_bin("vrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 5538 TESTINSN_bin("vrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 5539 TESTINSN_bin("vrshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 5540 TESTINSN_bin("vrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 5541 TESTINSN_bin("vrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 5542 TESTINSN_bin("vrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 5543 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5544 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5545 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5546 TESTINSN_bin("vrshl.s8 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 5547 TESTINSN_bin("vrshl.s16 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 5548 TESTINSN_bin("vrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 5549 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5550 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5551 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 5552 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 5553 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 5554 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 5555 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 5556 TESTINSN_bin("vrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 5557 TESTINSN_bin("vrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 5558 TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 5559 TESTINSN_bin("vrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 5560 TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5561 TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 5562 TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 5563 TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 5564 TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 5565 TESTINSN_bin("vrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 5566 TESTINSN_bin("vrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 5567 TESTINSN_bin("vrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 5568 TESTINSN_bin("vrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 5569 TESTINSN_bin("vrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 5570 TESTINSN_bin("vrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 5571 TESTINSN_bin("vrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 5572 TESTINSN_bin("vrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 5573 TESTINSN_bin("vrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 5574 TESTINSN_bin("vrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 5575 TESTINSN_bin("vrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 5576 TESTINSN_bin("vrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 5577 TESTINSN_bin("vrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 5578 TESTINSN_bin("vrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 5579 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 5580 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 5581 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5582 TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5583 TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 5584 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 5585 TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 5586 TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 5587 TESTINSN_bin("vrshl.u8 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 5588 TESTINSN_bin("vrshl.u16 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 5589 TESTINSN_bin("vrshl.u32 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 5590 TESTINSN_bin("vrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 5591 TESTINSN_bin("vrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 5592 TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 5593 TESTINSN_bin("vrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 5594 TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5595 5596 printf("---- VMAX (integer) ----\n"); 5597 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 5598 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 5599 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5600 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5601 TESTINSN_bin("vmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5602 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 5603 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5604 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5605 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 5606 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5607 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5608 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 5609 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5610 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5611 TESTINSN_bin("vmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5612 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5613 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 5614 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5615 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5616 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5617 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5618 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5619 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5620 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5621 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5622 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5623 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5624 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5625 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5626 TESTINSN_bin("vmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5627 5628 printf("---- VMIN (integer) ----\n"); 5629 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 5630 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 5631 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5632 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5633 TESTINSN_bin("vmin.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5634 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 5635 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5636 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5637 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 5638 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5639 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5640 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 5641 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5642 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5643 TESTINSN_bin("vmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5644 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5645 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 5646 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5647 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 5648 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 5649 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5650 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5651 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5652 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5653 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5654 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5655 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5656 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5657 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5658 TESTINSN_bin("vmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5659 5660 printf("---- VABD ----\n"); 5661 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5662 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 5663 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120); 5664 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5665 TESTINSN_bin("vabd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5666 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 5667 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 5668 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 5669 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5670 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5671 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 5672 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5673 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5674 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 5675 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5676 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5677 TESTINSN_bin("vabd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5678 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5679 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5680 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, -140, d2, i32, 120); 5681 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5682 TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 5683 TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 5684 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5685 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5686 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5687 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5688 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5689 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5690 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5691 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5692 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5693 TESTINSN_bin("vabd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5694 5695 printf("---- VABA ----\n"); 5696 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5697 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 5698 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5699 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5700 TESTINSN_bin("vaba.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5701 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 5702 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 5703 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 5704 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5705 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5706 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 5707 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5708 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5709 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 5710 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5711 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5712 TESTINSN_bin("vaba.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5713 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 5714 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5715 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5716 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5717 TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 5718 TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 5719 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5720 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5721 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5722 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5723 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5724 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 5725 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5726 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5727 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 5728 TESTINSN_bin("vaba.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5729 5730 printf("---- VTST ----\n"); 5731 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5732 TESTINSN_bin("vtst.32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120); 5733 TESTINSN_bin("vtst.16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120); 5734 TESTINSN_bin("vtst.8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120); 5735 TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5736 TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 5737 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5738 TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2); 5739 TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 5740 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2); 5741 TESTINSN_bin("vtst.32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5742 5743 printf("---- VCEQ ----\n"); 5744 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5745 TESTINSN_bin("vceq.i32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120); 5746 TESTINSN_bin("vceq.i16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120); 5747 TESTINSN_bin("vceq.i8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120); 5748 TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5749 TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 5750 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 5751 TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2); 5752 TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 14) + 1); 5753 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2); 5754 TESTINSN_bin("vceq.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 5755 5756 printf("---- VMLA ----\n"); 5757 TESTINSN_bin("vmla.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120); 5758 TESTINSN_bin("vmla.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, 120); 5759 TESTINSN_bin("vmla.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 5760 TESTINSN_bin("vmla.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120); 5761 TESTINSN_bin("vmla.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 5762 TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5763 TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5764 TESTINSN_bin("vmla.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 5765 TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5766 TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5767 TESTINSN_bin("vmla.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, -120); 5768 5769 printf("---- VMLS ----\n"); 5770 TESTINSN_bin("vmls.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120); 5771 TESTINSN_bin("vmls.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 5772 TESTINSN_bin("vmls.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 5773 TESTINSN_bin("vmls.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5774 TESTINSN_bin("vmls.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 5775 TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5776 TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5777 TESTINSN_bin("vmls.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 5778 TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5779 TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5780 TESTINSN_bin("vmls.i32 d10, d11, d15", d10, d11, i32, -24, d15, i32, 120); 5781 5782 printf("---- VMUL ----\n"); 5783 TESTINSN_bin("vmul.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 5784 TESTINSN_bin("vmul.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 5785 TESTINSN_bin("vmul.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 5786 TESTINSN_bin("vmul.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 5787 TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 5788 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5789 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5790 TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 25) + 0xfeb2, d12, i32, (1 << 13) + 0xdf); 5791 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 5792 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 5793 TESTINSN_bin("vmul.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 5794 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5795 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5796 TESTINSN_bin("vmul.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 5797 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3); 5798 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f); 5799 5800 printf("---- VMUL (by scalar) ----\n"); 5801 TESTINSN_bin("vmul.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120); 5802 TESTINSN_bin("vmul.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 5803 TESTINSN_bin("vmul.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 5804 TESTINSN_bin("vmul.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5805 TESTINSN_bin("vmul.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 5806 TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 5807 TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 5808 TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5809 TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 5810 5811 printf("---- VMLA (by scalar) ----\n"); 5812 TESTINSN_bin("vmla.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120); 5813 TESTINSN_bin("vmla.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 5814 TESTINSN_bin("vmla.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 5815 TESTINSN_bin("vmla.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5816 TESTINSN_bin("vmla.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 5817 TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 5818 TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 5819 TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5820 TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 5821 5822 printf("---- VMLS (by scalar) ----\n"); 5823 TESTINSN_bin("vmls.i32 d0, d1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 5824 TESTINSN_bin("vmls.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 5825 TESTINSN_bin("vmls.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 5826 TESTINSN_bin("vmls.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5827 TESTINSN_bin("vmls.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 5828 TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 5829 TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 5830 TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5831 TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 5832 5833 printf("---- VRSHR ----\n"); 5834 TESTINSN_un("vrshr.s8 d0, d1, #0", d0, d1, i32, -1); 5835 TESTINSN_un("vrshr.s8 d0, d1, #1", d0, d1, i32, -1); 5836 TESTINSN_un("vrshr.s16 d3, d4, #2", d3, d4, i32, -0x7c); 5837 TESTINSN_un("vrshr.s32 d2, d5, #31", d2, d5, i32, -1); 5838 TESTINSN_un("vrshr.s8 d6, d7, #7", d6, d7, i32, 0xffff); 5839 TESTINSN_un("vrshr.s16 d8, d9, #12", d8, d9, i32, -10); 5840 TESTINSN_un("vrshr.s32 d10, d11, #5", d10, d11, i32, 10234); 5841 TESTINSN_un("vrshr.u8 d12, d13, #1", d12, d13, i32, -1); 5842 TESTINSN_un("vrshr.u16 d14, d15, #11", d14, d15, i32, -1); 5843 TESTINSN_un("vrshr.u32 d10, d11, #9", d10, d11, i32, 1000); 5844 TESTINSN_un("vrshr.u8 d7, d13, #7", d7, d13, i32, -1); 5845 TESTINSN_un("vrshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 5846 TESTINSN_un("vrshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 5847 TESTINSN_un("vrshr.u64 d0, d1, #42", d0, d1, i32, -1); 5848 TESTINSN_un("vrshr.s64 d6, d7, #12", d6, d7, i32, 0xfac); 5849 TESTINSN_un("vrshr.u64 d8, d4, #9", d8, d4, i32, 13560); 5850 TESTINSN_un("vrshr.s64 d9, d12, #11", d9, d12, i32, 98710); 5851 5852 printf("---- VRSRA ----\n"); 5853 TESTINSN_un("vrsra.s8 d0, d1, #1", d0, d1, i32, -1); 5854 TESTINSN_un("vrsra.s16 d3, d4, #2", d3, d4, i32, -0x7c); 5855 TESTINSN_un("vrsra.s32 d2, d5, #31", d2, d5, i32, -1); 5856 TESTINSN_un("vrsra.s8 d6, d7, #7", d6, d7, i32, 0xffff); 5857 TESTINSN_un("vrsra.s16 d8, d9, #12", d8, d9, i32, -10); 5858 TESTINSN_un("vrsra.s32 d10, d11, #5", d10, d11, i32, 10234); 5859 TESTINSN_un("vrsra.u8 d12, d13, #1", d12, d13, i32, -1); 5860 TESTINSN_un("vrsra.u16 d14, d15, #11", d14, d15, i32, -1); 5861 TESTINSN_un("vrsra.u32 d10, d11, #9", d10, d11, i32, 1000); 5862 TESTINSN_un("vrsra.u8 d7, d13, #7", d7, d13, i32, -1); 5863 TESTINSN_un("vrsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 5864 TESTINSN_un("vrsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 5865 TESTINSN_un("vrsra.u64 d0, d1, #42", d0, d1, i32, -1); 5866 TESTINSN_un("vrsra.s64 d6, d7, #12", d6, d7, i32, 0xfac); 5867 TESTINSN_un("vrsra.u64 d8, d4, #9", d8, d4, i32, 13560); 5868 TESTINSN_un("vrsra.s64 d9, d12, #11", d9, d12, i32, 98710); 5869 5870 printf("---- VSHR ----\n"); 5871 TESTINSN_un("vshr.s8 d0, d1, #0", d0, d1, i32, -1); 5872 TESTINSN_un("vshr.s8 d0, d1, #1", d0, d1, i32, -1); 5873 TESTINSN_un("vshr.s16 d3, d4, #2", d3, d4, i32, -0x7c); 5874 TESTINSN_un("vshr.s32 d2, d5, #31", d2, d5, i32, -1); 5875 TESTINSN_un("vshr.s8 d6, d7, #7", d6, d7, i32, 0xffff); 5876 TESTINSN_un("vshr.s16 d8, d9, #12", d8, d9, i32, -10); 5877 TESTINSN_un("vshr.s32 d10, d11, #5", d10, d11, i32, 10234); 5878 TESTINSN_un("vshr.u8 d12, d13, #1", d12, d13, i32, -1); 5879 TESTINSN_un("vshr.u16 d14, d15, #11", d14, d15, i32, -1); 5880 TESTINSN_un("vshr.u32 d10, d11, #9", d10, d11, i32, 1000); 5881 TESTINSN_un("vshr.u8 d7, d13, #7", d7, d13, i32, -1); 5882 TESTINSN_un("vshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 5883 TESTINSN_un("vshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 5884 TESTINSN_un("vshr.u64 d0, d1, #42", d0, d1, i32, -1); 5885 TESTINSN_un("vshr.s64 d6, d7, #12", d6, d7, i32, 0xfac); 5886 TESTINSN_un("vshr.u64 d8, d4, #9", d8, d4, i32, 13560); 5887 TESTINSN_un("vshr.s64 d9, d12, #11", d9, d12, i32, 98710); 5888 5889 printf("---- VSRA ----\n"); 5890 TESTINSN_un("vsra.s8 d0, d1, #1", d0, d1, i32, -1); 5891 TESTINSN_un("vsra.s16 d3, d4, #2", d3, d4, i32, -0x7c); 5892 TESTINSN_un("vsra.s32 d2, d5, #31", d2, d5, i32, -1); 5893 TESTINSN_un("vsra.s8 d6, d7, #7", d6, d7, i32, 0xffff); 5894 TESTINSN_un("vsra.s16 d8, d9, #12", d8, d9, i32, -10); 5895 TESTINSN_un("vsra.s32 d10, d11, #5", d10, d11, i32, 10234); 5896 TESTINSN_un("vsra.u8 d12, d13, #1", d12, d13, i32, -1); 5897 TESTINSN_un("vsra.u16 d14, d15, #11", d14, d15, i32, -1); 5898 TESTINSN_un("vsra.u32 d10, d11, #9", d10, d11, i32, 1000); 5899 TESTINSN_un("vsra.u8 d7, d13, #7", d7, d13, i32, -1); 5900 TESTINSN_un("vsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 5901 TESTINSN_un("vsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 5902 TESTINSN_un("vsra.u64 d0, d1, #42", d0, d1, i32, -1); 5903 TESTINSN_un("vsra.s64 d6, d7, #12", d6, d7, i32, 0xfac); 5904 TESTINSN_un("vsra.u64 d8, d4, #9", d8, d4, i32, 13560); 5905 TESTINSN_un("vsra.s64 d9, d12, #11", d9, d12, i32, 98710); 5906 5907 printf("---- VSRI ----\n"); 5908 TESTINSN_un("vsri.16 d0, d1, #1", d0, d1, i32, -1); 5909 TESTINSN_un("vsri.16 d3, d4, #2", d3, d4, i32, -0x7c); 5910 TESTINSN_un("vsri.32 d2, d5, #31", d2, d5, i32, -1); 5911 TESTINSN_un("vsri.8 d6, d7, #7", d6, d7, i32, 0xffff); 5912 TESTINSN_un("vsri.16 d8, d9, #12", d8, d9, i32, -10); 5913 TESTINSN_un("vsri.32 d10, d11, #5", d10, d11, i32, 10234); 5914 TESTINSN_un("vsri.8 d12, d13, #1", d12, d13, i32, -1); 5915 TESTINSN_un("vsri.16 d14, d15, #11", d14, d15, i32, -1); 5916 TESTINSN_un("vsri.32 d10, d11, #9", d10, d11, i32, 1000); 5917 TESTINSN_un("vsri.8 d7, d13, #7", d7, d13, i32, -1); 5918 TESTINSN_un("vsri.16 d8, d1, #5", d8, d1, i32, 0xabcf); 5919 TESTINSN_un("vsri.32 d12, d3, #15", d12, d3, i32, -0x1b0); 5920 TESTINSN_un("vsri.64 d0, d1, #42", d0, d1, i32, -1); 5921 TESTINSN_un("vsri.64 d6, d7, #12", d6, d7, i32, 0xfac); 5922 TESTINSN_un("vsri.64 d8, d4, #9", d8, d4, i32, 13560); 5923 TESTINSN_un("vsri.64 d9, d12, #11", d9, d12, i32, 98710); 5924 5925 printf("---- VMOV (ARM core register to scalar) ----\n"); 5926 TESTINSN_core_to_scalar("vmov.32 d0[0], r5", d0, r5, 13); 5927 TESTINSN_core_to_scalar("vmov.32 d1[1], r3", d1, r3, 12); 5928 TESTINSN_core_to_scalar("vmov.16 d0[0], r5", d0, r5, 13); 5929 TESTINSN_core_to_scalar("vmov.16 d2[2], r6", d2, r6, 14); 5930 TESTINSN_core_to_scalar("vmov.16 d3[3], r1", d3, r1, 17); 5931 TESTINSN_core_to_scalar("vmov.8 d0[0], r5", d0, r5, 13); 5932 TESTINSN_core_to_scalar("vmov.8 d0[1], r5", d0, r5, 13); 5933 TESTINSN_core_to_scalar("vmov.8 d0[2], r5", d0, r5, 13); 5934 TESTINSN_core_to_scalar("vmov.8 d0[3], r5", d0, r5, 13); 5935 TESTINSN_core_to_scalar("vmov.8 d0[4], r5", d0, r5, 13); 5936 TESTINSN_core_to_scalar("vmov.8 d0[5], r5", d0, r5, 13); 5937 TESTINSN_core_to_scalar("vmov.8 d0[6], r5", d0, r5, 13); 5938 TESTINSN_core_to_scalar("vmov.8 d31[7], r5", d31, r5, 13); 5939 5940 printf("---- VMOV (scalar toARM core register) ----\n"); 5941 TESTINSN_scalar_to_core("vmov.32 r5, d0[0]", r5, d0, i32, 0x11223344); 5942 TESTINSN_scalar_to_core("vmov.32 r6, d5[1]", r6, d5, i32, 0x11223344); 5943 TESTINSN_scalar_to_core("vmov.u16 r5, d31[0]", r5, d31, i32, 0x11223344); 5944 TESTINSN_scalar_to_core("vmov.u16 r5, d30[1]", r5, d30, i32, 0x11223344); 5945 TESTINSN_scalar_to_core("vmov.u16 r5, d31[2]", r5, d31, i32, 0x11223344); 5946 TESTINSN_scalar_to_core("vmov.u16 r5, d31[3]", r5, d31, i32, 0x11223344); 5947 TESTINSN_scalar_to_core("vmov.u8 r2, d4[0]", r2, d4, i32, 0x11223344); 5948 TESTINSN_scalar_to_core("vmov.u8 r2, d4[1]", r2, d4, i32, 0x11223344); 5949 TESTINSN_scalar_to_core("vmov.u8 r2, d4[2]", r2, d4, i32, 0x11223344); 5950 TESTINSN_scalar_to_core("vmov.u8 r2, d4[3]", r2, d4, i32, 0x11223344); 5951 TESTINSN_scalar_to_core("vmov.u8 r2, d4[4]", r2, d4, i32, 0x11223344); 5952 TESTINSN_scalar_to_core("vmov.u8 r2, d4[5]", r2, d4, i32, 0x11223344); 5953 TESTINSN_scalar_to_core("vmov.u8 r2, d4[6]", r2, d4, i32, 0x11223344); 5954 TESTINSN_scalar_to_core("vmov.u8 r2, d4[7]", r2, d4, i32, 0x11223344); 5955 TESTINSN_scalar_to_core("vmov.s16 r5, d31[0]", r5, d31, i8, 128); 5956 TESTINSN_scalar_to_core("vmov.s16 r5, d30[1]", r5, d30, i8, 128); 5957 TESTINSN_scalar_to_core("vmov.s16 r5, d31[2]", r5, d31, i8, 128); 5958 TESTINSN_scalar_to_core("vmov.s16 r5, d31[3]", r5, d31, i8, 128); 5959 TESTINSN_scalar_to_core("vmov.s8 r2, d4[0]", r2, d4, i8, 128); 5960 TESTINSN_scalar_to_core("vmov.s8 r2, d4[1]", r2, d4, i8, 128); 5961 TESTINSN_scalar_to_core("vmov.s8 r2, d4[2]", r2, d4, i8, 128); 5962 TESTINSN_scalar_to_core("vmov.s8 r2, d4[3]", r2, d4, i8, 128); 5963 TESTINSN_scalar_to_core("vmov.s8 r2, d4[4]", r2, d4, i8, 128); 5964 TESTINSN_scalar_to_core("vmov.s8 r2, d4[5]", r2, d4, i8, 130); 5965 TESTINSN_scalar_to_core("vmov.s8 r2, d4[6]", r2, d4, i8, 129); 5966 TESTINSN_scalar_to_core("vmov.s8 r2, d4[7]", r2, d4, i8, 131); 5967 5968 printf("---- VLD1 (multiple single elements) ----\n"); 5969 TESTINSN_VLDn("vld1.8 {d0}", d0, d0, d0, d0); 5970 TESTINSN_VLDn("vld1.16 {d0}", d0, d0, d0, d0); 5971 TESTINSN_VLDn("vld1.32 {d0}", d0, d0, d0, d0); 5972 TESTINSN_VLDn("vld1.64 {d0}", d0, d0, d0, d0); 5973 TESTINSN_VLDn("vld1.8 {d9}", d9, d9, d9, d9); 5974 TESTINSN_VLDn("vld1.16 {d17}", d17, d17, d17, d17); 5975 TESTINSN_VLDn("vld1.32 {d31}", d31, d31, d31, d31); 5976 TESTINSN_VLDn("vld1.64 {d14}", d14, d14, d14, d14); 5977 TESTINSN_VLDn("vld1.8 {d0-d1}", d0, d1, d0, d1); 5978 TESTINSN_VLDn("vld1.16 {d0-d1}", d0, d1, d0, d1); 5979 TESTINSN_VLDn("vld1.32 {d5-d6}", d5, d6, d5, d6); 5980 TESTINSN_VLDn("vld1.64 {d30-d31}", d30, d31, d30, d31); 5981 TESTINSN_VLDn("vld1.8 {d0-d2}", d0, d1, d2, d0); 5982 TESTINSN_VLDn("vld1.16 {d0-d2}", d0, d1, d2, d0); 5983 TESTINSN_VLDn("vld1.32 {d0-d2}", d0, d1, d2, d0); 5984 TESTINSN_VLDn("vld1.64 {d0-d2}", d0, d1, d2, d0); 5985 TESTINSN_VLDn("vld1.8 {d0-d3}", d0, d1, d2, d3); 5986 TESTINSN_VLDn("vld1.16 {d0-d3}", d0, d1, d2, d3); 5987 TESTINSN_VLDn("vld1.32 {d0-d3}", d0, d1, d2, d3); 5988 TESTINSN_VLDn("vld1.64 {d0-d3}", d0, d1, d2, d3); 5989 5990 printf("---- VLD1 (single element to one lane) ----\n"); 5991 TESTINSN_VLDn("vld1.32 {d0[0]}", d0, d0, d0, d0); 5992 TESTINSN_VLDn("vld1.32 {d0[1]}", d0, d0, d0, d0); 5993 TESTINSN_VLDn("vld1.16 {d1[0]}", d1, d1, d1, d1); 5994 TESTINSN_VLDn("vld1.16 {d1[1]}", d1, d1, d1, d1); 5995 TESTINSN_VLDn("vld1.16 {d1[2]}", d1, d1, d1, d1); 5996 TESTINSN_VLDn("vld1.16 {d1[3]}", d1, d1, d1, d1); 5997 TESTINSN_VLDn("vld1.8 {d0[7]}", d0, d0, d0, d0); 5998 TESTINSN_VLDn("vld1.8 {d1[6]}", d1, d1, d1, d1); 5999 TESTINSN_VLDn("vld1.8 {d0[5]}", d0, d0, d0, d0); 6000 TESTINSN_VLDn("vld1.8 {d0[4]}", d0, d0, d0, d0); 6001 TESTINSN_VLDn("vld1.8 {d20[3]}", d20, d20, d20, d20); 6002 TESTINSN_VLDn("vld1.8 {d0[2]}", d0, d0, d0, d0); 6003 TESTINSN_VLDn("vld1.8 {d17[1]}", d17, d17, d17, d17); 6004 TESTINSN_VLDn("vld1.8 {d30[0]}", d30, d30, d30, d30); 6005 6006 printf("---- VLD1 (single element to all lanes) ----\n"); 6007 TESTINSN_VLDn("vld1.8 {d0[]}", d0, d0, d0, d0); 6008 TESTINSN_VLDn("vld1.16 {d0[]}", d0, d0, d0, d0); 6009 TESTINSN_VLDn("vld1.32 {d0[]}", d0, d0, d0, d0); 6010 TESTINSN_VLDn("vld1.8 {d9[]}", d9, d9, d9, d9); 6011 TESTINSN_VLDn("vld1.16 {d17[]}", d17, d17, d17, d17); 6012 TESTINSN_VLDn("vld1.32 {d31[]}", d31, d31, d31, d31); 6013 TESTINSN_VLDn("vld1.8 {d0[],d1[]}", d0, d1, d0, d1); 6014 TESTINSN_VLDn("vld1.16 {d0[],d1[]}", d0, d1, d0, d1); 6015 TESTINSN_VLDn("vld1.32 {d5[],d6[]}", d5, d6, d5, d6); 6016 6017 printf("---- VLD2 (multiple 2-elements) ----\n"); 6018 TESTINSN_VLDn("vld2.8 {d30-d31}", d30, d31, d30, d31); 6019 TESTINSN_VLDn("vld2.16 {d0-d1}", d0, d1, d0, d1); 6020 TESTINSN_VLDn("vld2.32 {d0-d1}", d0, d1, d0, d1); 6021 TESTINSN_VLDn("vld2.8 {d10,d12}", d10, d12, d10, d12); 6022 TESTINSN_VLDn("vld2.16 {d20,d22}", d20, d22, d20, d22); 6023 TESTINSN_VLDn("vld2.32 {d0,d2}", d0, d2, d0, d2); 6024 TESTINSN_VLDn("vld2.8 {d0-d3}", d0, d1, d2, d3); 6025 TESTINSN_VLDn("vld2.16 {d20-d23}", d20, d21, d22, d23); 6026 TESTINSN_VLDn("vld2.32 {d0-d3}", d0, d1, d2, d3); 6027 6028 printf("---- VLD2 (single 2-element structure to one lane) ----\n"); 6029 TESTINSN_VLDn("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 6030 TESTINSN_VLDn("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 6031 TESTINSN_VLDn("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 6032 TESTINSN_VLDn("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 6033 TESTINSN_VLDn("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 6034 TESTINSN_VLDn("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 6035 TESTINSN_VLDn("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 6036 TESTINSN_VLDn("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 6037 TESTINSN_VLDn("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 6038 TESTINSN_VLDn("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 6039 TESTINSN_VLDn("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 6040 TESTINSN_VLDn("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 6041 TESTINSN_VLDn("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 6042 TESTINSN_VLDn("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 6043 TESTINSN_VLDn("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 6044 TESTINSN_VLDn("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 6045 TESTINSN_VLDn("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 6046 TESTINSN_VLDn("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 6047 TESTINSN_VLDn("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 6048 TESTINSN_VLDn("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 6049 6050 printf("---- VLD2 (2-elements to all lanes) ----\n"); 6051 TESTINSN_VLDn("vld2.8 {d0[],d1[]}", d0, d1, d0, d1); 6052 TESTINSN_VLDn("vld2.16 {d0[],d1[]}", d0, d1, d0, d1); 6053 TESTINSN_VLDn("vld2.32 {d0[],d1[]}", d0, d1, d0, d1); 6054 TESTINSN_VLDn("vld2.8 {d9[],d11[]}", d9, d11, d9, d11); 6055 TESTINSN_VLDn("vld2.16 {d17[],d18[]}", d17, d18, d17, d18); 6056 TESTINSN_VLDn("vld2.32 {d30[],d31[]}", d30, d31, d30, d31); 6057 TESTINSN_VLDn("vld2.8 {d0[],d2[]}", d0, d2, d0, d2); 6058 TESTINSN_VLDn("vld2.16 {d0[],d2[]}", d0, d2, d0, d2); 6059 TESTINSN_VLDn("vld2.32 {d5[],d7[]}", d5, d7, d5, d7); 6060 6061 printf("---- VLD3 (multiple 3-elements) ----\n"); 6062 TESTINSN_VLDn("vld3.8 {d20-d22}", d20, d21, d22, d20); 6063 TESTINSN_VLDn("vld3.16 {d0-d2}", d0, d1, d2, d0); 6064 TESTINSN_VLDn("vld3.32 {d0-d2}", d0, d1, d2, d0); 6065 TESTINSN_VLDn("vld3.8 {d0,d2,d4}", d0, d2, d4, d0); 6066 TESTINSN_VLDn("vld3.16 {d20,d22,d24}", d20, d22, d24, d20); 6067 TESTINSN_VLDn("vld3.32 {d0,d2,d4}", d0, d2, d4, d0); 6068 6069 printf("---- VLD3 (single 3-element structure to one lane) ----\n"); 6070 TESTINSN_VLDn("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 6071 TESTINSN_VLDn("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 6072 TESTINSN_VLDn("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 6073 TESTINSN_VLDn("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 6074 TESTINSN_VLDn("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 6075 TESTINSN_VLDn("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 6076 TESTINSN_VLDn("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 6077 TESTINSN_VLDn("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 6078 TESTINSN_VLDn("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 6079 TESTINSN_VLDn("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 6080 TESTINSN_VLDn("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 6081 TESTINSN_VLDn("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 6082 TESTINSN_VLDn("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 6083 TESTINSN_VLDn("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 6084 TESTINSN_VLDn("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 6085 TESTINSN_VLDn("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 6086 TESTINSN_VLDn("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 6087 TESTINSN_VLDn("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 6088 TESTINSN_VLDn("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 6089 TESTINSN_VLDn("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 6090 6091 printf("---- VLD3 (3-elements to all lanes) ----\n"); 6092 TESTINSN_VLDn("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1); 6093 TESTINSN_VLDn("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1); 6094 TESTINSN_VLDn("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1); 6095 TESTINSN_VLDn("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11); 6096 TESTINSN_VLDn("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18); 6097 TESTINSN_VLDn("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31); 6098 TESTINSN_VLDn("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2); 6099 TESTINSN_VLDn("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2); 6100 TESTINSN_VLDn("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7); 6101 6102 printf("---- VLD4 (multiple 3-elements) ----\n"); 6103 TESTINSN_VLDn("vld4.8 {d0-d3}", d0, d1, d2, d3); 6104 TESTINSN_VLDn("vld4.16 {d20-d23}", d20, d21, d22, d23); 6105 TESTINSN_VLDn("vld4.32 {d0-d3}", d0, d1, d2, d3); 6106 TESTINSN_VLDn("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 6107 TESTINSN_VLDn("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 6108 TESTINSN_VLDn("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 6109 6110 printf("---- VLD4 (single 4-element structure to one lane) ----\n"); 6111 TESTINSN_VLDn("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 6112 TESTINSN_VLDn("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 6113 TESTINSN_VLDn("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 6114 TESTINSN_VLDn("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 6115 TESTINSN_VLDn("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 6116 TESTINSN_VLDn("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 6117 TESTINSN_VLDn("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 6118 TESTINSN_VLDn("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 6119 TESTINSN_VLDn("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 6120 TESTINSN_VLDn("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 6121 TESTINSN_VLDn("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 6122 TESTINSN_VLDn("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 6123 TESTINSN_VLDn("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 6124 TESTINSN_VLDn("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 6125 TESTINSN_VLDn("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 6126 TESTINSN_VLDn("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 6127 TESTINSN_VLDn("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 6128 TESTINSN_VLDn("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 6129 TESTINSN_VLDn("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 6130 TESTINSN_VLDn("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 6131 6132 printf("---- VLD4 (4-elements to all lanes) ----\n"); 6133 TESTINSN_VLDn("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 6134 TESTINSN_VLDn("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 6135 TESTINSN_VLDn("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 6136 TESTINSN_VLDn("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15); 6137 TESTINSN_VLDn("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20); 6138 TESTINSN_VLDn("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31); 6139 TESTINSN_VLDn("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 6140 TESTINSN_VLDn("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 6141 TESTINSN_VLDn("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11); 6142 6143 printf("---- VST1 (multiple single elements) ----\n"); 6144 TESTINSN_VSTn("vst1.8 {d0}", d0, d0, d0, d0); 6145 TESTINSN_VSTn("vst1.16 {d0}", d0, d0, d0, d0); 6146 TESTINSN_VSTn("vst1.32 {d0}", d0, d0, d0, d0); 6147 TESTINSN_VSTn("vst1.64 {d0}", d0, d0, d0, d0); 6148 TESTINSN_VSTn("vst1.8 {d9}", d9, d9, d9, d9); 6149 TESTINSN_VSTn("vst1.16 {d17}", d17, d17, d17, d17); 6150 TESTINSN_VSTn("vst1.32 {d31}", d31, d31, d31, d31); 6151 TESTINSN_VSTn("vst1.64 {d14}", d14, d14, d14, d14); 6152 TESTINSN_VSTn("vst1.8 {d0-d1}", d0, d1, d0, d1); 6153 TESTINSN_VSTn("vst1.16 {d0-d1}", d0, d1, d0, d1); 6154 TESTINSN_VSTn("vst1.32 {d5-d6}", d5, d6, d5, d6); 6155 TESTINSN_VSTn("vst1.64 {d30-d31}", d30, d31, d30, d31); 6156 TESTINSN_VSTn("vst1.8 {d0-d2}", d0, d1, d2, d0); 6157 TESTINSN_VSTn("vst1.16 {d0-d2}", d0, d1, d2, d0); 6158 TESTINSN_VSTn("vst1.32 {d0-d2}", d0, d1, d2, d0); 6159 TESTINSN_VSTn("vst1.64 {d0-d2}", d0, d1, d2, d0); 6160 TESTINSN_VSTn("vst1.8 {d0-d3}", d0, d1, d2, d3); 6161 TESTINSN_VSTn("vst1.16 {d0-d3}", d0, d1, d2, d3); 6162 TESTINSN_VSTn("vst1.32 {d0-d3}", d0, d1, d2, d3); 6163 TESTINSN_VSTn("vst1.64 {d0-d3}", d0, d1, d2, d3); 6164 6165 printf("---- VST1 (single element from one lane) ----\n"); 6166 TESTINSN_VSTn("vst1.32 {d0[0]}", d0, d0, d0, d0); 6167 TESTINSN_VSTn("vst1.32 {d0[1]}", d0, d0, d0, d0); 6168 TESTINSN_VSTn("vst1.16 {d1[0]}", d1, d1, d1, d1); 6169 TESTINSN_VSTn("vst1.16 {d1[1]}", d1, d1, d1, d1); 6170 TESTINSN_VSTn("vst1.16 {d1[2]}", d1, d1, d1, d1); 6171 TESTINSN_VSTn("vst1.16 {d1[3]}", d1, d1, d1, d1); 6172 TESTINSN_VSTn("vst1.8 {d0[7]}", d0, d0, d0, d0); 6173 TESTINSN_VSTn("vst1.8 {d1[6]}", d1, d1, d1, d1); 6174 TESTINSN_VSTn("vst1.8 {d0[5]}", d0, d0, d0, d0); 6175 TESTINSN_VSTn("vst1.8 {d0[4]}", d0, d0, d0, d0); 6176 TESTINSN_VSTn("vst1.8 {d20[3]}", d20, d20, d20, d20); 6177 TESTINSN_VSTn("vst1.8 {d0[2]}", d0, d0, d0, d0); 6178 TESTINSN_VSTn("vst1.8 {d17[1]}", d17, d17, d17, d17); 6179 TESTINSN_VSTn("vst1.8 {d30[0]}", d30, d30, d30, d30); 6180 6181 printf("---- VST2 (multiple 2-elements) ----\n"); 6182 TESTINSN_VSTn("vst2.8 {d30-d31}", d30, d31, d30, d31); 6183 TESTINSN_VSTn("vst2.16 {d0-d1}", d0, d1, d0, d1); 6184 TESTINSN_VSTn("vst2.32 {d0-d1}", d0, d1, d0, d1); 6185 TESTINSN_VSTn("vst2.8 {d10,d12}", d10, d12, d10, d12); 6186 TESTINSN_VSTn("vst2.16 {d20,d22}", d20, d22, d20, d22); 6187 TESTINSN_VSTn("vst2.32 {d0,d2}", d0, d2, d0, d2); 6188 TESTINSN_VSTn("vst2.8 {d0-d3}", d0, d1, d2, d3); 6189 TESTINSN_VSTn("vst2.16 {d20-d23}", d20, d21, d22, d23); 6190 TESTINSN_VSTn("vst2.32 {d0-d3}", d0, d1, d2, d3); 6191 6192 printf("---- VST2 (single 2-element structure from one lane) ----\n"); 6193 TESTINSN_VSTn("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 6194 TESTINSN_VSTn("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 6195 TESTINSN_VSTn("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 6196 TESTINSN_VSTn("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 6197 TESTINSN_VSTn("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 6198 TESTINSN_VSTn("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 6199 TESTINSN_VSTn("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 6200 TESTINSN_VSTn("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 6201 TESTINSN_VSTn("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 6202 TESTINSN_VSTn("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 6203 TESTINSN_VSTn("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 6204 TESTINSN_VSTn("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 6205 TESTINSN_VSTn("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 6206 TESTINSN_VSTn("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 6207 TESTINSN_VSTn("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 6208 TESTINSN_VSTn("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 6209 TESTINSN_VSTn("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 6210 TESTINSN_VSTn("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 6211 TESTINSN_VSTn("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 6212 TESTINSN_VSTn("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 6213 6214 printf("---- VST3 (multiple 3-elements) ----\n"); 6215 TESTINSN_VSTn("vst3.8 {d20-d22}", d20, d21, d22, d20); 6216 TESTINSN_VSTn("vst3.16 {d0-d2}", d0, d1, d2, d0); 6217 TESTINSN_VSTn("vst3.32 {d0-d2}", d0, d1, d2, d0); 6218 TESTINSN_VSTn("vst3.8 {d0,d2,d4}", d0, d2, d4, d0); 6219 TESTINSN_VSTn("vst3.16 {d20,d22,d24}", d20, d22, d24, d20); 6220 TESTINSN_VSTn("vst3.32 {d0,d2,d4}", d0, d2, d4, d0); 6221 6222 printf("---- VST3 (single 3-element structure from one lane) ----\n"); 6223 TESTINSN_VSTn("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 6224 TESTINSN_VSTn("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 6225 TESTINSN_VSTn("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 6226 TESTINSN_VSTn("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 6227 TESTINSN_VSTn("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 6228 TESTINSN_VSTn("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 6229 TESTINSN_VSTn("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 6230 TESTINSN_VSTn("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 6231 TESTINSN_VSTn("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 6232 TESTINSN_VSTn("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 6233 TESTINSN_VSTn("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 6234 TESTINSN_VSTn("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 6235 TESTINSN_VSTn("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 6236 TESTINSN_VSTn("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 6237 TESTINSN_VSTn("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 6238 TESTINSN_VSTn("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 6239 TESTINSN_VSTn("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 6240 TESTINSN_VSTn("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 6241 TESTINSN_VSTn("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 6242 TESTINSN_VSTn("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 6243 6244 printf("---- VST4 (multiple 4-elements) ----\n"); 6245 TESTINSN_VSTn("vst4.8 {d0-d3}", d0, d1, d2, d3); 6246 TESTINSN_VSTn("vst4.16 {d20-d23}", d20, d21, d22, d23); 6247 TESTINSN_VSTn("vst4.32 {d0-d3}", d0, d1, d2, d3); 6248 TESTINSN_VSTn("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 6249 TESTINSN_VSTn("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 6250 TESTINSN_VSTn("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 6251 6252 printf("---- VST4 (single 4-element structure from one lane) ----\n"); 6253 TESTINSN_VSTn("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 6254 TESTINSN_VSTn("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 6255 TESTINSN_VSTn("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 6256 TESTINSN_VSTn("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 6257 TESTINSN_VSTn("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 6258 TESTINSN_VSTn("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 6259 TESTINSN_VSTn("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 6260 TESTINSN_VSTn("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 6261 TESTINSN_VSTn("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 6262 TESTINSN_VSTn("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 6263 TESTINSN_VSTn("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 6264 TESTINSN_VSTn("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 6265 TESTINSN_VSTn("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 6266 TESTINSN_VSTn("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 6267 TESTINSN_VSTn("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 6268 TESTINSN_VSTn("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 6269 TESTINSN_VSTn("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 6270 TESTINSN_VSTn("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 6271 TESTINSN_VSTn("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 6272 TESTINSN_VSTn("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 6273 6274 printf("---- VMOVN ----\n"); 6275 TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 6276 TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 6277 TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 6278 TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 6279 TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 6280 TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 6281 6282 printf("---- VQMOVN ----\n"); 6283 TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 6284 TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 6285 TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 6286 TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 6287 TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 6288 TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 6289 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 6290 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 6291 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 6292 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 6293 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 6294 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 6295 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff); 6296 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff); 6297 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff); 6298 6299 printf("---- VQMOVN ----\n"); 6300 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 6301 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 6302 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 6303 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 6304 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 6305 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 6306 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff); 6307 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff); 6308 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff); 6309 6310 printf("---- VABS ----\n"); 6311 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0x73); 6312 TESTINSN_un("vabs.s16 d15, d4", d15, d4, i32, 0x73); 6313 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0x73); 6314 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0xfe); 6315 TESTINSN_un("vabs.s16 d31, d4", d31, d4, i32, 0xef); 6316 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0xde); 6317 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i16, 0xfe0a); 6318 TESTINSN_un("vabs.s16 d15, d4", d15, d4, i16, 0xef0b); 6319 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i16, 0xde0c); 6320 6321 printf("---- VQABS ----\n"); 6322 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0x73); 6323 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 1 << 31); 6324 TESTINSN_un_q("vqabs.s16 d0, d1", d0, d1, i32, 1 << 31); 6325 TESTINSN_un_q("vqabs.s8 d0, d1", d0, d1, i32, 1 << 31); 6326 TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i32, 0x73); 6327 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0x73); 6328 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0xfe); 6329 TESTINSN_un_q("vqabs.s16 d31, d4", d31, d4, i32, 0xef); 6330 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0xde); 6331 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i16, 0xfe0a); 6332 TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i16, 0xef0b); 6333 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i16, 0xde0c); 6334 6335 printf("---- VADDHN ----\n"); 6336 TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 6337 TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6338 TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6339 TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6340 TESTINSN_bin("vaddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 6341 TESTINSN_bin("vaddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 6342 TESTINSN_bin("vaddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 6343 TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 6344 TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6345 TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6346 TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6347 6348 printf("---- VRADDHN ----\n"); 6349 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 6350 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6351 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6352 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6353 TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 6354 TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 6355 TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 6356 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 6357 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6358 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6359 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6360 TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0102); 6361 TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0102); 6362 TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0102); 6363 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x02); 6364 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 6365 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 6366 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 6367 6368 printf("---- VSUBHN ----\n"); 6369 TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 6370 TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6371 TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6372 TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6373 TESTINSN_bin("vsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 6374 TESTINSN_bin("vsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 6375 TESTINSN_bin("vsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 6376 TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 6377 TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6378 TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6379 TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6380 6381 printf("---- VRSUBHN ----\n"); 6382 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 6383 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6384 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6385 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 6386 TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 6387 TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 6388 TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 6389 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 6390 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6391 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6392 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 6393 TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef93, q2, i32, 0x0102); 6394 TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef93, q2, i32, 0x0102); 6395 TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef93, q8, i32, 0x0102); 6396 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x93, q1, i32, 0x02); 6397 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 6398 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 6399 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 6400 6401 printf("---- VCEQ #0 ----\n"); 6402 TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x21); 6403 TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x21); 6404 TESTINSN_un("vceq.i8 d10, d11, #0", d10, d11, i32, 0x21); 6405 TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x0); 6406 TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x0); 6407 TESTINSN_un("vceq.i8 d10, d31, #0", d10, d31, i32, 0x0); 6408 6409 printf("---- VCGT #0 ----\n"); 6410 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x21); 6411 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x21); 6412 TESTINSN_un("vcgt.s8 d10, d31, #0", d10, d31, i32, 0x21); 6413 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x0); 6414 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x0); 6415 TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i32, 0x0); 6416 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i8, 0xef); 6417 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i8, 0xed); 6418 TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i8, 0xae); 6419 6420 printf("---- VCGE #0 ----\n"); 6421 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x21); 6422 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x21); 6423 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0x21); 6424 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x0); 6425 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x0); 6426 TESTINSN_un("vcge.s8 d10, d31, #0", d10, d31, i32, 0x0); 6427 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i8, 0xef); 6428 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i8, 0xed); 6429 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i8, 0xae); 6430 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0xef); 6431 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0xed); 6432 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0xae); 6433 6434 printf("---- VCLE #0 ----\n"); 6435 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x21); 6436 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x21); 6437 TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i32, 0x21); 6438 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x0); 6439 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x0); 6440 TESTINSN_un("vcle.s8 d10, d31, #0", d10, d31, i32, 0x0); 6441 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i8, 0xef); 6442 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i8, 0xed); 6443 TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i8, 0xae); 6444 6445 printf("---- VCLT #0 ----\n"); 6446 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x21); 6447 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x21); 6448 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x21); 6449 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x0); 6450 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x0); 6451 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x0); 6452 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i8, 0xef); 6453 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i8, 0xed); 6454 TESTINSN_un("vclt.s8 d10, d31, #0", d10, d31, i8, 0xae); 6455 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0xef); 6456 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0xed); 6457 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0xae); 6458 6459 printf("---- VCNT ----\n"); 6460 TESTINSN_un("vcnt.8 d0, d1", d0, d1, i32, 0xac3d25eb); 6461 TESTINSN_un("vcnt.8 d11, d14", d11, d14, i32, 0xac3d25eb); 6462 TESTINSN_un("vcnt.8 d6, d2", d6, d2, i32, 0xad0eb); 6463 6464 printf("---- VCLS ----\n"); 6465 TESTINSN_un("vcls.s8 d0, d1", d0, d1, i32, 0x21); 6466 TESTINSN_un("vcls.s8 d30, d31", d30, d31, i8, 0x82); 6467 TESTINSN_un("vcls.s16 d0, d1", d0, d1, i32, 0x21); 6468 TESTINSN_un("vcls.s16 d31, d30", d31, d30, i8, 0x82); 6469 TESTINSN_un("vcls.s32 d6, d1", d6, d1, i32, 0x21); 6470 TESTINSN_un("vcls.s32 d30, d5", d30, d5, i8, 0x82); 6471 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0xff); 6472 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0xff); 6473 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0xff); 6474 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0xffef); 6475 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0xffef); 6476 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0xffef); 6477 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0x00); 6478 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0x00); 6479 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0x00); 6480 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0x00ef); 6481 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0x00ef); 6482 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0x00ef); 6483 6484 printf("---- VCLZ ----\n"); 6485 TESTINSN_un("vclz.i8 d0, d1", d0, d1, i32, 0x21); 6486 TESTINSN_un("vclz.i8 d30, d31", d30, d31, i8, 0x82); 6487 TESTINSN_un("vclz.i16 d0, d1", d0, d1, i32, 0x21); 6488 TESTINSN_un("vclz.i16 d31, d30", d31, d30, i8, 0x82); 6489 TESTINSN_un("vclz.i32 d6, d1", d6, d1, i32, 0x21); 6490 TESTINSN_un("vclz.i32 d30, d5", d30, d5, i8, 0x82); 6491 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0xff); 6492 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0xff); 6493 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0xff); 6494 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0xffef); 6495 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0xffef); 6496 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0xffef); 6497 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0x00); 6498 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0x00); 6499 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0x00); 6500 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0x00ef); 6501 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0x00ef); 6502 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0x00ef); 6503 6504 printf("---- VSLI ----\n"); 6505 TESTINSN_un("vsli.16 d0, d1, #1", d0, d1, i32, 7); 6506 TESTINSN_un("vsli.16 d3, d4, #2", d3, d4, i32, -0x7c); 6507 TESTINSN_un("vsli.32 d2, d5, #31", d2, d5, i32, -1); 6508 TESTINSN_un("vsli.8 d6, d7, #7", d6, d7, i32, 0xffff); 6509 TESTINSN_un("vsli.16 d8, d9, #12", d8, d9, i32, -10); 6510 TESTINSN_un("vsli.32 d10, d11, #5", d10, d11, i32, 10234); 6511 TESTINSN_un("vsli.8 d12, d13, #1", d12, d13, i32, -1); 6512 TESTINSN_un("vsli.16 d14, d15, #11", d14, d15, i32, -1); 6513 TESTINSN_un("vsli.32 d10, d11, #9", d10, d11, i32, 1000); 6514 TESTINSN_un("vsli.8 d7, d13, #7", d7, d13, i32, -1); 6515 TESTINSN_un("vsli.16 d8, d1, #1", d8, d1, i32, 0xabcf); 6516 TESTINSN_un("vsli.32 d12, d3, #15", d12, d3, i32, -0x1b0); 6517 TESTINSN_un("vsli.64 d0, d1, #42", d0, d1, i32, -1); 6518 TESTINSN_un("vsli.64 d6, d7, #12", d6, d7, i32, 0xfac); 6519 TESTINSN_un("vsli.64 d8, d4, #9", d8, d4, i32, 13560); 6520 TESTINSN_un("vsli.64 d9, d12, #11", d9, d12, i32, 98710); 6521 6522 printf("---- VPADD ----\n"); 6523 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 6524 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 6525 TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 6526 TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 6527 TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 6528 TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 6529 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 6530 TESTINSN_bin("vpadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 6531 6532 printf("---- VPADDL ----\n"); 6533 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 24); 6534 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 140); 6535 TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, 140); 6536 TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, 140); 6537 TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, (1 << 31) + 1); 6538 TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, (1 << 31) + 1); 6539 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, (1 << 31) + 1); 6540 TESTINSN_un("vpaddl.u32 d10, d11", d10, d11, i32, 24); 6541 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 24); 6542 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 140); 6543 TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, 140); 6544 TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, 140); 6545 TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, (1 << 31) + 1); 6546 TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, (1 << 31) + 1); 6547 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, (1 << 31) + 1); 6548 TESTINSN_un("vpaddl.s32 d10, d11", d10, d11, i32, 24); 6549 6550 printf("---- VPADAL ----\n"); 6551 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 24); 6552 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 140); 6553 TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, 140); 6554 TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i8, 140); 6555 TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i32, (1 << 31) + 1); 6556 TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, (1 << 31) + 1); 6557 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, (1 << 31) + 1); 6558 TESTINSN_un("vpadal.u32 d10, d11", d10, d11, i32, 24); 6559 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 24); 6560 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 140); 6561 TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, 140); 6562 TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i8, 140); 6563 TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i32, (1 << 31) + 1); 6564 TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, (1 << 31) + 1); 6565 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, (1 << 31) + 1); 6566 TESTINSN_un("vpadal.s32 d10, d11", d10, d11, i32, 24); 6567 6568 printf("---- VZIP ----\n"); 6569 TESTINSN_dual("vzip.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 6570 TESTINSN_dual("vzip.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 6571 TESTINSN_dual("vzip.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 6572 TESTINSN_dual("vzip.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 6573 TESTINSN_dual("vzip.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 6574 TESTINSN_dual("vzip.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 6575 6576 printf("---- VUZP ----\n"); 6577 TESTINSN_dual("vuzp.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 6578 TESTINSN_dual("vuzp.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 6579 TESTINSN_dual("vuzp.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 6580 TESTINSN_dual("vuzp.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 6581 TESTINSN_dual("vuzp.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 6582 TESTINSN_dual("vuzp.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 6583 6584 printf("---- VTRN ----\n"); 6585 TESTINSN_dual("vtrn.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 6586 TESTINSN_dual("vtrn.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 6587 TESTINSN_dual("vtrn.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 6588 TESTINSN_dual("vtrn.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 6589 TESTINSN_dual("vtrn.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 6590 TESTINSN_dual("vtrn.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 6591 6592 printf("---- VSWP ----\n"); 6593 TESTINSN_dual("vswp d0, d1", d0, i8, 0x12, d1, i8, 0x34); 6594 TESTINSN_dual("vswp d1, d0", d0, i8, 0x12, d1, i8, 0x34); 6595 TESTINSN_dual("vswp d10, d11", d10, i8, 0x12, d11, i8, 0x34); 6596 TESTINSN_dual("vswp d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 6597 TESTINSN_dual("vswp d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 6598 TESTINSN_dual("vswp d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 6599 6600 printf("---- VSHRN ----\n"); 6601 TESTINSN_un("vshrn.i16 d0, q1, #1", d0, q1, i32, -1); 6602 TESTINSN_un("vshrn.i16 d3, q4, #2", d3, q4, i32, -0x7c); 6603 TESTINSN_un("vshrn.i32 d2, q5, #10", d2, q5, i32, -1); 6604 TESTINSN_un("vshrn.i32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 6605 TESTINSN_un("vshrn.i64 d6, q7, #7", d6, q7, i32, 0xffff); 6606 TESTINSN_un("vshrn.i16 d8, q9, #8", d8, q9, i32, -10); 6607 TESTINSN_un("vshrn.i32 d10, q11, #5", d10, q11, i32, 10234); 6608 TESTINSN_un("vshrn.i64 d12, q13, #1", d12, q13, i32, -1); 6609 TESTINSN_un("vshrn.i16 d14, q15, #6", d14, q15, i32, -1); 6610 TESTINSN_un("vshrn.i32 d10, q11, #9", d10, q11, i32, 1000); 6611 TESTINSN_un("vshrn.i64 d7, q13, #7", d7, q13, i32, -1); 6612 TESTINSN_un("vshrn.i16 d8, q1, #1", d8, q1, i32, 0xabcf); 6613 TESTINSN_un("vshrn.i32 d12, q3, #15", d12, q3, i32, -0x1b0); 6614 TESTINSN_un("vshrn.i64 d0, q1, #22", d0, q1, i32, -1); 6615 TESTINSN_un("vshrn.i64 d6, q7, #12", d6, q7, i32, 0xfac); 6616 TESTINSN_un("vshrn.i64 d8, q4, #9", d8, q4, i32, 13560); 6617 TESTINSN_un("vshrn.i64 d9, q12, #11", d9, q12, i32, 98710); 6618 6619 printf("---- VDUP ----\n"); 6620 TESTINSN_un("vdup.8 d12, d2[0]", d12, d2, i32, 0xabc4657); 6621 TESTINSN_un("vdup.8 d0, d3[2]", d0, d3, i32, 0x7a1b3); 6622 TESTINSN_un("vdup.8 d1, d0[7]", d1, d0, i32, 0x713aaa); 6623 TESTINSN_un("vdup.8 d10, d4[3]", d10, d4, i32, 0xaa713); 6624 TESTINSN_un("vdup.8 d4, d28[4]", d4, d28, i32, 0x7b1c3); 6625 TESTINSN_un("vdup.16 d17, d19[1]", d17, d19, i32, 0x713ffff); 6626 TESTINSN_un("vdup.16 d15, d31[2]", d15, d31, i32, 0x7f00fa); 6627 TESTINSN_un("vdup.16 d6, d2[0]", d6, d2, i32, 0xffabcde); 6628 TESTINSN_un("vdup.16 d8, d22[3]", d8, d22, i32, 0x713); 6629 TESTINSN_un("vdup.16 d9, d2[0]", d9, d2, i32, 0x713); 6630 TESTINSN_un("vdup.32 d10, d17[1]", d10, d17, i32, 0x713); 6631 TESTINSN_un("vdup.32 d15, d11[0]", d15, d11, i32, 0x3); 6632 TESTINSN_un("vdup.32 d30, d29[1]", d30, d29, i32, 0xf00000aa); 6633 TESTINSN_un("vdup.32 d22, d0[1]", d22, d0, i32, 0xf); 6634 TESTINSN_un("vdup.32 d13, d13[0]", d13, d13, i32, -1); 6635 6636 printf("---- VQDMULH ----\n"); 6637 TESTINSN_bin_q("vqdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 6638 TESTINSN_bin_q("vqdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 6639 TESTINSN_bin_q("vqdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 6640 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 6641 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 6642 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 6643 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 6644 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 6645 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 6646 TESTINSN_bin_q("vqdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 6647 TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 6648 TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 6649 TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31); 6650 TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30); 6651 6652 printf("---- VQDMULH (by scalar) ----\n"); 6653 TESTINSN_bin_q("vqdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120); 6654 TESTINSN_bin_q("vqdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120); 6655 TESTINSN_bin_q("vqdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120); 6656 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 6657 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 6658 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 6659 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12); 6660 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 6661 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 6662 TESTINSN_bin_q("vqdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120); 6663 TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31); 6664 TESTINSN_bin_q("vqdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, 1 << 31); 6665 TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31); 6666 TESTINSN_bin_q("vqdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30); 6667 6668 printf("---- VSHRN ----\n"); 6669 TESTINSN_un("vshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657); 6670 TESTINSN_un("vshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3); 6671 TESTINSN_un("vshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa); 6672 TESTINSN_un("vshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713); 6673 TESTINSN_un("vshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3); 6674 TESTINSN_un("vshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff); 6675 TESTINSN_un("vshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa); 6676 TESTINSN_un("vshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc); 6677 TESTINSN_un("vshrn.i16 d8, q12, #3", d8, q12, i32, 0x713); 6678 TESTINSN_un("vshrn.i16 d9, q2, #7", d9, q2, i32, 0x713); 6679 TESTINSN_un("vshrn.i32 d10, q13, #2", d10, q13, i32, 0x713); 6680 TESTINSN_un("vshrn.i32 d15, q11, #1", d15, q11, i32, 0x3); 6681 TESTINSN_un("vshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa); 6682 TESTINSN_un("vshrn.i32 d12, q0, #6", d12, q0, i32, 0xf); 6683 TESTINSN_un("vshrn.i32 d13, q13, #2", d13, q13, i32, -1); 6684 6685 printf("---- VQSHRN ----\n"); 6686 TESTINSN_un_q("vqshrn.s16 d0, q1, #1", d0, q1, i32, -1); 6687 TESTINSN_un_q("vqshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c); 6688 TESTINSN_un_q("vqshrn.s32 d2, q5, #10", d2, q5, i32, -1); 6689 TESTINSN_un_q("vqshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 6690 TESTINSN_un_q("vqshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 6691 TESTINSN_un_q("vqshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff); 6692 TESTINSN_un_q("vqshrn.s16 d8, q9, #8", d8, q9, i32, -10); 6693 TESTINSN_un_q("vqshrn.s32 d10, q11, #5", d10, q11, i32, 10234); 6694 TESTINSN_un_q("vqshrn.s64 d12, q13, #1", d12, q13, i32, -1); 6695 TESTINSN_un_q("vqshrn.s16 d14, q15, #6", d14, q15, i32, -1); 6696 TESTINSN_un_q("vqshrn.s32 d10, q11, #9", d10, q11, i32, 1000); 6697 TESTINSN_un_q("vqshrn.s64 d7, q13, #7", d7, q13, i32, -1); 6698 TESTINSN_un_q("vqshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 6699 TESTINSN_un_q("vqshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 6700 TESTINSN_un_q("vqshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 6701 TESTINSN_un_q("vqshrn.s64 d0, q1, #22", d0, q1, i32, -1); 6702 TESTINSN_un_q("vqshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac); 6703 TESTINSN_un_q("vqshrn.s64 d8, q4, #9", d8, q4, i32, 13560); 6704 TESTINSN_un_q("vqshrn.s64 d9, q12, #11", d9, q12, i32, 98710); 6705 TESTINSN_un_q("vqshrn.u16 d0, q1, #1", d0, q1, i32, -1); 6706 TESTINSN_un_q("vqshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c); 6707 TESTINSN_un_q("vqshrn.u32 d2, q5, #10", d2, q5, i32, -1); 6708 TESTINSN_un_q("vqshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 6709 TESTINSN_un_q("vqshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff); 6710 TESTINSN_un_q("vqshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff); 6711 TESTINSN_un_q("vqshrn.u16 d8, q9, #8", d8, q9, i32, -10); 6712 TESTINSN_un_q("vqshrn.u32 d10, q11, #5", d10, q11, i32, 10234); 6713 TESTINSN_un_q("vqshrn.u64 d12, q13, #1", d12, q13, i32, -1); 6714 TESTINSN_un_q("vqshrn.u16 d14, q15, #6", d14, q15, i32, -1); 6715 TESTINSN_un_q("vqshrn.u32 d10, q11, #9", d10, q11, i32, 1000); 6716 TESTINSN_un_q("vqshrn.u64 d7, q13, #7", d7, q13, i32, -1); 6717 TESTINSN_un_q("vqshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf); 6718 TESTINSN_un_q("vqshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf); 6719 TESTINSN_un_q("vqshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0); 6720 TESTINSN_un_q("vqshrn.u64 d0, q1, #22", d0, q1, i32, -1); 6721 TESTINSN_un_q("vqshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac); 6722 TESTINSN_un_q("vqshrn.u64 d8, q4, #9", d8, q4, i32, 13560); 6723 TESTINSN_un_q("vqshrn.u64 d9, q12, #11", d9, q12, i32, 98710); 6724 6725 printf("---- VQSHRUN ----\n"); 6726 TESTINSN_un_q("vqshrun.s16 d0, q1, #1", d0, q1, i32, -1); 6727 TESTINSN_un_q("vqshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c); 6728 TESTINSN_un_q("vqshrun.s32 d2, q5, #10", d2, q5, i32, -1); 6729 TESTINSN_un_q("vqshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 6730 TESTINSN_un_q("vqshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 6731 TESTINSN_un_q("vqshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff); 6732 TESTINSN_un_q("vqshrun.s16 d8, q9, #8", d8, q9, i32, -10); 6733 TESTINSN_un_q("vqshrun.s32 d10, q11, #5", d10, q11, i32, 10234); 6734 TESTINSN_un_q("vqshrun.s64 d12, q13, #1", d12, q13, i32, -1); 6735 TESTINSN_un_q("vqshrun.s16 d14, q15, #6", d14, q15, i32, -1); 6736 TESTINSN_un_q("vqshrun.s32 d10, q11, #9", d10, q11, i32, 1000); 6737 TESTINSN_un_q("vqshrun.s64 d7, q13, #7", d7, q13, i32, -1); 6738 TESTINSN_un_q("vqshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 6739 TESTINSN_un_q("vqshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 6740 TESTINSN_un_q("vqshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 6741 TESTINSN_un_q("vqshrun.s64 d0, q1, #22", d0, q1, i32, -1); 6742 TESTINSN_un_q("vqshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac); 6743 TESTINSN_un_q("vqshrun.s64 d8, q4, #9", d8, q4, i32, 13560); 6744 TESTINSN_un_q("vqshrun.s64 d9, q12, #11", d9, q12, i32, 98710); 6745 6746 printf("---- VQRSHRN ----\n"); 6747 TESTINSN_un_q("vqrshrn.s16 d0, q1, #1", d0, q1, i32, -1); 6748 TESTINSN_un_q("vqrshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c); 6749 TESTINSN_un_q("vqrshrn.s32 d2, q5, #10", d2, q5, i32, -1); 6750 TESTINSN_un_q("vqrshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 6751 TESTINSN_un_q("vqrshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 6752 TESTINSN_un_q("vqrshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff); 6753 TESTINSN_un_q("vqrshrn.s16 d8, q9, #8", d8, q9, i32, -10); 6754 TESTINSN_un_q("vqrshrn.s32 d10, q11, #5", d10, q11, i32, 10234); 6755 TESTINSN_un_q("vqrshrn.s64 d12, q13, #1", d12, q13, i32, -1); 6756 TESTINSN_un_q("vqrshrn.s16 d14, q15, #6", d14, q15, i32, -1); 6757 TESTINSN_un_q("vqrshrn.s32 d10, q11, #9", d10, q11, i32, 1000); 6758 TESTINSN_un_q("vqrshrn.s64 d7, q13, #7", d7, q13, i32, -1); 6759 TESTINSN_un_q("vqrshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 6760 TESTINSN_un_q("vqrshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 6761 TESTINSN_un_q("vqrshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 6762 TESTINSN_un_q("vqrshrn.s64 d0, q1, #22", d0, q1, i32, -1); 6763 TESTINSN_un_q("vqrshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac); 6764 TESTINSN_un_q("vqrshrn.s64 d8, q4, #9", d8, q4, i32, 13560); 6765 TESTINSN_un_q("vqrshrn.s64 d9, q12, #11", d9, q12, i32, 98710); 6766 TESTINSN_un_q("vqrshrn.u16 d0, q1, #1", d0, q1, i32, -1); 6767 TESTINSN_un_q("vqrshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c); 6768 TESTINSN_un_q("vqrshrn.u32 d2, q5, #10", d2, q5, i32, -1); 6769 TESTINSN_un_q("vqrshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 6770 TESTINSN_un_q("vqrshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff); 6771 TESTINSN_un_q("vqrshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff); 6772 TESTINSN_un_q("vqrshrn.u16 d8, q9, #8", d8, q9, i32, -10); 6773 TESTINSN_un_q("vqrshrn.u32 d10, q11, #5", d10, q11, i32, 10234); 6774 TESTINSN_un_q("vqrshrn.u64 d12, q13, #1", d12, q13, i32, -1); 6775 TESTINSN_un_q("vqrshrn.u16 d14, q15, #6", d14, q15, i32, -1); 6776 TESTINSN_un_q("vqrshrn.u32 d10, q11, #9", d10, q11, i32, 1000); 6777 TESTINSN_un_q("vqrshrn.u64 d7, q13, #7", d7, q13, i32, -1); 6778 TESTINSN_un_q("vqrshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf); 6779 TESTINSN_un_q("vqrshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf); 6780 TESTINSN_un_q("vqrshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0); 6781 TESTINSN_un_q("vqrshrn.u64 d0, q1, #22", d0, q1, i32, -1); 6782 TESTINSN_un_q("vqrshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac); 6783 TESTINSN_un_q("vqrshrn.u64 d8, q4, #9", d8, q4, i32, 13560); 6784 TESTINSN_un_q("vqrshrn.u64 d9, q12, #11", d9, q12, i32, 98710); 6785 6786 printf("---- VQRSHRUN ----\n"); 6787 TESTINSN_un_q("vqrshrun.s16 d0, q1, #1", d0, q1, i32, -1); 6788 TESTINSN_un_q("vqrshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c); 6789 TESTINSN_un_q("vqrshrun.s32 d2, q5, #10", d2, q5, i32, -1); 6790 TESTINSN_un_q("vqrshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 6791 TESTINSN_un_q("vqrshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 6792 TESTINSN_un_q("vqrshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff); 6793 TESTINSN_un_q("vqrshrun.s16 d8, q9, #8", d8, q9, i32, -10); 6794 TESTINSN_un_q("vqrshrun.s32 d10, q11, #5", d10, q11, i32, 10234); 6795 TESTINSN_un_q("vqrshrun.s64 d12, q13, #1", d12, q13, i32, -1); 6796 TESTINSN_un_q("vqrshrun.s16 d14, q15, #6", d14, q15, i32, -1); 6797 TESTINSN_un_q("vqrshrun.s32 d10, q11, #9", d10, q11, i32, 1000); 6798 TESTINSN_un_q("vqrshrun.s64 d7, q13, #7", d7, q13, i32, -1); 6799 TESTINSN_un_q("vqrshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 6800 TESTINSN_un_q("vqrshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 6801 TESTINSN_un_q("vqrshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 6802 TESTINSN_un_q("vqrshrun.s64 d0, q1, #22", d0, q1, i32, -1); 6803 TESTINSN_un_q("vqrshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac); 6804 TESTINSN_un_q("vqrshrun.s64 d8, q4, #9", d8, q4, i32, 13560); 6805 TESTINSN_un_q("vqrshrun.s64 d9, q12, #11", d9, q12, i32, 98710); 6806 6807 printf("---- VRSHRN ----\n"); 6808 TESTINSN_un("vrshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657); 6809 TESTINSN_un("vrshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3); 6810 TESTINSN_un("vrshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa); 6811 TESTINSN_un("vrshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713); 6812 TESTINSN_un("vrshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3); 6813 TESTINSN_un("vrshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff); 6814 TESTINSN_un("vrshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa); 6815 TESTINSN_un("vrshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc); 6816 TESTINSN_un("vrshrn.i16 d8, q12, #3", d8, q12, i32, 0x713); 6817 TESTINSN_un("vrshrn.i16 d9, q2, #7", d9, q2, i32, 0x713); 6818 TESTINSN_un("vrshrn.i32 d10, q13, #2", d10, q13, i32, 0x713); 6819 TESTINSN_un("vrshrn.i32 d15, q11, #1", d15, q11, i32, 0x3); 6820 TESTINSN_un("vrshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa); 6821 TESTINSN_un("vrshrn.i32 d12, q0, #6", d12, q0, i32, 0xf); 6822 TESTINSN_un("vrshrn.i32 d13, q13, #2", d13, q13, i32, -1); 6823 6824 printf("---- VSHL (immediate) ----\n"); 6825 TESTINSN_un("vshl.i64 d0, d1, #1", d0, d1, i32, 24); 6826 TESTINSN_un("vshl.i64 d5, d2, #1", d5, d2, i32, (1 << 30)); 6827 TESTINSN_un("vshl.i64 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 6828 TESTINSN_un("vshl.i64 d11, d2, #12", d11, d2, i32, -1); 6829 TESTINSN_un("vshl.i64 d15, d12, #63", d15, d12, i32, 5); 6830 TESTINSN_un("vshl.i64 d5, d12, #62", d5, d12, i32, (1 << 31) + 1); 6831 TESTINSN_un("vshl.i32 d0, d1, #1", d0, d1, i32, 24); 6832 TESTINSN_un("vshl.i32 d5, d2, #1", d5, d2, i32, (1 << 30)); 6833 TESTINSN_un("vshl.i32 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 6834 TESTINSN_un("vshl.i32 d11, d2, #12", d11, d2, i32, -1); 6835 TESTINSN_un("vshl.i32 d15, d12, #20", d15, d12, i32, 5); 6836 TESTINSN_un("vshl.i32 d5, d12, #30", d5, d12, i32, (1 << 31) + 1); 6837 TESTINSN_un("vshl.i16 d0, d1, #1", d0, d1, i16, 24); 6838 TESTINSN_un("vshl.i16 d5, d2, #1", d5, d2, i32, (1 << 30)); 6839 TESTINSN_un("vshl.i16 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 6840 TESTINSN_un("vshl.i16 d11, d2, #12", d11, d2, i16, -1); 6841 TESTINSN_un("vshl.i16 d15, d12, #3", d15, d12, i16, 5); 6842 TESTINSN_un("vshl.i16 d5, d12, #14", d5, d12, i32, (1 << 31) + 1); 6843 TESTINSN_un("vshl.i8 d0, d1, #1", d0, d1, i8, 24); 6844 TESTINSN_un("vshl.i8 d5, d2, #1", d5, d2, i32, (1 << 30)); 6845 TESTINSN_un("vshl.i8 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 6846 TESTINSN_un("vshl.i8 d11, d2, #7", d11, d2, i8, -1); 6847 TESTINSN_un("vshl.i8 d15, d12, #3", d15, d12, i8, 5); 6848 TESTINSN_un("vshl.i8 d5, d12, #6", d5, d12, i32, (1 << 31) + 1); 6849 6850 printf("---- VNEG ----\n"); 6851 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0x73); 6852 TESTINSN_un("vneg.s16 d15, d4", d15, d4, i32, 0x73); 6853 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0x73); 6854 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0xfe); 6855 TESTINSN_un("vneg.s16 d31, d4", d31, d4, i32, 0xef); 6856 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0xde); 6857 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i16, 0xfe0a); 6858 TESTINSN_un("vneg.s16 d15, d4", d15, d4, i16, 0xef0b); 6859 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i16, 0xde0c); 6860 6861 printf("---- VQNEG ----\n"); 6862 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0x73); 6863 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 1 << 31); 6864 TESTINSN_un_q("vqneg.s16 d0, d1", d0, d1, i32, 1 << 31); 6865 TESTINSN_un_q("vqneg.s8 d0, d1", d0, d1, i32, 1 << 31); 6866 TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i32, 0x73); 6867 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0x73); 6868 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0xfe); 6869 TESTINSN_un_q("vqneg.s16 d31, d4", d31, d4, i32, 0xef); 6870 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0xde); 6871 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i16, 0xfe0a); 6872 TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i16, 0xef0b); 6873 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i16, 0xde0c); 6874 6875 printf("---- VREV ----\n"); 6876 TESTINSN_un("vrev64.8 d0, d1", d0, d1, i32, 0xaabbccdd); 6877 TESTINSN_un("vrev64.16 d10, d31", d10, d31, i32, 0xaabbccdd); 6878 TESTINSN_un("vrev64.32 d1, d14", d1, d14, i32, 0xaabbccdd); 6879 TESTINSN_un("vrev32.8 d0, d1", d0, d1, i32, 0xaabbccdd); 6880 TESTINSN_un("vrev32.16 d30, d15", d30, d15, i32, 0xaabbccdd); 6881 TESTINSN_un("vrev16.8 d0, d1", d0, d1, i32, 0xaabbccdd); 6882 6883 printf("---- VTBL ----\n"); 6884 TESTINSN_tbl_1("vtbl.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678); 6885 TESTINSN_tbl_1("vtbl.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678); 6886 TESTINSN_tbl_1("vtbl.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678); 6887 TESTINSN_tbl_1("vtbl.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678); 6888 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678); 6889 TESTINSN_tbl_1("vtbl.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678); 6890 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678); 6891 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678); 6892 TESTINSN_tbl_2("vtbl.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6893 TESTINSN_tbl_2("vtbl.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4); 6894 TESTINSN_tbl_2("vtbl.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4); 6895 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6896 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6897 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6898 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6899 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6900 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6901 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6902 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6903 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6904 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6905 TESTINSN_tbl_3("vtbl.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6906 TESTINSN_tbl_3("vtbl.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd); 6907 TESTINSN_tbl_3("vtbl.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd); 6908 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6909 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6910 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6911 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6912 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6913 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6914 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6915 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6916 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6917 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6918 TESTINSN_tbl_4("vtbl.8 d0, {d2-d5}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6919 TESTINSN_tbl_4("vtbl.8 d0, {d1-d4}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd, d4, i32, 0xfefdfcfb); 6920 TESTINSN_tbl_4("vtbl.8 d0, {d28-d31}, d1", d0, d1, i8, 0x17, d28, i32, 0x12345678, d29, i32, 0xa1a2a3a4, d30, i32, 0xcacbcccd, d31, i32, 0xfefdfcfb); 6921 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6922 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1a, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6923 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6924 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6925 TESTINSN_tbl_4("vtbl.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1f, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6926 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1a0315ff, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6927 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6928 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x171efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6929 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1d130f1a, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6930 TESTINSN_tbl_4("vtbl.8 d30, {d2-d5}, d31", d30, d31, i32, 0x17101c11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6931 6932 printf("---- VTBX ----\n"); 6933 TESTINSN_tbl_1("vtbx.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678); 6934 TESTINSN_tbl_1("vtbx.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678); 6935 TESTINSN_tbl_1("vtbx.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678); 6936 TESTINSN_tbl_1("vtbx.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678); 6937 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678); 6938 TESTINSN_tbl_1("vtbx.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678); 6939 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678); 6940 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678); 6941 TESTINSN_tbl_2("vtbx.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6942 TESTINSN_tbl_2("vtbx.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4); 6943 TESTINSN_tbl_2("vtbx.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4); 6944 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6945 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6946 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6947 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6948 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 6949 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6950 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6951 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6952 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6953 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 6954 TESTINSN_tbl_3("vtbx.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6955 TESTINSN_tbl_3("vtbx.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd); 6956 TESTINSN_tbl_3("vtbx.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd); 6957 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6958 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6959 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6960 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6961 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 6962 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6963 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6964 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6965 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6966 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 6967 TESTINSN_tbl_4("vtbx.8 d0, {d2-d5}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6968 TESTINSN_tbl_4("vtbx.8 d0, {d1-d4}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd, d4, i32, 0xfefdfcfb); 6969 TESTINSN_tbl_4("vtbx.8 d0, {d28-d31}, d1", d0, d1, i8, 0x17, d28, i32, 0x12345678, d29, i32, 0xa1a2a3a4, d30, i32, 0xcacbcccd, d31, i32, 0xfefdfcfb); 6970 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6971 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1a, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6972 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6973 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6974 TESTINSN_tbl_4("vtbx.8 d0, {d22-d25}, d1", d0, d1, i8, 0x1f, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd, d25, i32, 0xfefdfcfb); 6975 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1a0315ff, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6976 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6977 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x171efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6978 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x1d130f1a, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6979 TESTINSN_tbl_4("vtbx.8 d30, {d2-d5}, d31", d30, d31, i32, 0x17101c11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd, d5, i32, 0xfefdfcfb); 6980 6981 printf("---- VPMAX (integer) ----\n"); 6982 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 6983 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 6984 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 6985 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 6986 TESTINSN_bin("vpmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 6987 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 6988 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 6989 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 6990 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 6991 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 6992 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 6993 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 6994 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 6995 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 6996 TESTINSN_bin("vpmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 6997 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 6998 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 6999 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 7000 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 7001 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120); 7002 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 7003 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 7004 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 7005 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 7006 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 7007 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 7008 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 7009 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 7010 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 7011 TESTINSN_bin("vpmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 7012 7013 printf("---- VPMIN (integer) ----\n"); 7014 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 7015 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 7016 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 7017 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 7018 TESTINSN_bin("vpmin.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 7019 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 7020 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 7021 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 7022 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 7023 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 7024 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 7025 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 7026 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 7027 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 7028 TESTINSN_bin("vpmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 7029 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 7030 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 7031 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 7032 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 7033 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120); 7034 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 7035 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 7036 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 7037 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 7038 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 7039 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 7040 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 7041 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 7042 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 7043 TESTINSN_bin("vpmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 7044 7045 printf("---- VQRDMULH ----\n"); 7046 TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 7047 TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 7048 TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 7049 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 7050 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 7051 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 7052 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 7053 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 7054 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 7055 TESTINSN_bin_q("vqrdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 7056 TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 7057 TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, (1 << 31) + 1); 7058 TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31); 7059 TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30); 7060 7061 printf("---- VQRDMULH (by scalar) ----\n"); 7062 TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120); 7063 TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120); 7064 TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120); 7065 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 7066 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 7067 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 7068 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12); 7069 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 7070 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 7071 TESTINSN_bin_q("vqrdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120); 7072 TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31); 7073 TESTINSN_bin_q("vqrdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, (1 << 31) + 1); 7074 TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31); 7075 TESTINSN_bin_q("vqrdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30); 7076 7077 printf("---- VADD (fp) ----\n"); 7078 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7079 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7080 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7081 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7082 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7083 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7084 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7085 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7086 TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7087 TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7088 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7089 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7090 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7091 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7092 TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7093 TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7094 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7095 TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7096 TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7097 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7098 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7099 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7100 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7101 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7102 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7103 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7104 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7105 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7106 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7107 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7108 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7109 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7110 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7111 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7112 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7113 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7114 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7115 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7116 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7117 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7118 7119 printf("---- VSUB (fp) ----\n"); 7120 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7121 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7122 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7123 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7124 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7125 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 7126 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 7127 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7128 TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7129 TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7130 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7131 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7132 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7133 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7134 TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7135 TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7136 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7137 TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7138 TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7139 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7140 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7141 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7142 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7143 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7144 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7145 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7146 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7147 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7148 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7149 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7150 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7151 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7152 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7153 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7154 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7155 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7156 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7157 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7158 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7159 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7160 7161 printf("---- VMUL (fp) ----\n"); 7162 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7163 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7164 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7165 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7166 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7167 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 7168 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 7169 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7170 TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7171 TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7172 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7173 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7174 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7175 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7176 TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7177 TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7178 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7179 TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7180 TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7181 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7182 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7183 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7184 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7185 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7186 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7187 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7188 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7189 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7190 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7191 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7192 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7193 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7194 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7195 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7196 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7197 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7198 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7199 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7200 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7201 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7202 7203 printf("---- VMLA (fp) ----\n"); 7204 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7205 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7206 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7207 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7208 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7209 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 7210 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 7211 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7212 TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7213 TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7214 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7215 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7216 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7217 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7218 TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7219 TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7220 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7221 TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7222 TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7223 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7224 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7225 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7226 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7227 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7228 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7229 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7230 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7231 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7232 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7233 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7234 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7235 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7236 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7237 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7238 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7239 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7240 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7241 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7242 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7243 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7244 7245 printf("---- VMLA (fp by scalar) ----\n"); 7246 TESTINSN_bin_f("vmla.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120)); 7247 TESTINSN_bin_f("vmla.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120)); 7248 TESTINSN_bin_f("vmla.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 7249 TESTINSN_bin_f("vmla.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 7250 TESTINSN_bin_f("vmla.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 7251 TESTINSN_bin_f("vmla.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 7252 TESTINSN_bin_f("vmla.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11)); 7253 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7254 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7255 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7256 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7257 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7258 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7259 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7260 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7261 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7262 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7263 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7264 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7265 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7266 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7267 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7268 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7269 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7270 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7271 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7272 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7273 7274 printf("---- VMLS (fp) ----\n"); 7275 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7276 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7277 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7278 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7279 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7280 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 7281 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 7282 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7283 TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7284 TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7285 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7286 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7287 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7288 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7289 TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7290 TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7291 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7292 TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7293 TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7294 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7295 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7296 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7297 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7298 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7299 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7300 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7301 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7302 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7303 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7304 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7305 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7306 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7307 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7308 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7309 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7310 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7311 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7312 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7313 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7314 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7315 7316 printf("---- VMLS (fp by scalar) ----\n"); 7317 TESTINSN_bin_f("vmls.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120)); 7318 TESTINSN_bin_f("vmls.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120)); 7319 TESTINSN_bin_f("vmls.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 7320 TESTINSN_bin_f("vmls.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 7321 TESTINSN_bin_f("vmls.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 7322 TESTINSN_bin_f("vmls.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 7323 TESTINSN_bin_f("vmls.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11)); 7324 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7325 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7326 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7327 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7328 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7329 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7330 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7331 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7332 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7333 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7334 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7335 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7336 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7337 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7338 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7339 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7340 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7341 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7342 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7343 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7344 7345 printf("---- VABD (fp) ----\n"); 7346 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7347 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7348 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7349 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7350 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7351 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 7352 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 7353 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7354 TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7355 TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7356 TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7357 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7358 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7359 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7360 TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7361 TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7362 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7363 TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7364 TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7365 TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7366 7367 printf("---- VPADD (fp) ----\n"); 7368 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7369 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7370 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7371 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7372 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7373 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 7374 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 7375 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7376 TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7377 TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7378 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7379 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7380 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7381 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7382 TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7383 TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7384 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7385 TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7386 TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7387 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7388 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7389 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7390 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7391 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7392 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7393 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7394 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7395 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7396 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7397 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7398 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7399 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7400 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7401 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7402 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7403 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7404 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7405 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7406 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7407 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7408 7409 printf("---- VCVT (integer <-> fp) ----\n"); 7410 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(3.2)); 7411 TESTINSN_un("vcvt.u32.f32 d10, d11", d10, d11, i32, f2u(3e22)); 7412 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(3e9)); 7413 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 7414 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 7415 TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 7416 TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 7417 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(3.2)); 7418 TESTINSN_un("vcvt.s32.f32 d20, d21", d20, d21, i32, f2u(3e22)); 7419 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(3e9)); 7420 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 7421 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 7422 TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 7423 TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 7424 TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, 7); 7425 TESTINSN_un("vcvt.f32.u32 d10, d11", d10, d11, i32, 1 << 31); 7426 TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, (1U << 31) + 1); 7427 TESTINSN_un("vcvt.f32.u32 d24, d26", d24, d26, i32, (1U << 31) - 1); 7428 TESTINSN_un("vcvt.f32.u32 d0, d14", d0, d14, i32, 0x30a0bcef); 7429 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, 7); 7430 TESTINSN_un("vcvt.f32.s32 d30, d31", d30, d31, i32, 1 << 31); 7431 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) + 1); 7432 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) - 1); 7433 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(NAN)); 7434 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(0.0)); 7435 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 7436 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 7437 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(NAN)); 7438 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(0.0)); 7439 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 7440 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 7441 7442 printf("---- VCVT (fixed <-> fp) ----\n"); 7443 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(3.2)); 7444 TESTINSN_un("vcvt.u32.f32 d10, d11, #1", d10, d11, i32, f2u(3e22)); 7445 TESTINSN_un("vcvt.u32.f32 d15, d4, #32", d15, d4, i32, f2u(3e9)); 7446 TESTINSN_un("vcvt.u32.f32 d15, d4, #7", d15, d4, i32, f2u(-0.5)); 7447 TESTINSN_un("vcvt.u32.f32 d15, d4, #4", d15, d4, i32, f2u(-7.1)); 7448 TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 7449 TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 7450 TESTINSN_un("vcvt.s32.f32 d0, d1, #5", d0, d1, i32, f2u(3.2)); 7451 TESTINSN_un("vcvt.s32.f32 d20, d21, #1", d20, d21, i32, f2u(3e22)); 7452 TESTINSN_un("vcvt.s32.f32 d15, d4, #8", d15, d4, i32, f2u(3e9)); 7453 TESTINSN_un("vcvt.s32.f32 d15, d4, #2", d15, d4, i32, f2u(-0.5)); 7454 TESTINSN_un("vcvt.s32.f32 d15, d4, #1", d15, d4, i32, f2u(-7.1)); 7455 TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 7456 TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 7457 TESTINSN_un("vcvt.f32.u32 d0, d1, #5", d0, d1, i32, 7); 7458 TESTINSN_un("vcvt.f32.u32 d10, d11, #9", d10, d11, i32, 1 << 31); 7459 TESTINSN_un("vcvt.f32.u32 d0, d1, #4", d0, d1, i32, (1U << 31) + 1); 7460 TESTINSN_un("vcvt.f32.u32 d24, d26, #6", d24, d26, i32, (1U << 31) - 1); 7461 TESTINSN_un("vcvt.f32.u32 d0, d14, #5", d0, d14, i32, 0x30a0bcef); 7462 TESTINSN_un("vcvt.f32.s32 d0, d1, #12", d0, d1, i32, 7); 7463 TESTINSN_un("vcvt.f32.s32 d30, d31, #8", d30, d31, i32, 1 << 31); 7464 TESTINSN_un("vcvt.f32.s32 d0, d1, #1", d0, d1, i32, (1U << 31) + 1); 7465 TESTINSN_un("vcvt.f32.s32 d0, d1, #6", d0, d1, i32, (1U << 31) - 1); 7466 TESTINSN_un("vcvt.f32.s32 d0, d14, #2", d0, d14, i32, 0x30a0bcef); 7467 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN)); 7468 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0)); 7469 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY)); 7470 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY)); 7471 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN)); 7472 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0)); 7473 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY)); 7474 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY)); 7475 7476 printf("---- VMAX (fp) ----\n"); 7477 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7478 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7479 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7480 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7481 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7482 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7483 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7484 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7485 TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7486 TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7487 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7488 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7489 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7490 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7491 TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7492 TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7493 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7494 TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7495 TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7496 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7497 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 7498 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 7499 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 7500 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 7501 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 7502 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 7503 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7504 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7505 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7506 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7507 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7508 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7509 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7510 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7511 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7512 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7513 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7514 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7515 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7516 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7517 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7518 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7519 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7520 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7521 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7522 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7523 7524 printf("---- VMIN (fp) ----\n"); 7525 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7526 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7527 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7528 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7529 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7530 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7531 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7532 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7533 TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7534 TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7535 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7536 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7537 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7538 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7539 TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7540 TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7541 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7542 TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7543 TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7544 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7545 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 7546 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 7547 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 7548 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 7549 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 7550 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 7551 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7552 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7553 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7554 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7555 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7556 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7557 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7558 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7559 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7560 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7561 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7562 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7563 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7564 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7565 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7566 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7567 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7568 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7569 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7570 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7571 7572 printf("---- VPMAX (fp) ----\n"); 7573 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7574 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7575 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7576 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7577 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7578 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7579 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7580 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7581 TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7582 TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7583 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7584 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7585 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7586 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7587 TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7588 TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7589 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7590 TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7591 TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7592 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7593 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 7594 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 7595 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 7596 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 7597 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 7598 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 7599 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7600 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7601 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7602 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7603 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7604 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7605 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7606 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7607 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7608 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7609 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7610 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7611 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7612 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7613 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7614 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7615 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7616 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7617 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7618 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7619 7620 printf("---- VPMIN (fp) ----\n"); 7621 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7622 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7623 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7624 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7625 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7626 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7627 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7628 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7629 TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7630 TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7631 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7632 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7633 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7634 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7635 TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7636 TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7637 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7638 TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7639 TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7640 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7641 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 7642 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 7643 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 7644 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 7645 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 7646 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 7647 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7648 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7649 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7650 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7651 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7652 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7653 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7654 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7655 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7656 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7657 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7658 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7659 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7660 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7661 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7662 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7663 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7664 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7665 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7666 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7667 7668 printf("---- VRECPE ----\n"); 7669 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2)); 7670 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(-653.2)); 7671 TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22)); 7672 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9)); 7673 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-0.5)); 7674 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-7.1)); 7675 TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 7676 TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 7677 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2)); 7678 TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22)); 7679 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9)); 7680 TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 7681 TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 7682 TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 7683 TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 7684 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7); 7685 TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31); 7686 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 7687 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 7688 TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 7689 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7); 7690 TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31); 7691 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 7692 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 7693 TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 7694 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(NAN)); 7695 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(0.0)); 7696 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 7697 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 7698 7699 printf("---- VRECPS ----\n"); 7700 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7701 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7702 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7703 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7704 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7705 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 7706 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 7707 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7708 TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7709 TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7710 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7711 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7712 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 7713 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7714 TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7715 TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7716 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7717 TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7718 TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7719 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7720 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7721 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7722 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7723 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7724 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7725 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7726 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7727 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7728 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7729 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7730 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7731 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7732 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7733 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7734 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7735 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7736 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7737 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7738 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7739 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7740 7741 printf("---- VABS (fp) ----\n"); 7742 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2)); 7743 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22)); 7744 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9)); 7745 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 7746 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 7747 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 7748 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 7749 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2)); 7750 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22)); 7751 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9)); 7752 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 7753 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 7754 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 7755 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 7756 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7); 7757 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31); 7758 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 7759 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 7760 TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 7761 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7); 7762 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31); 7763 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 7764 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 7765 TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 7766 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(NAN)); 7767 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(0.0)); 7768 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 7769 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 7770 7771 printf("---- VCGT (fp) ----\n"); 7772 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 7773 TESTINSN_bin("vcgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 7774 TESTINSN_bin("vcgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 7775 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7776 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7777 TESTINSN_bin("vcgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7778 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7779 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7780 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7781 TESTINSN_bin("vcgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7782 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7783 TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7784 TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7785 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7786 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7787 TESTINSN_bin("vcgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 7788 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7789 TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7790 TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7791 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7792 TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7793 TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7794 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7795 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 7796 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 7797 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 7798 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 7799 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 7800 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 7801 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7802 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7803 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7804 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7805 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7806 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7807 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7808 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7809 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7810 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7811 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7812 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7813 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7814 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7815 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7816 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7817 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7818 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7819 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7820 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7821 7822 printf("---- VCGE (fp) ----\n"); 7823 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 7824 TESTINSN_bin("vcge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 7825 TESTINSN_bin("vcge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 7826 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7827 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7828 TESTINSN_bin("vcge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7829 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7830 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7831 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7832 TESTINSN_bin("vcge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7833 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7834 TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7835 TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7836 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7837 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7838 TESTINSN_bin("vcge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 7839 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7840 TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7841 TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7842 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7843 TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7844 TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7845 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7846 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 7847 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 7848 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 7849 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 7850 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 7851 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 7852 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7853 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7854 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7855 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7856 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7857 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7858 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7859 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7860 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7861 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7862 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7863 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7864 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7865 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7866 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7867 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7868 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7869 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7870 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7871 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7872 7873 printf("---- VACGT (fp) ----\n"); 7874 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 7875 TESTINSN_bin("vacgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 7876 TESTINSN_bin("vacgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 7877 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7878 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7879 TESTINSN_bin("vacgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7880 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7881 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7882 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7883 TESTINSN_bin("vacgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7884 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7885 TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7886 TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7887 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7888 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7889 TESTINSN_bin("vacgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 7890 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7891 TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7892 TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7893 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7894 TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7895 TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7896 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7897 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 7898 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 7899 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 7900 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 7901 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 7902 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 7903 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7904 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7905 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7906 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7907 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7908 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7909 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7910 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7911 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7912 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7913 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7914 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7915 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7916 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7917 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7918 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7919 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7920 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7921 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7922 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7923 7924 printf("---- VACGE (fp) ----\n"); 7925 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 7926 TESTINSN_bin("vacge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 7927 TESTINSN_bin("vacge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 7928 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7929 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7930 TESTINSN_bin("vacge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7931 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7932 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7933 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7934 TESTINSN_bin("vacge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7935 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7936 TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7937 TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7938 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7939 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7940 TESTINSN_bin("vacge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 7941 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7942 TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7943 TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7944 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7945 TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7946 TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7947 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7948 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 7949 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 7950 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 7951 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 7952 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 7953 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 7954 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 7955 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 7956 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 7957 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 7958 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 7959 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 7960 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 7961 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 7962 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 7963 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 7964 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 7965 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 7966 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 7967 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 7968 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 7969 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 7970 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 7971 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 7972 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 7973 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 7974 7975 printf("---- VCEQ (fp) ----\n"); 7976 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 7977 TESTINSN_bin("vceq.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 7978 TESTINSN_bin("vceq.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 7979 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 7980 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 7981 TESTINSN_bin("vceq.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 7982 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 7983 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 7984 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 7985 TESTINSN_bin("vceq.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 7986 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 7987 TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 7988 TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 7989 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 7990 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 7991 TESTINSN_bin("vceq.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 7992 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 7993 TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 7994 TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 7995 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 7996 TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 7997 TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 7998 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 7999 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 8000 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 8001 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 8002 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 8003 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 8004 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 8005 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 8006 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 8007 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 8008 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 8009 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 8010 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 8011 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 8012 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 8013 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 8014 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 8015 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 8016 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 8017 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 8018 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 8019 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 8020 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 8021 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 8022 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 8023 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 8024 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 8025 8026 printf("---- VCEQ (fp) #0 ----\n"); 8027 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 8028 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x1); 8029 TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 8030 TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 8031 TESTINSN_un("vceq.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 8032 TESTINSN_un("vceq.f32 d30, d15, #0", d30, d15, i32, 0x0); 8033 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 8034 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 8035 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 8036 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 8037 8038 printf("---- VCGT (fp) #0 ----\n"); 8039 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 8040 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x1); 8041 TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 8042 TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 8043 TESTINSN_un("vcgt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 8044 TESTINSN_un("vcgt.f32 d30, d15, #0", d30, d15, i32, 0x0); 8045 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 8046 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 8047 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 8048 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 8049 8050 printf("---- VCLT (fp) #0 ----\n"); 8051 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 8052 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x1); 8053 TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 8054 TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 8055 TESTINSN_un("vclt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 8056 TESTINSN_un("vclt.f32 d30, d15, #0", d30, d15, i32, 0x0); 8057 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 8058 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 8059 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 8060 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 8061 8062 printf("---- VCGE (fp) #0 ----\n"); 8063 TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 8064 TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x1); 8065 TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 8066 TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 8067 TESTINSN_un("vcge.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 8068 TESTINSN_un("vcge.f32 d30, d15, #0", d30, d15, i32, 0x0); 8069 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 8070 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 8071 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 8072 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 8073 8074 printf("---- VCLE (fp) #0 ----\n"); 8075 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 8076 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x1); 8077 TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 8078 TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 8079 TESTINSN_un("vcle.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 8080 TESTINSN_un("vcle.f32 d30, d15, #0", d30, d15, i32, 0x0); 8081 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 8082 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 8083 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 8084 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 8085 8086 printf("---- VNEG (fp) ----\n"); 8087 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x01000000); 8088 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x1); 8089 TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, 1 << 31); 8090 TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, f2u(23.04)); 8091 TESTINSN_un("vneg.f32 d2, d31", d2, d31, i32, f2u(-23.04)); 8092 TESTINSN_un("vneg.f32 d30, d15", d30, d15, i32, 0x0); 8093 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(NAN)); 8094 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(0.0)); 8095 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 8096 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 8097 8098 printf("---- VRSQRTS ----\n"); 8099 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 8100 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 8101 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 8102 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 8103 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 8104 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 8105 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 8106 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 8107 TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 8108 TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 8109 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 8110 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 8111 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 8112 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 8113 TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 8114 TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 8115 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 8116 TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 8117 TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 8118 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 8119 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 8120 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 8121 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 8122 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 8123 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 8124 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 8125 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 8126 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 8127 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 8128 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 8129 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 8130 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 8131 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 8132 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 8133 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 8134 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 8135 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 8136 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 8137 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 8138 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 8139 8140 printf("---- VRSQRTE (fp) ----\n"); 8141 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2)); 8142 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22)); 8143 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9)); 8144 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 8145 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 8146 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 8147 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 8148 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2)); 8149 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22)); 8150 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9)); 8151 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 8152 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 8153 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 8154 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 8155 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7); 8156 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31); 8157 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 8158 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 8159 TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 8160 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7); 8161 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31); 8162 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 8163 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 8164 TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 8165 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(NAN)); 8166 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(0.0)); 8167 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 8168 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 8169 8170 return 0; 8171} 8172