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 34 static 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 45 const unsigned int mem[] = { 46 0x03020100, 0x07060504, 0x0b0a0908, 0x0f0e0d0c, 47 0x13121110, 0x17161514, 0x1b1a1918, 0x1f1e1d1c, 48 0x23222120, 0x27262524, 0x2b2a2928, 0x2f2e2d2c, 49 0x33323130, 0x37363534, 0x3b3a3938, 0x3f3e3d3c 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 fflush(stdout); \ 65 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \ 66 instruction, out[1], out[0]); \ 67 } \ 68 { \ 69 unsigned int out[2]; \ 70 unsigned int addr = 0; \ 71 \ 72 __asm__ volatile( \ 73 "mov %1, %2\n\t" \ 74 "vldmia %1!, {" #QD "}\n\t" \ 75 instruction ", #" #imm "\n\t" \ 76 "vstmia %0, {" #QD "}\n\t" \ 77 : \ 78 : "r" (out), "r" (addr), "r" (mem) \ 79 : #QD, "%2", "memory" \ 80 ); \ 81 fflush(stdout); \ 82 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x\n", \ 83 instruction, out[1], out[0]); \ 84 } 85 86 #define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \ 87 { \ 88 unsigned int out[2]; \ 89 \ 90 __asm__ volatile( \ 91 "vmov.i8 " #QD ", #0x55" "\n\t" \ 92 "vdup." #QMtype " " #QM ", %1\n\t" \ 93 instruction "\n\t" \ 94 "vstmia %0, {" #QD "}\n\t" \ 95 : \ 96 : "r" (out), "r" (QMval) \ 97 : #QD, #QM, "memory" \ 98 ); \ 99 fflush(stdout); \ 100 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ 101 instruction, out[1], out[0], QMval); \ 102 } \ 103 { \ 104 unsigned int out[2]; \ 105 unsigned int addr = 0; \ 106 \ 107 __asm__ volatile( \ 108 "mov %2, %3\n\t" \ 109 "vldmia %2!, {" #QD "}\n\t" \ 110 "vldmia %2!, {" #QM "}\n\t" \ 111 instruction "\n\t" \ 112 "vstmia %0, {" #QD "}\n\t" \ 113 "vstmia %0, {" #QD "}\n\t" \ 114 : \ 115 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ 116 : #QD, #QM, "%2", "memory" \ 117 ); \ 118 fflush(stdout); \ 119 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ 120 instruction, out[1], out[0], QMval ); \ 121 } 122 123 #define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \ 124 { \ 125 unsigned int out[2]; \ 126 unsigned int fpscr; \ 127 \ 128 __asm__ volatile( \ 129 "vmov.i8 " #QD ", #0x55" "\n\t" \ 130 "mov r4, #0\n\t" \ 131 MOVE_to_FPSCR_from_R4 \ 132 "vdup." #QMtype " " #QM ", %2\n\t" \ 133 instruction "\n\t" \ 134 "vstmia %1, {" #QD "}\n\t" \ 135 MOVE_to_R4_from_FPSCR \ 136 "mov %0, r4" \ 137 : "=r" (fpscr) \ 138 : "r" (out), "r" (QMval) \ 139 : #QD, #QM, "memory", "r4" \ 140 ); \ 141 fflush(stdout); \ 142 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \ 143 instruction, out[1], out[0], QMval, fpscr); \ 144 } \ 145 { \ 146 unsigned int out[2]; \ 147 unsigned int fpscr; \ 148 unsigned int addr = 0; \ 149 \ 150 __asm__ volatile( \ 151 "vmov.i8 " #QD ", #0x55" "\n\t" \ 152 "mov r4, #0\n\t" \ 153 MOVE_to_FPSCR_from_R4 \ 154 "mov %3, %4\n\t" \ 155 "vldmia %3!, {" #QM "}\n\t" \ 156 instruction "\n\t" \ 157 "vstmia %1, {" #QD "}\n\t" \ 158 MOVE_to_R4_from_FPSCR \ 159 "mov %0, r4" \ 160 : "=r" (fpscr) \ 161 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ 162 : #QD, #QM, "memory", "r4" \ 163 ); \ 164 fflush(stdout); \ 165 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x fpscr %08x\n", \ 166 instruction, out[1], out[0], QMval, fpscr); \ 167 } 168 169 #define TESTINSN_core_to_scalar(instruction, QD, QM, QMval) \ 170 { \ 171 unsigned int out[2]; \ 172 \ 173 __asm__ volatile( \ 174 "vmov.i8 " #QD ", #0x55" "\n\t" \ 175 "mov " #QM ", %1\n\t" \ 176 instruction "\n\t" \ 177 "vstmia %0, {" #QD "}\n\t" \ 178 : \ 179 : "r" (out), "r" (QMval) \ 180 : #QD, #QM, "memory" \ 181 ); \ 182 fflush(stdout); \ 183 printf("%s :: Qd 0x%08x 0x%08x Qm 0x%08x\n", \ 184 instruction, out[1], out[0], QMval); \ 185 } 186 187 #define TESTINSN_scalar_to_core(instruction, QD, QM, QMtype, QMval) \ 188 { \ 189 unsigned int out[2]; \ 190 \ 191 __asm__ volatile( \ 192 "mov " #QD ", #0x55" "\n\t" \ 193 "vdup." #QMtype " " #QM ", %1\n\t" \ 194 instruction "\n\t" \ 195 "str " #QD ", [%0]\n\t" \ 196 : \ 197 : "r" (out), "r" (QMval) \ 198 : #QD, #QM, "memory" \ 199 ); \ 200 fflush(stdout); \ 201 printf("%s :: Rd 0x%08x Qm (" #QMtype ")0x%08x\n", \ 202 instruction, out[0], QMval); \ 203 } 204 205 #define TESTINSN_VLDn(instruction, QD1, QD2, QD3, QD4) \ 206 { \ 207 unsigned int out[9]; \ 208 \ 209 __asm__ volatile( \ 210 "vmov.i8 " #QD1 ", #0x55" "\n\t" \ 211 "vmov.i8 " #QD2 ", #0x55" "\n\t" \ 212 "vmov.i8 " #QD3 ", #0x55" "\n\t" \ 213 "vmov.i8 " #QD4 ", #0x55" "\n\t" \ 214 instruction ", [%1]\n\t" \ 215 "mov r4, %0\n\t" \ 216 "vstmia %0!, {" #QD1 "}\n\t" \ 217 "vstmia %0!, {" #QD2 "}\n\t" \ 218 "vstmia %0!, {" #QD3 "}\n\t" \ 219 "vstmia %0!, {" #QD4 "}\n\t" \ 220 "str %1, [%2]\n\t" \ 221 "mov %0, r4\n\t" \ 222 : \ 223 : "r" (out), "r" (mem), "r"(&out[8]) \ 224 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ 225 ); \ 226 fflush(stdout); \ 227 printf("%s :: Result %08x'%08x %08x'%08x " \ 228 "%08x'%08x %08x'%08x delta %d\n", \ 229 instruction, out[1], out[0], out[3], out[2], out[5], \ 230 out[4], out[7], out[6], (int)out[8]-(int)mem); \ 231 } 232 233 #define TESTINSN_VSTn(instruction, QD1, QD2, QD3, QD4) \ 234 { \ 235 unsigned int out[9]; \ 236 \ 237 memset(out, 0x55, 8 * (sizeof(unsigned int)));\ 238 __asm__ volatile( \ 239 "mov r4, %1\n\t" \ 240 "vldmia %1!, {" #QD1 "}\n\t" \ 241 "vldmia %1!, {" #QD2 "}\n\t" \ 242 "vldmia %1!, {" #QD3 "}\n\t" \ 243 "vldmia %1!, {" #QD4 "}\n\t" \ 244 "mov %1, r4\n\t" \ 245 instruction ", [%0]\n\t" \ 246 "str %0, [%2]\n\t" \ 247 : \ 248 : "r" (out), "r" (mem), "r"(&out[8]) \ 249 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ 250 ); \ 251 fflush(stdout); \ 252 printf("%s :: Result %08x'%08x %08x'%08x " \ 253 "%08x'%08x %08x'%08x delta %d\n", \ 254 instruction, out[1], out[0], out[3], out[2], out[5], \ 255 out[4], out[7], out[6], (int)out[8]-(int)out); \ 256 } 257 258 #define TESTINSN_VLDn_WB(instruction, QD1, QD2, QD3, QD4) \ 259 { \ 260 unsigned int out[9]; \ 261 unsigned int addr = 0; \ 262 \ 263 __asm__ volatile( \ 264 "mov %0, %2\n\t" \ 265 "vmov.i8 " #QD1 ", #0x55" "\n\t" \ 266 "vmov.i8 " #QD2 ", #0x55" "\n\t" \ 267 "vmov.i8 " #QD3 ", #0x55" "\n\t" \ 268 "vmov.i8 " #QD4 ", #0x55" "\n\t" \ 269 instruction ", [%0]!\n\t" \ 270 "mov r4, %1\n\t" \ 271 "vstmia %1!, {" #QD1 "}\n\t" \ 272 "vstmia %1!, {" #QD2 "}\n\t" \ 273 "vstmia %1!, {" #QD3 "}\n\t" \ 274 "vstmia %1!, {" #QD4 "}\n\t" \ 275 "str %0, [%3]\n\t" \ 276 "mov %1, r4\n\t" \ 277 : "+r" (addr) \ 278 : "r" (out), "r" (mem), "r"(&out[8]) \ 279 : #QD1, #QD2, #QD3, #QD4, "memory", "r4" \ 280 ); \ 281 fflush(stdout); \ 282 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \ 283 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 284 instruction, out[0], out[1], out[2], out[3], out[4], \ 285 out[5], out[6], out[7], (int)out[8]-(int)mem); \ 286 } 287 288 #define TESTINSN_VSTn_WB(instruction, QD1, QD2, QD3, QD4) \ 289 { \ 290 unsigned int out[9]; \ 291 unsigned int addr = 0; \ 292 \ 293 memset(out, 0x55, 8 * (sizeof(unsigned int)));\ 294 __asm__ volatile( \ 295 "mov %0, %1\n\t" \ 296 "mov r4, %2\n\t" \ 297 "vldmia r4!, {" #QD1 "}\n\t" \ 298 "vldmia r4!, {" #QD2 "}\n\t" \ 299 "vldmia r4!, {" #QD3 "}\n\t" \ 300 "vldmia r4!, {" #QD4 "}\n\t" \ 301 instruction ", [%0]!\n\t" \ 302 "str %0, [%3]\n\t" \ 303 : "+r" (addr) \ 304 : "r" (out), "r" (mem), "r"(&out[8]) \ 305 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", "0" \ 306 ); \ 307 fflush(stdout); \ 308 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \ 309 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 310 instruction, out[0], out[1], out[2], out[3], out[4], \ 311 out[5], out[6], out[7], (int)out[8]-(int)out); \ 312 } 313 314 #define TESTINSN_VLDn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \ 315 { \ 316 unsigned int out[9]; \ 317 unsigned int addr = 0; \ 318 \ 319 __asm__ volatile( \ 320 "mov %0, %2\n\t" \ 321 "vmov.i8 " #QD1 ", #0x55" "\n\t" \ 322 "vmov.i8 " #QD2 ", #0x55" "\n\t" \ 323 "vmov.i8 " #QD3 ", #0x55" "\n\t" \ 324 "vmov.i8 " #QD4 ", #0x55" "\n\t" \ 325 "mov " #RM ", %4\n\t" \ 326 instruction ", [%0], " #RM "\n\t" \ 327 "mov r4, %1\n\t" \ 328 "vstmia %1!, {" #QD1 "}\n\t" \ 329 "vstmia %1!, {" #QD2 "}\n\t" \ 330 "vstmia %1!, {" #QD3 "}\n\t" \ 331 "vstmia %1!, {" #QD4 "}\n\t" \ 332 "str %0, [%3]\n\t" \ 333 "mov %1, r4\n\t" \ 334 : "+r" (addr) \ 335 : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \ 336 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \ 337 ); \ 338 fflush(stdout); \ 339 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \ 340 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 341 instruction, out[0], out[1], out[2], out[3], out[4], \ 342 out[5], out[6], out[7], (int)out[8]-(int)addr); \ 343 } 344 345 346 #define TESTINSN_VSTn_RI(instruction, QD1, QD2, QD3, QD4, RM, RMval) \ 347 { \ 348 unsigned int out[9]; \ 349 unsigned int addr = 0; \ 350 \ 351 memset(out, 0x55, 8 * (sizeof(unsigned int)));\ 352 __asm__ volatile( \ 353 "mov %0, %1\n\t" \ 354 "mov r4, %2\n\t" \ 355 "vldmia r4!, {" #QD1 "}\n\t" \ 356 "vldmia r4!, {" #QD2 "}\n\t" \ 357 "vldmia r4!, {" #QD3 "}\n\t" \ 358 "vldmia r4!, {" #QD4 "}\n\t" \ 359 "mov " #RM ", %4\n\t" \ 360 instruction ", [%0], " #RM "\n\t" \ 361 "str %0, [%3]\n\t" \ 362 : "+r" (addr) \ 363 : "r" (out), "r" (mem), "r"(&out[8]), "r"(RMval) \ 364 : #QD1, #QD2, #QD3, #QD4, "memory", "r4", #RM \ 365 ); \ 366 fflush(stdout); \ 367 printf("%s :: Result 0x%08x 0x%08x 0x%08x 0x%08x " \ 368 "0x%08x 0x%08x 0x%08x 0x%08x delta %d\n", \ 369 instruction, out[0], out[1], out[2], out[3], out[4], \ 370 out[5], out[6], out[7], (int)out[8]-(int)out); \ 371 } 372 373 #define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 374 { \ 375 unsigned int out[2]; \ 376 \ 377 __asm__ volatile( \ 378 "vmov.i8 " #QD ", #0x55" "\n\t" \ 379 "vdup." #QMtype " " #QM ", %1\n\t" \ 380 "vdup." #QNtype " " #QN ", %2\n\t" \ 381 instruction "\n\t" \ 382 "vstmia %0, {" #QD "}\n\t" \ 383 : \ 384 : "r" (out), "r" (QMval), "r" (QNval) \ 385 : #QD, #QM, #QN, "memory" \ 386 ); \ 387 fflush(stdout); \ 388 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 389 " Qn (" #QNtype ")0x%08x\n", \ 390 instruction, out[1], out[0], QMval, QNval); \ 391 } \ 392 { \ 393 unsigned int out[2]; \ 394 unsigned int addr = 0; \ 395 \ 396 __asm__ volatile( \ 397 "mov %0, %4\n\t" \ 398 "vldmia %0!, {" #QM "}\n\t" \ 399 "vmov.i8 " #QD ", #0x55" "\n\t" \ 400 "vdup." #QNtype " " #QN ", %3\n\t" \ 401 instruction "\n\t" \ 402 "vstmia %1, {" #QD "}\n\t" \ 403 : "+r" (addr) \ 404 : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \ 405 : #QD, #QM, #QN, "memory" \ 406 ); \ 407 fflush(stdout); \ 408 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 409 " Qn (" #QNtype ")0x%08x\n", \ 410 instruction, out[1], out[0], QMval, QNval); \ 411 } 412 413 #define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 414 { \ 415 unsigned int out[2]; \ 416 \ 417 __asm__ volatile( \ 418 "vdup.i32 " #QD ", %3\n\t" \ 419 "vdup." #QMtype " " #QM ", %1\n\t" \ 420 "vdup." #QNtype " " #QN ", %2\n\t" \ 421 instruction "\n\t" \ 422 "vstmia %0, {" #QD "}\n\t" \ 423 : \ 424 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000) \ 425 : #QD, #QM, #QN, "memory" \ 426 ); \ 427 fflush(stdout); \ 428 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 429 " Qn (" #QNtype ")0x%08x\n", \ 430 instruction, out[1], out[0], QMval, QNval); \ 431 } \ 432 { \ 433 unsigned int out[2]; \ 434 unsigned int addr = 0; \ 435 \ 436 __asm__ volatile( \ 437 "vdup.i32 " #QD ", %3\n\t" \ 438 "mov %4, %5\n\t" \ 439 "vldmia %4!, {" #QM "}\n\t" \ 440 "vdup." #QNtype " " #QN ", %2\n\t" \ 441 instruction "\n\t" \ 442 "vstmia %0, {" #QD "}\n\t" \ 443 : \ 444 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \ 445 : #QD, #QM, #QN, "memory" \ 446 ); \ 447 fflush(stdout); \ 448 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 449 " Qn (" #QNtype ")0x%08x\n", \ 450 instruction, out[1], out[0], QMval, QNval); \ 451 } 452 453 #define TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 454 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \ 455 { \ 456 unsigned int out[2]; \ 457 \ 458 __asm__ volatile( \ 459 "vmov.i8 " #QD ", #0x55" "\n\t" \ 460 "vdup." #QMtype " " #QM ", %1\n\t" \ 461 "vdup." #QN1type " " #QN1 ", %2\n\t" \ 462 "vdup." #QN2type " " #QN2 ", %3\n\t" \ 463 "vdup." #QN3type " " #QN3 ", %4\n\t" \ 464 "vdup." #QN4type " " #QN4 ", %5\n\t" \ 465 instruction "\n\t" \ 466 "vstmia %0, {" #QD "}\n\t" \ 467 : \ 468 : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \ 469 "r" (QN4val) \ 470 : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \ 471 ); \ 472 fflush(stdout); \ 473 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 474 " Qn1 (" #QN1type ")0x%08x" \ 475 " Qn2 (" #QN2type ")0x%08x" \ 476 " Qn3 (" #QN3type ")0x%08x" \ 477 " Qn4 (" #QN4type ")0x%08x\n", \ 478 instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \ 479 } \ 480 { \ 481 unsigned int out[2]; \ 482 unsigned int addr = 0; \ 483 \ 484 __asm__ volatile( \ 485 "mov %6, %7\n\t" \ 486 "vmov.i8 " #QD ", #0x55" "\n\t" \ 487 "vdup." #QMtype " " #QM ", %1\n\t" \ 488 "vldmia %6!, {" #QN1 "}\n\t" \ 489 "vdup." #QN2type " " #QN2 ", %3\n\t" \ 490 "vldmia %6!, {" #QN3 "}\n\t" \ 491 "vdup." #QN4type " " #QN4 ", %5\n\t" \ 492 instruction "\n\t" \ 493 "vstmia %0, {" #QD "}\n\t" \ 494 : \ 495 : "r" (out), "r" (QMval), "r" (QN1val), "r" (QN2val), "r" (QN3val), \ 496 "r" (QN4val), "r" (addr), "r" (mem) \ 497 : #QD, #QM, #QN1, #QN2, #QN3, #QN4, "memory" \ 498 ); \ 499 fflush(stdout); \ 500 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 501 " Qn1 (" #QN1type ")0x%08x" \ 502 " Qn2 (" #QN2type ")0x%08x" \ 503 " Qn3 (" #QN3type ")0x%08x" \ 504 " Qn4 (" #QN4type ")0x%08x\n", \ 505 instruction, out[1], out[0], QMval, QN1val, QN2val, QN3val, QN4val); \ 506 } 507 508 #define TESTINSN_tbl_1(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val) \ 509 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 510 QN1, QN1type, QN1val, QN1, QN1type, QN1val, QN1, QN1type, QN1val) 511 #define TESTINSN_tbl_2(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 512 QN2, QN2type, QN2val) \ 513 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 514 QN2, QN2type, QN2val, QN1, QN1type, QN1val, QN2, QN2type, QN2val) 515 #define TESTINSN_tbl_3(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 516 QN2, QN2type, QN2val, QN3, QN3type, QN3val) \ 517 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 518 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN2, QN2type, QN2val) 519 #define TESTINSN_tbl_4(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 520 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) \ 521 TESTINSN_tbl(instruction, QD, QM, QMtype, QMval, QN1, QN1type, QN1val, \ 522 QN2, QN2type, QN2val, QN3, QN3type, QN3val, QN4, QN4type, QN4val) 523 524 #define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 525 { \ 526 unsigned int out[2]; \ 527 unsigned int fpscr; \ 528 \ 529 __asm__ volatile( \ 530 "vmov.i8 " #QD ", #0x55" "\n\t" \ 531 "mov r4, #0\n\t" \ 532 MOVE_to_FPSCR_from_R4 \ 533 "vdup." #QMtype " " #QM ", %2\n\t" \ 534 "vdup." #QNtype " " #QN ", %3\n\t" \ 535 instruction "\n\t" \ 536 "vstmia %1, {" #QD "}\n\t" \ 537 MOVE_to_R4_from_FPSCR \ 538 "mov %0, r4" \ 539 : "=r" (fpscr) \ 540 : "r" (out), "r" (QMval), "r" (QNval) \ 541 : #QD, #QM, #QN, "memory", "r4" \ 542 ); \ 543 fflush(stdout); \ 544 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 545 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 546 instruction, out[1], out[0], QMval, QNval, fpscr); \ 547 } \ 548 { \ 549 unsigned int out[2]; \ 550 unsigned int fpscr; \ 551 unsigned int addr = 0; \ 552 \ 553 __asm__ volatile( \ 554 "vmov.i8 " #QD ", #0x55" "\n\t" \ 555 "mov r4, #0\n\t" \ 556 MOVE_to_FPSCR_from_R4 \ 557 "mov %4, %5\n\t" \ 558 "vldmia %4!, {" #QM "}\n\t" \ 559 "vdup." #QNtype " " #QN ", %3\n\t" \ 560 instruction "\n\t" \ 561 "vstmia %1, {" #QD "}\n\t" \ 562 MOVE_to_R4_from_FPSCR \ 563 "mov %0, r4" \ 564 : "=r" (fpscr) \ 565 : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ 566 : #QD, #QM, #QN, "memory", "r4" \ 567 ); \ 568 fflush(stdout); \ 569 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 570 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 571 instruction, out[1], out[0], QMval, QNval, fpscr); \ 572 } 573 574 #define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \ 575 { \ 576 unsigned int out1[2]; \ 577 unsigned int out2[2]; \ 578 unsigned int addr = 0; \ 579 \ 580 __asm__ volatile( \ 581 "mov %4, %5\n\t" \ 582 "vldmia %4!, {" #QM "}\n\t" \ 583 "vdup." #QNtype " " #QN ", %3\n\t" \ 584 instruction "\n\t" \ 585 "vstmia %0, {" #QM "}\n\t" \ 586 "vstmia %1, {" #QN "}\n\t" \ 587 : \ 588 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ 589 : #QM, #QN, "memory" \ 590 ); \ 591 fflush(stdout); \ 592 printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 593 " Qn (" #QNtype ")0x%08x\n", \ 594 instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \ 595 } \ 596 { \ 597 unsigned int out1[2]; \ 598 unsigned int out2[2]; \ 599 unsigned int addr = 0; \ 600 \ 601 __asm__ volatile( \ 602 "mov %4, %5\n\t" \ 603 "vldmia %4!, {" #QM "}\n\t" \ 604 "vdup." #QNtype " " #QN ", %3\n\t" \ 605 instruction "\n\t" \ 606 "vstmia %0, {" #QM "}\n\t" \ 607 "vstmia %1, {" #QN "}\n\t" \ 608 : \ 609 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ 610 : #QM, #QN, "%4", "memory" \ 611 ); \ 612 fflush(stdout); \ 613 printf("%s :: Qm 0x%08x 0x%08x Qn 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 614 " Qn (" #QNtype ")0x%08x\n", \ 615 instruction, out1[1], out1[0], out2[1], out2[0], QMval, QNval); \ 616 } 617 618 #if 0 619 #define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \ 620 { \ 621 unsigned int out[2]; \ 622 \ 623 __asm__ volatile( \ 624 "vmov.i8 " #QD ", #0x55" "\n\t" \ 625 "vdup." #QMtype " " #QM ", %1\n\t" \ 626 instruction ", #" #imm "\n\t" \ 627 "vstmia %0, {" #QD "}\n\t" \ 628 : \ 629 : "r" (out), "r" (QMval) \ 630 : #QD, #QM, "memory" \ 631 ); \ 632 fflush(stdout); \ 633 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x", \ 634 instruction, out[1], out[0], QMval); \ 635 } 636 #endif 637 638 int main(int argc, char **argv) 639 { 640 fflush(stdout); 641 printf("----- VMOV (immediate) -----\n"); 642 TESTINSN_imm("vmov.i32 d0", d0, 0x7); 643 TESTINSN_imm("vmov.i16 d1", d1, 0x7); 644 TESTINSN_imm("vmov.i8 d2", d2, 0x7); 645 TESTINSN_imm("vmov.i32 d5", d5, 0x700); 646 TESTINSN_imm("vmov.i16 d7", d7, 0x700); 647 TESTINSN_imm("vmov.i32 d10", d10, 0x70000); 648 TESTINSN_imm("vmov.i32 d12", d12, 0x7000000); 649 TESTINSN_imm("vmov.i32 d13", d13, 0x7FF); 650 TESTINSN_imm("vmov.i32 d14", d14, 0x7FFFF); 651 TESTINSN_imm("vmov.i64 d15", d15, 0xFF0000FF00FFFF00); 652 TESTINSN_imm("vmov.f32 d0", d0, 0.328125); 653 TESTINSN_imm("vmov.f32 d0", d0, -0.328125); 654 655 fflush(stdout); 656 printf("----- VMVN (immediate) -----\n"); 657 TESTINSN_imm("vmvn.i32 d0", d0, 0x7); 658 TESTINSN_imm("vmvn.i16 d1", d1, 0x7); 659 TESTINSN_imm("vmvn.i8 d2", d2, 0x7); 660 TESTINSN_imm("vmvn.i32 d5", d5, 0x700); 661 TESTINSN_imm("vmvn.i16 d7", d7, 0x700); 662 TESTINSN_imm("vmvn.i32 d10", d10, 0x70000); 663 TESTINSN_imm("vmvn.i32 d13", d13, 0x7000000); 664 TESTINSN_imm("vmvn.i32 d11", d11, 0x7FF); 665 TESTINSN_imm("vmvn.i32 d14", d14, 0x7FFFF); 666 TESTINSN_imm("vmvn.i64 d15", d15, 0xFF0000FF00FFFF00); 667 668 fflush(stdout); 669 printf("----- VORR (immediate) -----\n"); 670 TESTINSN_imm("vorr.i32 d0", d0, 0x7); 671 TESTINSN_imm("vorr.i16 d2", d2, 0x7); 672 TESTINSN_imm("vorr.i32 d8", d8, 0x700); 673 TESTINSN_imm("vorr.i16 d6", d6, 0x700); 674 TESTINSN_imm("vorr.i32 d14", d14, 0x70000); 675 TESTINSN_imm("vorr.i32 d15", d15, 0x7000000); 676 677 fflush(stdout); 678 printf("----- VBIC (immediate) -----\n"); 679 TESTINSN_imm("vbic.i32 d0", d0, 0x7); 680 TESTINSN_imm("vbic.i16 d3", d3, 0x7); 681 TESTINSN_imm("vbic.i32 d5", d5, 0x700); 682 TESTINSN_imm("vbic.i16 d8", d8, 0x700); 683 TESTINSN_imm("vbic.i32 d10", d10, 0x70000); 684 TESTINSN_imm("vbic.i32 d15", d15, 0x7000000); 685 686 fflush(stdout); 687 printf("---- VMVN (register) ----\n"); 688 TESTINSN_un("vmvn d0, d1", d0, d1, i32, 24); 689 TESTINSN_un("vmvn d10, d15", d10, d15, i32, 24); 690 TESTINSN_un("vmvn d0, d14", d0, d14, i32, 24); 691 692 fflush(stdout); 693 printf("---- VMOV (register) ----\n"); 694 TESTINSN_un("vmov d0, d1", d0, d1, i32, 24); 695 TESTINSN_un("vmov d10, d15", d10, d15, i32, 24); 696 TESTINSN_un("vmov d0, d14", d0, d14, i32, 24); 697 698 fflush(stdout); 699 printf("---- VDUP (ARM core register) (tested indirectly) ----\n"); 700 TESTINSN_un("vmov d0, d1", d0, d1, i8, 7); 701 TESTINSN_un("vmov d10, d11", d10, d11, i16, 7); 702 TESTINSN_un("vmov d0, d15", d0, d15, i32, 7); 703 704 fflush(stdout); 705 printf("---- VADD ----\n"); 706 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 707 TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 708 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 709 TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 710 TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 711 TESTINSN_bin("vadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 712 TESTINSN_bin("vadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 713 TESTINSN_bin("vadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 714 TESTINSN_bin("vadd.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 715 TESTINSN_bin("vadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 716 TESTINSN_bin("vadd.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120); 717 718 fflush(stdout); 719 printf("---- VSUB ----\n"); 720 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 721 TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 722 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 723 TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 724 TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 725 TESTINSN_bin("vsub.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 726 TESTINSN_bin("vsub.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 727 TESTINSN_bin("vsub.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 728 TESTINSN_bin("vsub.i64 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 729 TESTINSN_bin("vsub.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 730 TESTINSN_bin("vsub.i64 d13, d14, d15", d13, d14, i32, 140, d15, i32, 120); 731 732 fflush(stdout); 733 printf("---- VAND ----\n"); 734 TESTINSN_bin("vand d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 735 TESTINSN_bin("vand d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 736 TESTINSN_bin("vand d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 737 TESTINSN_bin("vand d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 738 739 fflush(stdout); 740 printf("---- VBIC ----\n"); 741 TESTINSN_bin("vbic d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 742 TESTINSN_bin("vbic d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 743 TESTINSN_bin("vbic d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 744 TESTINSN_bin("vbic d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 745 746 fflush(stdout); 747 printf("---- VORR ----\n"); 748 TESTINSN_bin("vorr d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 749 TESTINSN_bin("vorr d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 750 TESTINSN_bin("vorr d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 751 TESTINSN_bin("vorr d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 752 753 fflush(stdout); 754 printf("---- VORN ----\n"); 755 TESTINSN_bin("vorn d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 756 TESTINSN_bin("vorn d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 757 TESTINSN_bin("vorn d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 758 TESTINSN_bin("vorn d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 759 760 fflush(stdout); 761 printf("---- VEOR ----\n"); 762 TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 763 TESTINSN_bin("veor d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 764 TESTINSN_bin("veor d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 765 TESTINSN_bin("veor d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 766 TESTINSN_bin("veor d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 767 TESTINSN_bin("veor d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 768 TESTINSN_bin("veor d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 769 TESTINSN_bin("veor d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 770 771 fflush(stdout); 772 printf("---- VBSL ----\n"); 773 TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 774 TESTINSN_bin("vbsl d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 775 TESTINSN_bin("vbsl d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 776 TESTINSN_bin("vbsl d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 777 TESTINSN_bin("vbsl d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 778 TESTINSN_bin("vbsl d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 779 TESTINSN_bin("vbsl d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 780 TESTINSN_bin("vbsl d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 781 782 fflush(stdout); 783 printf("---- VBIT ----\n"); 784 TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 785 TESTINSN_bin("vbit d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 786 TESTINSN_bin("vbit d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 787 TESTINSN_bin("vbit d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 788 TESTINSN_bin("vbit d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 789 TESTINSN_bin("vbit d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 790 TESTINSN_bin("vbit d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 791 TESTINSN_bin("vbit d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 792 793 fflush(stdout); 794 printf("---- VBIF ----\n"); 795 TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x77); 796 TESTINSN_bin("vbif d4, d6, d5", d4, d6, i8, 0xff, d5, i16, 0x57); 797 TESTINSN_bin("vbif d10, d11, d12", d10, d11, i8, 0xfe, d12, i8, 0xed); 798 TESTINSN_bin("vbif d15, d15, d15", d15, d15, i8, 0xff, d15, i8, 0xff); 799 TESTINSN_bin("vbif d0, d1, d2", d0, d1, i8, 0x24, d2, i16, 0x73); 800 TESTINSN_bin("vbif d7, d3, d0", d7, d3, i8, 0x24, d0, i16, 0xff); 801 TESTINSN_bin("vbif d4, d4, d4", d4, d4, i16, 0xff, d4, i16, 0xff); 802 TESTINSN_bin("vbif d2, d3, d15", d2, d3, i32, 0x24, d15, i32, 0x1f); 803 804 fflush(stdout); 805 printf("---- VEXT ----\n"); 806 TESTINSN_bin("vext.8 d0, d1, d2, #0", d0, d1, i8, 0x77, d2, i8, 0xff); 807 TESTINSN_bin("vext.8 d0, d1, d2, #1", d0, d1, i8, 0x77, d2, i8, 0xff); 808 TESTINSN_bin("vext.8 d0, d1, d2, #7", d0, d1, i8, 0x77, d2, i8, 0xff); 809 TESTINSN_bin("vext.8 d0, d1, d2, #6", d0, d1, i8, 0x77, d2, i8, 0xff); 810 TESTINSN_bin("vext.8 d10, d11, d12, #4", d10, d11, i8, 0x77, d12, i8, 0xff); 811 TESTINSN_bin("vext.8 d0, d5, d15, #5", d0, d5, i8, 0x77, d15, i8, 0xff); 812 813 fflush(stdout); 814 printf("---- VHADD ----\n"); 815 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 816 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 817 TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 818 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 819 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121); 820 TESTINSN_bin("vhadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 821 TESTINSN_bin("vhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 822 TESTINSN_bin("vhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 823 TESTINSN_bin("vhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 824 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 825 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 826 TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 827 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 828 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i8, 141, d2, i8, 121); 829 TESTINSN_bin("vhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 830 TESTINSN_bin("vhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 831 TESTINSN_bin("vhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 832 TESTINSN_bin("vhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 833 834 fflush(stdout); 835 printf("---- VHSUB ----\n"); 836 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 837 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 838 TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 839 TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 840 TESTINSN_bin("vhsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 841 TESTINSN_bin("vhsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 842 TESTINSN_bin("vhsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 843 TESTINSN_bin("vhsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 844 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 845 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 846 TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 847 TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 848 TESTINSN_bin("vhsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 849 TESTINSN_bin("vhsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 850 TESTINSN_bin("vhsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 851 TESTINSN_bin("vhsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 852 853 fflush(stdout); 854 printf("---- VQADD ----\n"); 855 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 856 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 857 TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 858 TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 859 TESTINSN_bin_q("vqadd.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 860 TESTINSN_bin_q("vqadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 861 TESTINSN_bin_q("vqadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 862 TESTINSN_bin_q("vqadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 863 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 864 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 865 TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 866 TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 867 TESTINSN_bin_q("vqadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 868 TESTINSN_bin_q("vqadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 869 TESTINSN_bin_q("vqadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 870 TESTINSN_bin_q("vqadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 871 872 fflush(stdout); 873 printf("---- VQSUB ----\n"); 874 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 875 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 876 TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 877 TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 878 TESTINSN_bin_q("vqsub.s8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 879 TESTINSN_bin_q("vqsub.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 880 TESTINSN_bin_q("vqsub.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 881 TESTINSN_bin_q("vqsub.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 882 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 883 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 884 TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 885 TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 886 TESTINSN_bin_q("vqsub.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 887 TESTINSN_bin_q("vqsub.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 888 TESTINSN_bin_q("vqsub.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 889 TESTINSN_bin_q("vqsub.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 890 891 fflush(stdout); 892 printf("---- VRHADD ----\n"); 893 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 894 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 895 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 896 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 897 TESTINSN_bin("vrhadd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 898 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 899 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 900 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 901 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 902 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 903 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 904 TESTINSN_bin("vrhadd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 905 TESTINSN_bin("vrhadd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 906 TESTINSN_bin("vrhadd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 907 TESTINSN_bin("vrhadd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 908 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 909 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 910 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 911 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 912 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 913 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 914 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 915 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 916 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 917 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 918 TESTINSN_bin("vrhadd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 919 TESTINSN_bin("vrhadd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 920 TESTINSN_bin("vrhadd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 921 TESTINSN_bin("vrhadd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 922 923 fflush(stdout); 924 printf("---- VCGT ----\n"); 925 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 926 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 927 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 928 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 929 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 930 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 931 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 932 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 933 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 934 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 935 TESTINSN_bin("vcgt.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 936 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2); 937 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 938 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 939 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 940 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 941 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 942 TESTINSN_bin("vcgt.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2); 943 TESTINSN_bin("vcgt.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 944 TESTINSN_bin("vcgt.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 945 TESTINSN_bin("vcgt.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 946 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 947 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 948 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 949 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 950 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 951 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 952 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 953 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 954 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 955 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 956 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 957 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 958 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 959 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 960 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 961 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 962 TESTINSN_bin("vcgt.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 963 TESTINSN_bin("vcgt.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 964 TESTINSN_bin("vcgt.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 965 TESTINSN_bin("vcgt.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 966 967 fflush(stdout); 968 printf("---- VCGE ----\n"); 969 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 970 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 971 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 972 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 973 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 974 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 975 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 976 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 977 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 978 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 979 TESTINSN_bin("vcge.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 140); 980 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 3, d5, i32, (1 << 31) + 2); 981 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 982 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 983 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 984 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 985 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 986 TESTINSN_bin("vcge.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 2, d5, i32, (1 << 31) + 2); 987 TESTINSN_bin("vcge.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 988 TESTINSN_bin("vcge.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 989 TESTINSN_bin("vcge.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 990 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 991 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 992 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 993 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 994 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 995 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 996 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 997 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 998 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 999 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1000 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 1001 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 1002 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 3, d2, i32, (1 << 31) + 2); 1003 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1004 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1005 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1006 TESTINSN_bin("vcge.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 1007 TESTINSN_bin("vcge.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 1008 TESTINSN_bin("vcge.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 2, d2, i32, (1 << 31) + 2); 1009 TESTINSN_bin("vcge.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1010 1011 fflush(stdout); 1012 printf("---- VSHL (register) ----\n"); 1013 TESTINSN_bin("vshl.s8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1); 1014 TESTINSN_bin("vshl.s8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8); 1015 TESTINSN_bin("vshl.s8 d10, d31, d7", d10, d31, i32, 24, d7, i32, 4); 1016 TESTINSN_bin("vshl.s16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2); 1017 TESTINSN_bin("vshl.s16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1); 1018 TESTINSN_bin("vshl.s16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11); 1019 TESTINSN_bin("vshl.s32 d9, d12, d19", d9, d12, i32, (1 << 31) + 2, d19, i32, 2); 1020 TESTINSN_bin("vshl.s32 d11, d22, d0", d11, d22, i32, -1, d0, i32, 12); 1021 TESTINSN_bin("vshl.s32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21); 1022 TESTINSN_bin("vshl.s64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20); 1023 TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4); 1024 TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30); 1025 TESTINSN_bin("vshl.s64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab); 1026 TESTINSN_bin("vshl.s64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5); 1027 TESTINSN_bin("vshl.s64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff); 1028 TESTINSN_bin("vshl.u8 d0, d1, d2", d0, d1, i32, 24, d2, i32, 1); 1029 TESTINSN_bin("vshl.u8 d8, d1, d12", d8, d1, i32, 24, d12, i32, 8); 1030 TESTINSN_bin("vshl.u8 d10, d11, d7", d10, d11, i32, 24, d7, i32, 4); 1031 TESTINSN_bin("vshl.u16 d3, d8, d11", d3, d8, i32, 14, d11, i32, 2); 1032 TESTINSN_bin("vshl.u16 d5, d12, d14", d5, d12, i32, (1 << 30), d14, i32, 1); 1033 TESTINSN_bin("vshl.u16 d15, d2, d1", d15, d2, i32, (1 << 30), d1, i32, 11); 1034 TESTINSN_bin("vshl.u32 d9, d12, d15", d9, d12, i32, (1 << 31) + 2, d15, i32, 2); 1035 TESTINSN_bin("vshl.u32 d11, d2, d0", d11, d2, i32, -1, d0, i32, 12); 1036 TESTINSN_bin("vshl.u32 d5, d2, d3", d5, d2, i32, (1 << 30), d3, i32, 21); 1037 TESTINSN_bin("vshl.u64 d15, d12, d4", d15, d12, i32, 5, d4, i32, 20); 1038 TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 4); 1039 TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 30); 1040 TESTINSN_bin("vshl.u64 d15, d2, d4", d15, d2, i32, 0xffabcd59, d4, i32, 0xabcdefab); 1041 TESTINSN_bin("vshl.u64 d8, d2, d4", d8, d2, i32, 15, d4, i32, 0x400bb5); 1042 TESTINSN_bin("vshl.u64 d5, d12, d4", d5, d12, i32, (1 << 31) + 1, d4, i32, 0x30abcff); 1043 1044 fflush(stdout); 1045 printf("---- VQSHL (register) ----\n"); 1046 TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1047 TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1048 TESTINSN_bin_q("vqshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1049 TESTINSN_bin_q("vqshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1050 TESTINSN_bin_q("vqshl.s64 d13, d14, d31", d13, d14, i32, -17, d31, i32, -26); 1051 TESTINSN_bin_q("vqshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1052 TESTINSN_bin_q("vqshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1053 TESTINSN_bin_q("vqshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1054 TESTINSN_bin_q("vqshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1055 TESTINSN_bin_q("vqshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1056 TESTINSN_bin_q("vqshl.s32 d9, d30, d11", d9, d30, i32, (1 << 31) + 8, d11, i32, -1); 1057 TESTINSN_bin_q("vqshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1058 TESTINSN_bin_q("vqshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1059 TESTINSN_bin_q("vqshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1060 TESTINSN_bin_q("vqshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 1061 TESTINSN_bin_q("vqshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1062 TESTINSN_bin_q("vqshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1063 TESTINSN_bin_q("vqshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1064 TESTINSN_bin_q("vqshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1065 TESTINSN_bin_q("vqshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1066 TESTINSN_bin_q("vqshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1067 TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1068 TESTINSN_bin_q("vqshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1069 TESTINSN_bin_q("vqshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1070 TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1071 TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1072 TESTINSN_bin_q("vqshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1073 TESTINSN_bin_q("vqshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1074 TESTINSN_bin_q("vqshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1075 TESTINSN_bin_q("vqshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1076 TESTINSN_bin_q("vqshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1077 TESTINSN_bin_q("vqshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1078 TESTINSN_bin_q("vqshl.u32 d12, d31, d13", d12, d31, i32, -120, d13, i32, -9); 1079 TESTINSN_bin_q("vqshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1080 TESTINSN_bin_q("vqshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1081 TESTINSN_bin_q("vqshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1082 TESTINSN_bin_q("vqshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1083 TESTINSN_bin_q("vqshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1084 TESTINSN_bin_q("vqshl.u16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 1085 TESTINSN_bin_q("vqshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1086 TESTINSN_bin_q("vqshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1087 TESTINSN_bin_q("vqshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1088 TESTINSN_bin_q("vqshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1089 TESTINSN_bin_q("vqshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1090 TESTINSN_bin_q("vqshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1091 TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1092 TESTINSN_bin_q("vqshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1093 TESTINSN_bin_q("vqshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1094 1095 fflush(stdout); 1096 printf("---- VQSHL / VQSHLU (immediate) ----\n"); 1097 TESTINSN_un_q("vqshl.s64 d0, d1, #1", d0, d1, i32, 1); 1098 TESTINSN_un_q("vqshl.s64 d31, d30, #1", d31, d30, i32, -127); 1099 TESTINSN_un_q("vqshl.s64 d5, d4, #0", d5, d4, i32, -127); 1100 TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, 16); 1101 TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, 16); 1102 TESTINSN_un_q("vqshl.s64 d5, d4, #59", d5, d4, i32, 16); 1103 TESTINSN_un_q("vqshl.s64 d5, d4, #58", d5, d4, i32, 16); 1104 TESTINSN_un_q("vqshl.s64 d5, d4, #17", d5, d4, i32, 16); 1105 TESTINSN_un_q("vqshl.s64 d5, d4, #63", d5, d4, i32, -1); 1106 TESTINSN_un_q("vqshl.s64 d5, d4, #60", d5, d4, i32, -1); 1107 TESTINSN_un_q("vqshl.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1108 TESTINSN_un_q("vqshl.s32 d10, d11, #1", d10, d11, i32, 1); 1109 TESTINSN_un_q("vqshl.s32 d31, d30, #1", d31, d30, i32, -127); 1110 TESTINSN_un_q("vqshl.s32 d5, d4, #0", d5, d4, i32, -127); 1111 TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, 16); 1112 TESTINSN_un_q("vqshl.s32 d5, d4, #28", d5, d4, i32, 16); 1113 TESTINSN_un_q("vqshl.s32 d5, d4, #27", d5, d4, i32, 16); 1114 TESTINSN_un_q("vqshl.s32 d5, d4, #26", d5, d4, i32, 16); 1115 TESTINSN_un_q("vqshl.s32 d5, d4, #17", d5, d4, i32, 16); 1116 TESTINSN_un_q("vqshl.s32 d5, d4, #31", d5, d4, i32, -1); 1117 TESTINSN_un_q("vqshl.s32 d5, d4, #29", d5, d4, i32, -1); 1118 TESTINSN_un_q("vqshl.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1119 TESTINSN_un_q("vqshl.s16 d9, d8, #1", d9, d8, i32, 1); 1120 TESTINSN_un_q("vqshl.s16 d31, d30, #1", d31, d30, i32, -127); 1121 TESTINSN_un_q("vqshl.s16 d5, d4, #0", d5, d4, i32, -127); 1122 TESTINSN_un_q("vqshl.s16 d9, d8, #15", d9, d8, i32, 16); 1123 TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, 16); 1124 TESTINSN_un_q("vqshl.s16 d5, d4, #11", d5, d4, i32, 16); 1125 TESTINSN_un_q("vqshl.s16 d5, d4, #10", d5, d4, i32, 16); 1126 TESTINSN_un_q("vqshl.s16 d5, d4, #4", d5, d4, i32, 16); 1127 TESTINSN_un_q("vqshl.s16 d5, d4, #15", d5, d4, i32, -1); 1128 TESTINSN_un_q("vqshl.s16 d5, d4, #12", d5, d4, i32, -1); 1129 TESTINSN_un_q("vqshl.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1130 TESTINSN_un_q("vqshl.s8 d0, d1, #1", d0, d1, i32, 1); 1131 TESTINSN_un_q("vqshl.s8 d31, d30, #1", d31, d30, i32, -127); 1132 TESTINSN_un_q("vqshl.s8 d5, d4, #0", d5, d4, i32, -127); 1133 TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, 16); 1134 TESTINSN_un_q("vqshl.s8 d25, d4, #4", d25, d4, i32, 16); 1135 TESTINSN_un_q("vqshl.s8 d5, d4, #3", d5, d4, i32, 16); 1136 TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, 16); 1137 TESTINSN_un_q("vqshl.s8 d5, d4, #1", d5, d4, i32, 16); 1138 TESTINSN_un_q("vqshl.s8 d5, d4, #7", d5, d4, i32, -1); 1139 TESTINSN_un_q("vqshl.s8 d5, d4, #5", d5, d4, i32, -1); 1140 TESTINSN_un_q("vqshl.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 1141 TESTINSN_un_q("vqshl.u64 d0, d1, #1", d0, d1, i32, 1); 1142 TESTINSN_un_q("vqshl.u64 d31, d30, #1", d31, d30, i32, -127); 1143 TESTINSN_un_q("vqshl.u64 d5, d4, #0", d5, d4, i32, -127); 1144 TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, 16); 1145 TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, 16); 1146 TESTINSN_un_q("vqshl.u64 d5, d4, #59", d5, d4, i32, 16); 1147 TESTINSN_un_q("vqshl.u64 d5, d4, #58", d5, d4, i32, 16); 1148 TESTINSN_un_q("vqshl.u64 d5, d4, #17", d5, d4, i32, 16); 1149 TESTINSN_un_q("vqshl.u64 d5, d4, #63", d5, d4, i32, -1); 1150 TESTINSN_un_q("vqshl.u64 d5, d4, #60", d5, d4, i32, -1); 1151 TESTINSN_un_q("vqshl.u64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1152 TESTINSN_un_q("vqshl.u32 d10, d11, #1", d10, d11, i32, 1); 1153 TESTINSN_un_q("vqshl.u32 d31, d30, #1", d31, d30, i32, -127); 1154 TESTINSN_un_q("vqshl.u32 d5, d4, #0", d5, d4, i32, -127); 1155 TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, 16); 1156 TESTINSN_un_q("vqshl.u32 d5, d4, #28", d5, d4, i32, 16); 1157 TESTINSN_un_q("vqshl.u32 d5, d4, #27", d5, d4, i32, 16); 1158 TESTINSN_un_q("vqshl.u32 d5, d4, #26", d5, d4, i32, 16); 1159 TESTINSN_un_q("vqshl.u32 d5, d4, #17", d5, d4, i32, 16); 1160 TESTINSN_un_q("vqshl.u32 d5, d4, #31", d5, d4, i32, -1); 1161 TESTINSN_un_q("vqshl.u32 d5, d4, #29", d5, d4, i32, -1); 1162 TESTINSN_un_q("vqshl.u32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1163 TESTINSN_un_q("vqshl.u16 d9, d8, #1", d9, d8, i32, 1); 1164 TESTINSN_un_q("vqshl.u16 d31, d30, #1", d31, d30, i32, -127); 1165 TESTINSN_un_q("vqshl.u16 d5, d4, #0", d5, d4, i32, -127); 1166 TESTINSN_un_q("vqshl.u16 d9, d8, #15", d9, d8, i32, 16); 1167 TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, 16); 1168 TESTINSN_un_q("vqshl.u16 d5, d4, #11", d5, d4, i32, 16); 1169 TESTINSN_un_q("vqshl.u16 d5, d4, #10", d5, d4, i32, 16); 1170 TESTINSN_un_q("vqshl.u16 d5, d4, #4", d5, d4, i32, 16); 1171 TESTINSN_un_q("vqshl.u16 d5, d4, #15", d5, d4, i32, -1); 1172 TESTINSN_un_q("vqshl.u16 d5, d4, #12", d5, d4, i32, -1); 1173 TESTINSN_un_q("vqshl.u16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1174 TESTINSN_un_q("vqshl.u8 d0, d1, #1", d0, d1, i32, 1); 1175 TESTINSN_un_q("vqshl.u8 d31, d30, #1", d31, d30, i32, -127); 1176 TESTINSN_un_q("vqshl.u8 d5, d4, #0", d5, d4, i32, -127); 1177 TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, 16); 1178 TESTINSN_un_q("vqshl.u8 d5, d4, #4", d5, d4, i32, 16); 1179 TESTINSN_un_q("vqshl.u8 d5, d4, #3", d5, d4, i32, 16); 1180 TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, 16); 1181 TESTINSN_un_q("vqshl.u8 d5, d4, #1", d5, d4, i32, 16); 1182 TESTINSN_un_q("vqshl.u8 d5, d4, #7", d5, d4, i32, -1); 1183 TESTINSN_un_q("vqshl.u8 d5, d4, #5", d5, d4, i32, -1); 1184 TESTINSN_un_q("vqshl.u8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 1185 TESTINSN_un_q("vqshlu.s64 d0, d1, #1", d0, d1, i32, 1); 1186 TESTINSN_un_q("vqshlu.s64 d31, d30, #1", d31, d30, i32, -127); 1187 TESTINSN_un_q("vqshlu.s64 d5, d4, #0", d5, d4, i32, -127); 1188 TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, 16); 1189 TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, 16); 1190 TESTINSN_un_q("vqshlu.s64 d5, d4, #59", d5, d4, i32, 16); 1191 TESTINSN_un_q("vqshlu.s64 d5, d4, #58", d5, d4, i32, 16); 1192 TESTINSN_un_q("vqshlu.s64 d5, d4, #17", d5, d4, i32, 16); 1193 TESTINSN_un_q("vqshlu.s64 d5, d4, #63", d5, d4, i32, -1); 1194 TESTINSN_un_q("vqshlu.s64 d5, d4, #60", d5, d4, i32, -1); 1195 TESTINSN_un_q("vqshlu.s64 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1196 TESTINSN_un_q("vqshlu.s32 d10, d11, #1", d10, d11, i32, 1); 1197 TESTINSN_un_q("vqshlu.s32 d31, d30, #1", d31, d30, i32, -127); 1198 TESTINSN_un_q("vqshlu.s32 d5, d4, #0", d5, d4, i32, -127); 1199 TESTINSN_un_q("vqshlu.s32 d5, d4, #31", d5, d4, i32, 16); 1200 TESTINSN_un_q("vqshlu.s32 d25, d24, #28", d25, d24, i32, 16); 1201 TESTINSN_un_q("vqshlu.s32 d5, d4, #27", d5, d4, i32, 16); 1202 TESTINSN_un_q("vqshlu.s32 d5, d4, #26", d5, d4, i32, 16); 1203 TESTINSN_un_q("vqshlu.s32 d5, d4, #17", d5, d4, i32, 16); 1204 TESTINSN_un_q("vqshlu.s32 d5, d24, #31", d5, d24, i32, -1); 1205 TESTINSN_un_q("vqshlu.s32 d5, d4, #29", d5, d4, i32, -1); 1206 TESTINSN_un_q("vqshlu.s32 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1207 TESTINSN_un_q("vqshlu.s16 d9, d8, #1", d9, d8, i32, 1); 1208 TESTINSN_un_q("vqshlu.s16 d31, d30, #1", d31, d30, i32, -127); 1209 TESTINSN_un_q("vqshlu.s16 d5, d4, #0", d5, d4, i32, -127); 1210 TESTINSN_un_q("vqshlu.s16 d9, d8, #15", d9, d8, i32, 16); 1211 TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, 16); 1212 TESTINSN_un_q("vqshlu.s16 d5, d4, #11", d5, d4, i32, 16); 1213 TESTINSN_un_q("vqshlu.s16 d5, d4, #10", d5, d4, i32, 16); 1214 TESTINSN_un_q("vqshlu.s16 d5, d4, #4", d5, d4, i32, 16); 1215 TESTINSN_un_q("vqshlu.s16 d15, d14, #15", d15, d14, i32, -1); 1216 TESTINSN_un_q("vqshlu.s16 d5, d4, #12", d5, d4, i32, -1); 1217 TESTINSN_un_q("vqshlu.s16 d5, d4, #7", d5, d4, i32, (1 << 31) + 2); 1218 TESTINSN_un_q("vqshlu.s8 d0, d1, #1", d0, d1, i32, 1); 1219 TESTINSN_un_q("vqshlu.s8 d31, d30, #1", d31, d30, i32, -127); 1220 TESTINSN_un_q("vqshlu.s8 d5, d4, #0", d5, d4, i32, -127); 1221 TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, 16); 1222 TESTINSN_un_q("vqshlu.s8 d5, d4, #4", d5, d4, i32, 16); 1223 TESTINSN_un_q("vqshlu.s8 d5, d4, #3", d5, d4, i32, 16); 1224 TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, 16); 1225 TESTINSN_un_q("vqshlu.s8 d5, d4, #1", d5, d4, i32, 16); 1226 TESTINSN_un_q("vqshlu.s8 d5, d4, #7", d5, d4, i32, -1); 1227 TESTINSN_un_q("vqshlu.s8 d5, d4, #5", d5, d4, i32, -1); 1228 TESTINSN_un_q("vqshlu.s8 d5, d4, #2", d5, d4, i32, (1 << 31) + 2); 1229 1230 fflush(stdout); 1231 printf("---- VQRSHL (register) ----\n"); 1232 TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1233 TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1234 TESTINSN_bin_q("vqrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1235 TESTINSN_bin_q("vqrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1236 TESTINSN_bin_q("vqrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1237 TESTINSN_bin_q("vqrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1238 TESTINSN_bin_q("vqrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1239 TESTINSN_bin_q("vqrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1240 TESTINSN_bin_q("vqrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1241 TESTINSN_bin_q("vqrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1242 TESTINSN_bin_q("vqrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1243 TESTINSN_bin_q("vqrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1244 TESTINSN_bin_q("vqrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1245 TESTINSN_bin_q("vqrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1246 TESTINSN_bin_q("vqrshl.s16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 1247 TESTINSN_bin_q("vqrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1248 TESTINSN_bin_q("vqrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1249 TESTINSN_bin_q("vqrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1250 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1251 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1252 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1253 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1254 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1255 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1256 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1257 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1258 TESTINSN_bin_q("vqrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1259 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1260 TESTINSN_bin_q("vqrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1261 TESTINSN_bin_q("vqrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, 0); 1262 TESTINSN_bin_q("vqrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1263 TESTINSN_bin_q("vqrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1264 TESTINSN_bin_q("vqrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1265 TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1266 TESTINSN_bin_q("vqrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1267 TESTINSN_bin_q("vqrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1268 TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1269 TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1270 TESTINSN_bin_q("vqrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1271 TESTINSN_bin_q("vqrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1272 TESTINSN_bin_q("vqrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1273 TESTINSN_bin_q("vqrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1274 TESTINSN_bin_q("vqrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1275 TESTINSN_bin_q("vqrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1276 TESTINSN_bin_q("vqrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1277 TESTINSN_bin_q("vqrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1278 TESTINSN_bin_q("vqrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1279 TESTINSN_bin_q("vqrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1280 TESTINSN_bin_q("vqrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1281 TESTINSN_bin_q("vqrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1282 TESTINSN_bin_q("vqrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 1283 TESTINSN_bin_q("vqrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1284 TESTINSN_bin_q("vqrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1285 TESTINSN_bin_q("vqrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1286 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1287 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1288 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1289 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1290 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1291 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1292 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1293 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1294 TESTINSN_bin_q("vqrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1295 TESTINSN_bin_q("vqrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1296 TESTINSN_bin_q("vqrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1297 TESTINSN_bin_q("vqrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1298 TESTINSN_bin_q("vqrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1299 TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1300 TESTINSN_bin_q("vqrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1301 TESTINSN_bin_q("vqrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1302 1303 fflush(stdout); 1304 printf("---- VRSHL (register) ----\n"); 1305 TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1306 TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1307 TESTINSN_bin("vrshl.s64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1308 TESTINSN_bin("vrshl.s64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1309 TESTINSN_bin("vrshl.s64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1310 TESTINSN_bin("vrshl.s64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1311 TESTINSN_bin("vrshl.s32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1312 TESTINSN_bin("vrshl.s32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1313 TESTINSN_bin("vrshl.s32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1314 TESTINSN_bin("vrshl.s32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1315 TESTINSN_bin("vrshl.s32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1316 TESTINSN_bin("vrshl.s32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1317 TESTINSN_bin("vrshl.s16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1318 TESTINSN_bin("vrshl.s16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1319 TESTINSN_bin("vrshl.s16 d0, d11, d2", d0, d11, i32, (1 << 31) + 256, d2, i32, -1); 1320 TESTINSN_bin("vrshl.s16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1321 TESTINSN_bin("vrshl.s16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1322 TESTINSN_bin("vrshl.s16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1323 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1324 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1325 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1326 TESTINSN_bin("vrshl.s8 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 1327 TESTINSN_bin("vrshl.s16 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 1328 TESTINSN_bin("vrshl.s32 d2, d7, d31", d2, d7, i32, -1, d31, i32, -1); 1329 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1330 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1331 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -2, d11, i32, -1); 1332 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1333 TESTINSN_bin("vrshl.s16 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1334 TESTINSN_bin("vrshl.s32 d2, d7, d11", d2, d7, i32, -1, d11, i32, 0); 1335 TESTINSN_bin("vrshl.s8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1336 TESTINSN_bin("vrshl.s8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1337 TESTINSN_bin("vrshl.s8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1338 TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1339 TESTINSN_bin("vrshl.s8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1340 TESTINSN_bin("vrshl.s8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1341 TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 1, d2, i32, 1); 1342 TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, 1); 1343 TESTINSN_bin("vrshl.u64 d3, d4, d5", d3, d4, i32, -127, d5, i32, -3); 1344 TESTINSN_bin("vrshl.u64 d0, d1, d2", d0, d1, i32, 16, d2, i32, 14); 1345 TESTINSN_bin("vrshl.u64 d13, d14, d15", d13, d14, i32, -17, d15, i32, -26); 1346 TESTINSN_bin("vrshl.u64 d7, d8, d2", d7, d8, i32, 24, d2, i32, -60); 1347 TESTINSN_bin("vrshl.u32 d3, d4, d15", d3, d4, i32, 127, d15, i32, -30); 1348 TESTINSN_bin("vrshl.u32 d2, d8, d4", d2, d8, i32, -11, d4, i32, -4); 1349 TESTINSN_bin("vrshl.u32 d12, d11, d13", d12, d11, i32, -120, d13, i32, -9); 1350 TESTINSN_bin("vrshl.u32 d0, d1, d2", d0, d1, i32, 34, d2, i32, -7); 1351 TESTINSN_bin("vrshl.u32 d9, d10, d11", d9, d10, i32, (1 << 31) + 8, d11, i32, -1); 1352 TESTINSN_bin("vrshl.u32 d13, d3, d5", d13, d3, i32, (1 << 27), d5, i32, 3); 1353 TESTINSN_bin("vrshl.u16 d11, d10, d2", d11, d10, i32, (1 << 31), d2, i32, -31); 1354 TESTINSN_bin("vrshl.u16 d3, d14, d7", d3, d14, i32, (1 << 31), d7, i32, -3); 1355 TESTINSN_bin("vrshl.u16 d0, d31, d2", d0, d31, i32, (1 << 31) + 256, d2, i32, -1); 1356 TESTINSN_bin("vrshl.u16 d1, d2, d3", d1, d2, i32, (1 << 31) + 256, d3, i32, -31); 1357 TESTINSN_bin("vrshl.u16 d3, d4, d5", d3, d4, i32, (1 << 31) + (1 << 29), d5, i32, -13); 1358 TESTINSN_bin("vrshl.u16 d0, d15, d2", d0, d15, i32, 1, d2, i32, 30); 1359 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, 40); 1360 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1361 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1362 TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1363 TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, 0xf, d11, i32, -1); 1364 TESTINSN_bin("vrshl.u8 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1365 TESTINSN_bin("vrshl.u16 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1366 TESTINSN_bin("vrshl.u32 d2, d7, d11", d2, d7, i32, -1, d11, i32, -1); 1367 TESTINSN_bin("vrshl.u8 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 1368 TESTINSN_bin("vrshl.u16 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 1369 TESTINSN_bin("vrshl.u32 d2, d7, d31", d2, d7, i32, -2, d31, i32, -1); 1370 TESTINSN_bin("vrshl.u8 d13, d1, d2", d13, d1, i32, -4, d2, i32, 30); 1371 TESTINSN_bin("vrshl.u8 d3, d7, d5", d3, d7, i32, (1 << 31) + 11, d5, i32, 3); 1372 TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, (1 << 16), d12, i32, 16); 1373 TESTINSN_bin("vrshl.u8 d6, d7, d8", d6, d7, i32, (1 << 30), d8, i32, 2); 1374 TESTINSN_bin("vrshl.u8 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1375 1376 fflush(stdout); 1377 printf("---- VMAX (integer) ----\n"); 1378 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 1379 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 1380 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1381 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1382 TESTINSN_bin("vmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 1383 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1384 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1385 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1386 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1387 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1388 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1389 TESTINSN_bin("vmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1390 TESTINSN_bin("vmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1391 TESTINSN_bin("vmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1392 TESTINSN_bin("vmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1393 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1394 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 1395 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1396 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1397 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 1398 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1399 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1400 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1401 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1402 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1403 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1404 TESTINSN_bin("vmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1405 TESTINSN_bin("vmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1406 TESTINSN_bin("vmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1407 TESTINSN_bin("vmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1408 1409 fflush(stdout); 1410 printf("---- VMIN (integer) ----\n"); 1411 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 1412 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 1413 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1414 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 1415 TESTINSN_bin("vmin.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1416 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1417 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1418 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1419 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1420 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1421 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1422 TESTINSN_bin("vmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1423 TESTINSN_bin("vmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1424 TESTINSN_bin("vmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1425 TESTINSN_bin("vmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1426 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1427 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 1428 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1429 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 1430 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 1431 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1432 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1433 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1434 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1435 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1436 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1437 TESTINSN_bin("vmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1438 TESTINSN_bin("vmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1439 TESTINSN_bin("vmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1440 TESTINSN_bin("vmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1441 1442 fflush(stdout); 1443 printf("---- VABD ----\n"); 1444 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1445 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 1446 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120); 1447 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1448 TESTINSN_bin("vabd.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1449 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1450 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1451 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1452 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1453 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1454 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1455 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1456 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1457 TESTINSN_bin("vabd.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1458 TESTINSN_bin("vabd.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1459 TESTINSN_bin("vabd.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1460 TESTINSN_bin("vabd.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1461 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1462 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1463 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, -140, d2, i32, 120); 1464 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1465 TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1466 TESTINSN_bin("vabd.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1467 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1468 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1469 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1470 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1471 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1472 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1473 TESTINSN_bin("vabd.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1474 TESTINSN_bin("vabd.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1475 TESTINSN_bin("vabd.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1476 TESTINSN_bin("vabd.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1477 1478 fflush(stdout); 1479 printf("---- VABA ----\n"); 1480 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1481 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 1482 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1483 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1484 TESTINSN_bin("vaba.s8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1485 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1486 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1487 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1488 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1489 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1490 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1491 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1492 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1493 TESTINSN_bin("vaba.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1494 TESTINSN_bin("vaba.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1495 TESTINSN_bin("vaba.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1496 TESTINSN_bin("vaba.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1497 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 1498 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1499 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1500 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1501 TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1502 TESTINSN_bin("vaba.u8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1503 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1504 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1505 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1506 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1507 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1508 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1509 TESTINSN_bin("vaba.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1510 TESTINSN_bin("vaba.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1511 TESTINSN_bin("vaba.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1512 TESTINSN_bin("vaba.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1513 1514 fflush(stdout); 1515 printf("---- VTST ----\n"); 1516 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 1517 TESTINSN_bin("vtst.32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120); 1518 TESTINSN_bin("vtst.16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120); 1519 TESTINSN_bin("vtst.8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120); 1520 TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1521 TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 1522 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1523 TESTINSN_bin("vtst.8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2); 1524 TESTINSN_bin("vtst.16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 1525 TESTINSN_bin("vtst.32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2); 1526 TESTINSN_bin("vtst.32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1527 1528 fflush(stdout); 1529 printf("---- VCEQ ----\n"); 1530 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 1531 TESTINSN_bin("vceq.i32 d3, d4, d5", d3, d4, i32, 140, d5, i32, 120); 1532 TESTINSN_bin("vceq.i16 d6, d7, d8", d6, d7, i32, 120, d8, i32, 120); 1533 TESTINSN_bin("vceq.i8 d9, d10, d12", d9, d10, i32, 140, d12, i32, 120); 1534 TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1535 TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, (1 << 14) + 1, d2, i32, (1 << 14) + 1); 1536 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1537 TESTINSN_bin("vceq.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, 2); 1538 TESTINSN_bin("vceq.i16 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 14) + 1); 1539 TESTINSN_bin("vceq.i32 d0, d1, d2", d0, d1, i32, 1, d2, i32, (1 << 31) + 2); 1540 TESTINSN_bin("vceq.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 1541 1542 fflush(stdout); 1543 printf("---- VMLA ----\n"); 1544 TESTINSN_bin("vmla.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120); 1545 TESTINSN_bin("vmla.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, 120); 1546 TESTINSN_bin("vmla.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 1547 TESTINSN_bin("vmla.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, -120); 1548 TESTINSN_bin("vmla.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1549 TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1550 TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1551 TESTINSN_bin("vmla.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1552 TESTINSN_bin("vmla.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1553 TESTINSN_bin("vmla.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1554 TESTINSN_bin("vmla.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, -120); 1555 1556 fflush(stdout); 1557 printf("---- VMLS ----\n"); 1558 TESTINSN_bin("vmls.i32 d0, d1, d2", d0, d1, i32, -24, d2, i32, 120); 1559 TESTINSN_bin("vmls.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 1560 TESTINSN_bin("vmls.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 1561 TESTINSN_bin("vmls.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1562 TESTINSN_bin("vmls.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1563 TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1564 TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1565 TESTINSN_bin("vmls.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1566 TESTINSN_bin("vmls.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1567 TESTINSN_bin("vmls.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1568 TESTINSN_bin("vmls.i32 d10, d11, d15", d10, d11, i32, -24, d15, i32, 120); 1569 1570 fflush(stdout); 1571 printf("---- VMUL ----\n"); 1572 TESTINSN_bin("vmul.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 1573 TESTINSN_bin("vmul.i32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 1574 TESTINSN_bin("vmul.i16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 1575 TESTINSN_bin("vmul.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 1576 TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1577 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1578 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1579 TESTINSN_bin("vmul.i8 d10, d11, d12", d10, d11, i32, (1 << 25) + 0xfeb2, d12, i32, (1 << 13) + 0xdf); 1580 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1581 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 1582 TESTINSN_bin("vmul.i8 d10, d13, d12", d10, d13, i32, (1 << 5) + 1, d12, i32, (1 << 3) + 2); 1583 TESTINSN_bin("vmul.i16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1584 TESTINSN_bin("vmul.i32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1585 TESTINSN_bin("vmul.i32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 1586 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3); 1587 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f); 1588 1589 fflush(stdout); 1590 printf("---- VMUL (by scalar) ----\n"); 1591 TESTINSN_bin("vmul.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120); 1592 TESTINSN_bin("vmul.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 1593 TESTINSN_bin("vmul.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 1594 TESTINSN_bin("vmul.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1595 TESTINSN_bin("vmul.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1596 TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1597 TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 1598 TESTINSN_bin("vmul.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1599 TESTINSN_bin("vmul.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1600 1601 fflush(stdout); 1602 printf("---- VMLA (by scalar) ----\n"); 1603 TESTINSN_bin("vmla.i32 d0, d1, d4[0]", d0, d1, i32, 24, d4, i32, 120); 1604 TESTINSN_bin("vmla.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 1605 TESTINSN_bin("vmla.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 1606 TESTINSN_bin("vmla.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1607 TESTINSN_bin("vmla.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1608 TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1609 TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 1610 TESTINSN_bin("vmla.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1611 TESTINSN_bin("vmla.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1612 1613 fflush(stdout); 1614 printf("---- VMLS (by scalar) ----\n"); 1615 TESTINSN_bin("vmls.i32 d0, d1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 1616 TESTINSN_bin("vmls.i32 d31, d8, d7[1]", d31, d8, i32, 140, d7, i32, -120); 1617 TESTINSN_bin("vmls.i16 d30, d9, d7[3]", d30, d9, i32, 0x140, d7, i32, 0x120); 1618 TESTINSN_bin("vmls.i16 d4, d5, d6[2]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1619 TESTINSN_bin("vmls.i32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1620 TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1621 TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 1622 TESTINSN_bin("vmls.i16 d4, d5, d6[0]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1623 TESTINSN_bin("vmls.i32 d7, d8, d1[1]", d7, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1624 1625 fflush(stdout); 1626 printf("---- VRSHR ----\n"); 1627 TESTINSN_un("vrshr.s8 d0, d1, #0", d0, d1, i32, -1); 1628 TESTINSN_un("vrshr.s8 d0, d1, #1", d0, d1, i32, -1); 1629 TESTINSN_un("vrshr.s16 d3, d4, #2", d3, d4, i32, -0x7c); 1630 TESTINSN_un("vrshr.s32 d2, d5, #31", d2, d5, i32, -1); 1631 TESTINSN_un("vrshr.s8 d6, d7, #7", d6, d7, i32, 0xffff); 1632 TESTINSN_un("vrshr.s16 d8, d9, #12", d8, d9, i32, -10); 1633 TESTINSN_un("vrshr.s32 d10, d11, #5", d10, d11, i32, 10234); 1634 TESTINSN_un("vrshr.u8 d12, d13, #1", d12, d13, i32, -1); 1635 TESTINSN_un("vrshr.u16 d14, d15, #11", d14, d15, i32, -1); 1636 TESTINSN_un("vrshr.u32 d10, d11, #9", d10, d11, i32, 1000); 1637 TESTINSN_un("vrshr.u8 d7, d13, #7", d7, d13, i32, -1); 1638 TESTINSN_un("vrshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 1639 TESTINSN_un("vrshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 1640 TESTINSN_un("vrshr.u64 d0, d1, #42", d0, d1, i32, -1); 1641 TESTINSN_un("vrshr.s64 d6, d7, #12", d6, d7, i32, 0xfac); 1642 TESTINSN_un("vrshr.u64 d8, d4, #9", d8, d4, i32, 13560); 1643 TESTINSN_un("vrshr.s64 d9, d12, #11", d9, d12, i32, 98710); 1644 1645 fflush(stdout); 1646 printf("---- VRSRA ----\n"); 1647 TESTINSN_un("vrsra.s8 d0, d1, #1", d0, d1, i32, -1); 1648 TESTINSN_un("vrsra.s16 d3, d4, #2", d3, d4, i32, -0x7c); 1649 TESTINSN_un("vrsra.s32 d2, d5, #31", d2, d5, i32, -1); 1650 TESTINSN_un("vrsra.s8 d6, d7, #7", d6, d7, i32, 0xffff); 1651 TESTINSN_un("vrsra.s16 d8, d9, #12", d8, d9, i32, -10); 1652 TESTINSN_un("vrsra.s32 d10, d11, #5", d10, d11, i32, 10234); 1653 TESTINSN_un("vrsra.u8 d12, d13, #1", d12, d13, i32, -1); 1654 TESTINSN_un("vrsra.u16 d14, d15, #11", d14, d15, i32, -1); 1655 TESTINSN_un("vrsra.u32 d10, d11, #9", d10, d11, i32, 1000); 1656 TESTINSN_un("vrsra.u8 d7, d13, #7", d7, d13, i32, -1); 1657 TESTINSN_un("vrsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 1658 TESTINSN_un("vrsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 1659 TESTINSN_un("vrsra.u64 d0, d1, #42", d0, d1, i32, -1); 1660 TESTINSN_un("vrsra.s64 d6, d7, #12", d6, d7, i32, 0xfac); 1661 TESTINSN_un("vrsra.u64 d8, d4, #9", d8, d4, i32, 13560); 1662 TESTINSN_un("vrsra.s64 d9, d12, #11", d9, d12, i32, 98710); 1663 1664 fflush(stdout); 1665 printf("---- VSHR ----\n"); 1666 TESTINSN_un("vshr.s8 d0, d1, #0", d0, d1, i32, -1); 1667 TESTINSN_un("vshr.s8 d0, d1, #1", d0, d1, i32, -1); 1668 TESTINSN_un("vshr.s16 d3, d4, #2", d3, d4, i32, -0x7c); 1669 TESTINSN_un("vshr.s32 d2, d5, #31", d2, d5, i32, -1); 1670 TESTINSN_un("vshr.s8 d6, d7, #7", d6, d7, i32, 0xffff); 1671 TESTINSN_un("vshr.s16 d8, d9, #12", d8, d9, i32, -10); 1672 TESTINSN_un("vshr.s32 d10, d11, #5", d10, d11, i32, 10234); 1673 TESTINSN_un("vshr.u8 d12, d13, #1", d12, d13, i32, -1); 1674 TESTINSN_un("vshr.u16 d14, d15, #11", d14, d15, i32, -1); 1675 TESTINSN_un("vshr.u32 d10, d11, #9", d10, d11, i32, 1000); 1676 TESTINSN_un("vshr.u8 d7, d13, #7", d7, d13, i32, -1); 1677 TESTINSN_un("vshr.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 1678 TESTINSN_un("vshr.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 1679 TESTINSN_un("vshr.u64 d0, d1, #42", d0, d1, i32, -1); 1680 TESTINSN_un("vshr.s64 d6, d7, #12", d6, d7, i32, 0xfac); 1681 TESTINSN_un("vshr.u64 d8, d4, #9", d8, d4, i32, 13560); 1682 TESTINSN_un("vshr.s64 d9, d12, #11", d9, d12, i32, 98710); 1683 1684 fflush(stdout); 1685 printf("---- VSRA ----\n"); 1686 TESTINSN_un("vsra.s8 d0, d1, #1", d0, d1, i32, -1); 1687 TESTINSN_un("vsra.s16 d3, d4, #2", d3, d4, i32, -0x7c); 1688 TESTINSN_un("vsra.s32 d2, d5, #31", d2, d5, i32, -1); 1689 TESTINSN_un("vsra.s8 d6, d7, #7", d6, d7, i32, 0xffff); 1690 TESTINSN_un("vsra.s16 d8, d9, #12", d8, d9, i32, -10); 1691 TESTINSN_un("vsra.s32 d10, d11, #5", d10, d11, i32, 10234); 1692 TESTINSN_un("vsra.u8 d12, d13, #1", d12, d13, i32, -1); 1693 TESTINSN_un("vsra.u16 d14, d15, #11", d14, d15, i32, -1); 1694 TESTINSN_un("vsra.u32 d10, d11, #9", d10, d11, i32, 1000); 1695 TESTINSN_un("vsra.u8 d7, d13, #7", d7, d13, i32, -1); 1696 TESTINSN_un("vsra.u16 d8, d1, #5", d8, d1, i32, 0xabcf); 1697 TESTINSN_un("vsra.u32 d12, d3, #15", d12, d3, i32, -0x1b0); 1698 TESTINSN_un("vsra.u64 d0, d1, #42", d0, d1, i32, -1); 1699 TESTINSN_un("vsra.s64 d6, d7, #12", d6, d7, i32, 0xfac); 1700 TESTINSN_un("vsra.u64 d8, d4, #9", d8, d4, i32, 13560); 1701 TESTINSN_un("vsra.s64 d9, d12, #11", d9, d12, i32, 98710); 1702 1703 fflush(stdout); 1704 printf("---- VSRI ----\n"); 1705 TESTINSN_un("vsri.16 d0, d1, #1", d0, d1, i32, -1); 1706 TESTINSN_un("vsri.16 d3, d4, #2", d3, d4, i32, -0x7c); 1707 TESTINSN_un("vsri.32 d2, d5, #31", d2, d5, i32, -1); 1708 TESTINSN_un("vsri.8 d6, d7, #7", d6, d7, i32, 0xffff); 1709 TESTINSN_un("vsri.16 d8, d9, #12", d8, d9, i32, -10); 1710 TESTINSN_un("vsri.32 d10, d11, #5", d10, d11, i32, 10234); 1711 TESTINSN_un("vsri.8 d12, d13, #1", d12, d13, i32, -1); 1712 TESTINSN_un("vsri.16 d14, d15, #11", d14, d15, i32, -1); 1713 TESTINSN_un("vsri.32 d10, d11, #9", d10, d11, i32, 1000); 1714 TESTINSN_un("vsri.8 d7, d13, #7", d7, d13, i32, -1); 1715 TESTINSN_un("vsri.16 d8, d1, #5", d8, d1, i32, 0xabcf); 1716 TESTINSN_un("vsri.32 d12, d3, #15", d12, d3, i32, -0x1b0); 1717 TESTINSN_un("vsri.64 d0, d1, #42", d0, d1, i32, -1); 1718 TESTINSN_un("vsri.64 d6, d7, #12", d6, d7, i32, 0xfac); 1719 TESTINSN_un("vsri.64 d8, d4, #9", d8, d4, i32, 13560); 1720 TESTINSN_un("vsri.64 d9, d12, #11", d9, d12, i32, 98710); 1721 1722 fflush(stdout); 1723 printf("---- VMOV (ARM core register to scalar) ----\n"); 1724 TESTINSN_core_to_scalar("vmov.32 d0[0], r5", d0, r5, 13); 1725 TESTINSN_core_to_scalar("vmov.32 d1[1], r3", d1, r3, 12); 1726 TESTINSN_core_to_scalar("vmov.16 d0[0], r5", d0, r5, 13); 1727 TESTINSN_core_to_scalar("vmov.16 d2[2], r6", d2, r6, 14); 1728 TESTINSN_core_to_scalar("vmov.16 d3[3], r1", d3, r1, 17); 1729 TESTINSN_core_to_scalar("vmov.8 d0[0], r5", d0, r5, 13); 1730 TESTINSN_core_to_scalar("vmov.8 d0[1], r5", d0, r5, 13); 1731 TESTINSN_core_to_scalar("vmov.8 d0[2], r5", d0, r5, 13); 1732 TESTINSN_core_to_scalar("vmov.8 d0[3], r5", d0, r5, 13); 1733 TESTINSN_core_to_scalar("vmov.8 d0[4], r5", d0, r5, 13); 1734 TESTINSN_core_to_scalar("vmov.8 d0[5], r5", d0, r5, 13); 1735 TESTINSN_core_to_scalar("vmov.8 d0[6], r5", d0, r5, 13); 1736 TESTINSN_core_to_scalar("vmov.8 d31[7], r5", d31, r5, 13); 1737 1738 fflush(stdout); 1739 printf("---- VMOV (scalar toARM core register) ----\n"); 1740 TESTINSN_scalar_to_core("vmov.32 r5, d0[0]", r5, d0, i32, 0x11223344); 1741 TESTINSN_scalar_to_core("vmov.32 r6, d5[1]", r6, d5, i32, 0x11223344); 1742 TESTINSN_scalar_to_core("vmov.u16 r5, d31[0]", r5, d31, i32, 0x11223344); 1743 TESTINSN_scalar_to_core("vmov.u16 r5, d30[1]", r5, d30, i32, 0x11223344); 1744 TESTINSN_scalar_to_core("vmov.u16 r5, d31[2]", r5, d31, i32, 0x11223344); 1745 TESTINSN_scalar_to_core("vmov.u16 r5, d31[3]", r5, d31, i32, 0x11223344); 1746 TESTINSN_scalar_to_core("vmov.u8 r2, d4[0]", r2, d4, i32, 0x11223344); 1747 TESTINSN_scalar_to_core("vmov.u8 r2, d4[1]", r2, d4, i32, 0x11223344); 1748 TESTINSN_scalar_to_core("vmov.u8 r2, d4[2]", r2, d4, i32, 0x11223344); 1749 TESTINSN_scalar_to_core("vmov.u8 r2, d4[3]", r2, d4, i32, 0x11223344); 1750 TESTINSN_scalar_to_core("vmov.u8 r2, d4[4]", r2, d4, i32, 0x11223344); 1751 TESTINSN_scalar_to_core("vmov.u8 r2, d4[5]", r2, d4, i32, 0x11223344); 1752 TESTINSN_scalar_to_core("vmov.u8 r2, d4[6]", r2, d4, i32, 0x11223344); 1753 TESTINSN_scalar_to_core("vmov.u8 r2, d4[7]", r2, d4, i32, 0x11223344); 1754 TESTINSN_scalar_to_core("vmov.s16 r5, d31[0]", r5, d31, i8, 128); 1755 TESTINSN_scalar_to_core("vmov.s16 r5, d30[1]", r5, d30, i8, 128); 1756 TESTINSN_scalar_to_core("vmov.s16 r5, d31[2]", r5, d31, i8, 128); 1757 TESTINSN_scalar_to_core("vmov.s16 r5, d31[3]", r5, d31, i8, 128); 1758 TESTINSN_scalar_to_core("vmov.s8 r2, d4[0]", r2, d4, i8, 128); 1759 TESTINSN_scalar_to_core("vmov.s8 r2, d4[1]", r2, d4, i8, 128); 1760 TESTINSN_scalar_to_core("vmov.s8 r2, d4[2]", r2, d4, i8, 128); 1761 TESTINSN_scalar_to_core("vmov.s8 r2, d4[3]", r2, d4, i8, 128); 1762 TESTINSN_scalar_to_core("vmov.s8 r2, d4[4]", r2, d4, i8, 128); 1763 TESTINSN_scalar_to_core("vmov.s8 r2, d4[5]", r2, d4, i8, 130); 1764 TESTINSN_scalar_to_core("vmov.s8 r2, d4[6]", r2, d4, i8, 129); 1765 TESTINSN_scalar_to_core("vmov.s8 r2, d4[7]", r2, d4, i8, 131); 1766 1767 fflush(stdout); 1768 printf("---- VLD1 (multiple single elements) ----\n"); 1769 TESTINSN_VLDn("vld1.8 {d0}", d0, d0, d0, d0); 1770 TESTINSN_VLDn("vld1.16 {d0}", d0, d0, d0, d0); 1771 TESTINSN_VLDn("vld1.32 {d0}", d0, d0, d0, d0); 1772 TESTINSN_VLDn("vld1.64 {d0}", d0, d0, d0, d0); 1773 TESTINSN_VLDn("vld1.8 {d9}", d9, d9, d9, d9); 1774 TESTINSN_VLDn("vld1.16 {d17}", d17, d17, d17, d17); 1775 TESTINSN_VLDn("vld1.32 {d31}", d31, d31, d31, d31); 1776 TESTINSN_VLDn("vld1.64 {d14}", d14, d14, d14, d14); 1777 TESTINSN_VLDn("vld1.8 {d0-d1}", d0, d1, d0, d1); 1778 TESTINSN_VLDn("vld1.16 {d0-d1}", d0, d1, d0, d1); 1779 TESTINSN_VLDn("vld1.32 {d5-d6}", d5, d6, d5, d6); 1780 TESTINSN_VLDn("vld1.64 {d30-d31}", d30, d31, d30, d31); 1781 TESTINSN_VLDn("vld1.8 {d0-d2}", d0, d1, d2, d0); 1782 TESTINSN_VLDn("vld1.16 {d0-d2}", d0, d1, d2, d0); 1783 TESTINSN_VLDn("vld1.32 {d0-d2}", d0, d1, d2, d0); 1784 TESTINSN_VLDn("vld1.64 {d0-d2}", d0, d1, d2, d0); 1785 TESTINSN_VLDn("vld1.8 {d0-d3}", d0, d1, d2, d3); 1786 TESTINSN_VLDn("vld1.16 {d0-d3}", d0, d1, d2, d3); 1787 TESTINSN_VLDn("vld1.32 {d0-d3}", d0, d1, d2, d3); 1788 TESTINSN_VLDn("vld1.64 {d0-d3}", d0, d1, d2, d3); 1789 1790 fflush(stdout); 1791 printf("---- VLD1 (single element to one lane) ----\n"); 1792 TESTINSN_VLDn("vld1.32 {d0[0]}", d0, d0, d0, d0); 1793 TESTINSN_VLDn("vld1.32 {d0[1]}", d0, d0, d0, d0); 1794 TESTINSN_VLDn("vld1.16 {d1[0]}", d1, d1, d1, d1); 1795 TESTINSN_VLDn("vld1.16 {d1[1]}", d1, d1, d1, d1); 1796 TESTINSN_VLDn("vld1.16 {d1[2]}", d1, d1, d1, d1); 1797 TESTINSN_VLDn("vld1.16 {d1[3]}", d1, d1, d1, d1); 1798 TESTINSN_VLDn("vld1.8 {d0[7]}", d0, d0, d0, d0); 1799 TESTINSN_VLDn("vld1.8 {d1[6]}", d1, d1, d1, d1); 1800 TESTINSN_VLDn("vld1.8 {d0[5]}", d0, d0, d0, d0); 1801 TESTINSN_VLDn("vld1.8 {d0[4]}", d0, d0, d0, d0); 1802 TESTINSN_VLDn("vld1.8 {d20[3]}", d20, d20, d20, d20); 1803 TESTINSN_VLDn("vld1.8 {d0[2]}", d0, d0, d0, d0); 1804 TESTINSN_VLDn("vld1.8 {d17[1]}", d17, d17, d17, d17); 1805 TESTINSN_VLDn("vld1.8 {d30[0]}", d30, d30, d30, d30); 1806 1807 fflush(stdout); 1808 printf("---- VLD1 (single element to all lanes) ----\n"); 1809 TESTINSN_VLDn("vld1.8 {d0[]}", d0, d0, d0, d0); 1810 TESTINSN_VLDn("vld1.16 {d0[]}", d0, d0, d0, d0); 1811 TESTINSN_VLDn("vld1.32 {d0[]}", d0, d0, d0, d0); 1812 TESTINSN_VLDn("vld1.8 {d9[]}", d9, d9, d9, d9); 1813 TESTINSN_VLDn("vld1.16 {d17[]}", d17, d17, d17, d17); 1814 TESTINSN_VLDn("vld1.32 {d31[]}", d31, d31, d31, d31); 1815 TESTINSN_VLDn("vld1.8 {d0[],d1[]}", d0, d1, d0, d1); 1816 TESTINSN_VLDn("vld1.16 {d0[],d1[]}", d0, d1, d0, d1); 1817 TESTINSN_VLDn("vld1.32 {d5[],d6[]}", d5, d6, d5, d6); 1818 1819 fflush(stdout); 1820 printf("---- VLD2 (multiple 2-elements) ----\n"); 1821 TESTINSN_VLDn("vld2.8 {d30-d31}", d30, d31, d30, d31); 1822 TESTINSN_VLDn("vld2.16 {d0-d1}", d0, d1, d0, d1); 1823 TESTINSN_VLDn("vld2.32 {d0-d1}", d0, d1, d0, d1); 1824 TESTINSN_VLDn("vld2.8 {d10,d12}", d10, d12, d10, d12); 1825 TESTINSN_VLDn("vld2.16 {d20,d22}", d20, d22, d20, d22); 1826 TESTINSN_VLDn("vld2.32 {d0,d2}", d0, d2, d0, d2); 1827 TESTINSN_VLDn("vld2.8 {d0-d3}", d0, d1, d2, d3); 1828 TESTINSN_VLDn("vld2.16 {d20-d23}", d20, d21, d22, d23); 1829 TESTINSN_VLDn("vld2.32 {d0-d3}", d0, d1, d2, d3); 1830 1831 fflush(stdout); 1832 printf("---- VLD2 (single 2-element structure to one lane) ----\n"); 1833 TESTINSN_VLDn("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 1834 TESTINSN_VLDn("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 1835 TESTINSN_VLDn("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 1836 TESTINSN_VLDn("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 1837 TESTINSN_VLDn("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 1838 TESTINSN_VLDn("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 1839 TESTINSN_VLDn("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 1840 TESTINSN_VLDn("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 1841 TESTINSN_VLDn("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 1842 TESTINSN_VLDn("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 1843 TESTINSN_VLDn("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 1844 TESTINSN_VLDn("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 1845 TESTINSN_VLDn("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 1846 TESTINSN_VLDn("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 1847 TESTINSN_VLDn("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 1848 TESTINSN_VLDn("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 1849 TESTINSN_VLDn("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 1850 TESTINSN_VLDn("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 1851 TESTINSN_VLDn("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 1852 TESTINSN_VLDn("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 1853 1854 fflush(stdout); 1855 printf("---- VLD2 (2-elements to all lanes) ----\n"); 1856 TESTINSN_VLDn("vld2.8 {d0[],d1[]}", d0, d1, d0, d1); 1857 TESTINSN_VLDn("vld2.16 {d0[],d1[]}", d0, d1, d0, d1); 1858 TESTINSN_VLDn("vld2.32 {d0[],d1[]}", d0, d1, d0, d1); 1859 TESTINSN_VLDn("vld2.8 {d9[],d11[]}", d9, d11, d9, d11); 1860 TESTINSN_VLDn("vld2.16 {d17[],d18[]}", d17, d18, d17, d18); 1861 TESTINSN_VLDn("vld2.32 {d30[],d31[]}", d30, d31, d30, d31); 1862 TESTINSN_VLDn("vld2.8 {d0[],d2[]}", d0, d2, d0, d2); 1863 TESTINSN_VLDn("vld2.16 {d0[],d2[]}", d0, d2, d0, d2); 1864 TESTINSN_VLDn("vld2.32 {d5[],d7[]}", d5, d7, d5, d7); 1865 1866 fflush(stdout); 1867 printf("---- VLD3 (multiple 3-elements) ----\n"); 1868 TESTINSN_VLDn("vld3.8 {d20-d22}", d20, d21, d22, d20); 1869 TESTINSN_VLDn("vld3.16 {d0-d2}", d0, d1, d2, d0); 1870 TESTINSN_VLDn("vld3.32 {d0-d2}", d0, d1, d2, d0); 1871 TESTINSN_VLDn("vld3.8 {d0,d2,d4}", d0, d2, d4, d0); 1872 TESTINSN_VLDn("vld3.16 {d20,d22,d24}", d20, d22, d24, d20); 1873 TESTINSN_VLDn("vld3.32 {d0,d2,d4}", d0, d2, d4, d0); 1874 1875 fflush(stdout); 1876 printf("---- VLD3 (single 3-element structure to one lane) ----\n"); 1877 TESTINSN_VLDn("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 1878 TESTINSN_VLDn("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 1879 TESTINSN_VLDn("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 1880 TESTINSN_VLDn("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 1881 TESTINSN_VLDn("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 1882 TESTINSN_VLDn("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 1883 TESTINSN_VLDn("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 1884 TESTINSN_VLDn("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 1885 TESTINSN_VLDn("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 1886 TESTINSN_VLDn("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 1887 TESTINSN_VLDn("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 1888 TESTINSN_VLDn("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 1889 TESTINSN_VLDn("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 1890 TESTINSN_VLDn("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 1891 TESTINSN_VLDn("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 1892 TESTINSN_VLDn("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 1893 TESTINSN_VLDn("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 1894 TESTINSN_VLDn("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 1895 TESTINSN_VLDn("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 1896 TESTINSN_VLDn("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 1897 1898 fflush(stdout); 1899 printf("---- VLD3 (3-elements to all lanes) ----\n"); 1900 TESTINSN_VLDn("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1); 1901 TESTINSN_VLDn("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1); 1902 TESTINSN_VLDn("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1); 1903 TESTINSN_VLDn("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11); 1904 TESTINSN_VLDn("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18); 1905 TESTINSN_VLDn("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31); 1906 TESTINSN_VLDn("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2); 1907 TESTINSN_VLDn("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2); 1908 TESTINSN_VLDn("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7); 1909 1910 fflush(stdout); 1911 printf("---- VLD4 (multiple 3-elements) ----\n"); 1912 TESTINSN_VLDn("vld4.8 {d0-d3}", d0, d1, d2, d3); 1913 TESTINSN_VLDn("vld4.16 {d20-d23}", d20, d21, d22, d23); 1914 TESTINSN_VLDn("vld4.32 {d0-d3}", d0, d1, d2, d3); 1915 TESTINSN_VLDn("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 1916 TESTINSN_VLDn("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 1917 TESTINSN_VLDn("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 1918 1919 fflush(stdout); 1920 printf("---- VLD4 (single 4-element structure to one lane) ----\n"); 1921 TESTINSN_VLDn("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 1922 TESTINSN_VLDn("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 1923 TESTINSN_VLDn("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 1924 TESTINSN_VLDn("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 1925 TESTINSN_VLDn("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 1926 TESTINSN_VLDn("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 1927 TESTINSN_VLDn("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 1928 TESTINSN_VLDn("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 1929 TESTINSN_VLDn("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 1930 TESTINSN_VLDn("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 1931 TESTINSN_VLDn("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 1932 TESTINSN_VLDn("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 1933 TESTINSN_VLDn("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 1934 TESTINSN_VLDn("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 1935 TESTINSN_VLDn("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 1936 TESTINSN_VLDn("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 1937 TESTINSN_VLDn("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 1938 TESTINSN_VLDn("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 1939 TESTINSN_VLDn("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 1940 TESTINSN_VLDn("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 1941 1942 fflush(stdout); 1943 printf("---- VLD4 (4-elements to all lanes) ----\n"); 1944 TESTINSN_VLDn("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 1945 TESTINSN_VLDn("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 1946 TESTINSN_VLDn("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 1947 TESTINSN_VLDn("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15); 1948 TESTINSN_VLDn("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20); 1949 TESTINSN_VLDn("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31); 1950 TESTINSN_VLDn("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 1951 TESTINSN_VLDn("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 1952 TESTINSN_VLDn("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11); 1953 1954 fflush(stdout); 1955 printf("---- VST1 (multiple single elements) ----\n"); 1956 TESTINSN_VSTn("vst1.8 {d0}", d0, d0, d0, d0); 1957 TESTINSN_VSTn("vst1.16 {d0}", d0, d0, d0, d0); 1958 TESTINSN_VSTn("vst1.32 {d0}", d0, d0, d0, d0); 1959 TESTINSN_VSTn("vst1.64 {d0}", d0, d0, d0, d0); 1960 TESTINSN_VSTn("vst1.8 {d9}", d9, d9, d9, d9); 1961 TESTINSN_VSTn("vst1.16 {d17}", d17, d17, d17, d17); 1962 TESTINSN_VSTn("vst1.32 {d31}", d31, d31, d31, d31); 1963 TESTINSN_VSTn("vst1.64 {d14}", d14, d14, d14, d14); 1964 TESTINSN_VSTn("vst1.8 {d0-d1}", d0, d1, d0, d1); 1965 TESTINSN_VSTn("vst1.16 {d0-d1}", d0, d1, d0, d1); 1966 TESTINSN_VSTn("vst1.32 {d5-d6}", d5, d6, d5, d6); 1967 TESTINSN_VSTn("vst1.64 {d30-d31}", d30, d31, d30, d31); 1968 TESTINSN_VSTn("vst1.8 {d0-d2}", d0, d1, d2, d0); 1969 TESTINSN_VSTn("vst1.16 {d0-d2}", d0, d1, d2, d0); 1970 TESTINSN_VSTn("vst1.32 {d0-d2}", d0, d1, d2, d0); 1971 TESTINSN_VSTn("vst1.64 {d0-d2}", d0, d1, d2, d0); 1972 TESTINSN_VSTn("vst1.8 {d0-d3}", d0, d1, d2, d3); 1973 TESTINSN_VSTn("vst1.16 {d0-d3}", d0, d1, d2, d3); 1974 TESTINSN_VSTn("vst1.32 {d0-d3}", d0, d1, d2, d3); 1975 TESTINSN_VSTn("vst1.64 {d0-d3}", d0, d1, d2, d3); 1976 1977 fflush(stdout); 1978 printf("---- VST1 (single element from one lane) ----\n"); 1979 TESTINSN_VSTn("vst1.32 {d0[0]}", d0, d0, d0, d0); 1980 TESTINSN_VSTn("vst1.32 {d0[1]}", d0, d0, d0, d0); 1981 TESTINSN_VSTn("vst1.16 {d1[0]}", d1, d1, d1, d1); 1982 TESTINSN_VSTn("vst1.16 {d1[1]}", d1, d1, d1, d1); 1983 TESTINSN_VSTn("vst1.16 {d1[2]}", d1, d1, d1, d1); 1984 TESTINSN_VSTn("vst1.16 {d1[3]}", d1, d1, d1, d1); 1985 TESTINSN_VSTn("vst1.8 {d0[7]}", d0, d0, d0, d0); 1986 TESTINSN_VSTn("vst1.8 {d1[6]}", d1, d1, d1, d1); 1987 TESTINSN_VSTn("vst1.8 {d0[5]}", d0, d0, d0, d0); 1988 TESTINSN_VSTn("vst1.8 {d0[4]}", d0, d0, d0, d0); 1989 TESTINSN_VSTn("vst1.8 {d20[3]}", d20, d20, d20, d20); 1990 TESTINSN_VSTn("vst1.8 {d0[2]}", d0, d0, d0, d0); 1991 TESTINSN_VSTn("vst1.8 {d17[1]}", d17, d17, d17, d17); 1992 TESTINSN_VSTn("vst1.8 {d30[0]}", d30, d30, d30, d30); 1993 1994 fflush(stdout); 1995 printf("---- VST2 (multiple 2-elements) ----\n"); 1996 TESTINSN_VSTn("vst2.8 {d30-d31}", d30, d31, d30, d31); 1997 TESTINSN_VSTn("vst2.16 {d0-d1}", d0, d1, d0, d1); 1998 TESTINSN_VSTn("vst2.32 {d0-d1}", d0, d1, d0, d1); 1999 TESTINSN_VSTn("vst2.8 {d10,d12}", d10, d12, d10, d12); 2000 TESTINSN_VSTn("vst2.16 {d20,d22}", d20, d22, d20, d22); 2001 TESTINSN_VSTn("vst2.32 {d0,d2}", d0, d2, d0, d2); 2002 TESTINSN_VSTn("vst2.8 {d0-d3}", d0, d1, d2, d3); 2003 TESTINSN_VSTn("vst2.16 {d20-d23}", d20, d21, d22, d23); 2004 TESTINSN_VSTn("vst2.32 {d0-d3}", d0, d1, d2, d3); 2005 2006 fflush(stdout); 2007 printf("---- VST2 (single 2-element structure from one lane) ----\n"); 2008 TESTINSN_VSTn("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 2009 TESTINSN_VSTn("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 2010 TESTINSN_VSTn("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 2011 TESTINSN_VSTn("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 2012 TESTINSN_VSTn("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 2013 TESTINSN_VSTn("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 2014 TESTINSN_VSTn("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 2015 TESTINSN_VSTn("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 2016 TESTINSN_VSTn("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 2017 TESTINSN_VSTn("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 2018 TESTINSN_VSTn("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 2019 TESTINSN_VSTn("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 2020 TESTINSN_VSTn("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 2021 TESTINSN_VSTn("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 2022 TESTINSN_VSTn("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 2023 TESTINSN_VSTn("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 2024 TESTINSN_VSTn("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 2025 TESTINSN_VSTn("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 2026 TESTINSN_VSTn("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 2027 TESTINSN_VSTn("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 2028 2029 fflush(stdout); 2030 printf("---- VST3 (multiple 3-elements) ----\n"); 2031 TESTINSN_VSTn("vst3.8 {d20-d22}", d20, d21, d22, d20); 2032 TESTINSN_VSTn("vst3.16 {d0-d2}", d0, d1, d2, d0); 2033 TESTINSN_VSTn("vst3.32 {d0-d2}", d0, d1, d2, d0); 2034 TESTINSN_VSTn("vst3.8 {d0,d2,d4}", d0, d2, d4, d0); 2035 TESTINSN_VSTn("vst3.16 {d20,d22,d24}", d20, d22, d24, d20); 2036 TESTINSN_VSTn("vst3.32 {d0,d2,d4}", d0, d2, d4, d0); 2037 2038 fflush(stdout); 2039 printf("---- VST3 (single 3-element structure from one lane) ----\n"); 2040 TESTINSN_VSTn("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 2041 TESTINSN_VSTn("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 2042 TESTINSN_VSTn("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 2043 TESTINSN_VSTn("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 2044 TESTINSN_VSTn("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 2045 TESTINSN_VSTn("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 2046 TESTINSN_VSTn("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 2047 TESTINSN_VSTn("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 2048 TESTINSN_VSTn("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 2049 TESTINSN_VSTn("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 2050 TESTINSN_VSTn("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 2051 TESTINSN_VSTn("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 2052 TESTINSN_VSTn("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 2053 TESTINSN_VSTn("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 2054 TESTINSN_VSTn("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 2055 TESTINSN_VSTn("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 2056 TESTINSN_VSTn("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 2057 TESTINSN_VSTn("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 2058 TESTINSN_VSTn("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 2059 TESTINSN_VSTn("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 2060 2061 fflush(stdout); 2062 printf("---- VST4 (multiple 4-elements) ----\n"); 2063 TESTINSN_VSTn("vst4.8 {d0-d3}", d0, d1, d2, d3); 2064 TESTINSN_VSTn("vst4.16 {d20-d23}", d20, d21, d22, d23); 2065 TESTINSN_VSTn("vst4.32 {d0-d3}", d0, d1, d2, d3); 2066 TESTINSN_VSTn("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 2067 TESTINSN_VSTn("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 2068 TESTINSN_VSTn("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 2069 2070 fflush(stdout); 2071 printf("---- VST4 (single 4-element structure from one lane) ----\n"); 2072 TESTINSN_VSTn("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 2073 TESTINSN_VSTn("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 2074 TESTINSN_VSTn("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 2075 TESTINSN_VSTn("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 2076 TESTINSN_VSTn("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 2077 TESTINSN_VSTn("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 2078 TESTINSN_VSTn("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 2079 TESTINSN_VSTn("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 2080 TESTINSN_VSTn("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 2081 TESTINSN_VSTn("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 2082 TESTINSN_VSTn("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 2083 TESTINSN_VSTn("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 2084 TESTINSN_VSTn("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 2085 TESTINSN_VSTn("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 2086 TESTINSN_VSTn("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 2087 TESTINSN_VSTn("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 2088 TESTINSN_VSTn("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 2089 TESTINSN_VSTn("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 2090 TESTINSN_VSTn("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 2091 TESTINSN_VSTn("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 2092 2093 fflush(stdout); 2094 printf("---- VLD1 (multiple single elements) ----\n"); 2095 TESTINSN_VLDn_WB("vld1.8 {d0}", d0, d0, d0, d0); 2096 TESTINSN_VLDn_WB("vld1.16 {d0}", d0, d0, d0, d0); 2097 TESTINSN_VLDn_WB("vld1.32 {d0}", d0, d0, d0, d0); 2098 TESTINSN_VLDn_WB("vld1.64 {d0}", d0, d0, d0, d0); 2099 TESTINSN_VLDn_WB("vld1.8 {d9}", d9, d9, d9, d9); 2100 TESTINSN_VLDn_WB("vld1.16 {d17}", d17, d17, d17, d17); 2101 TESTINSN_VLDn_WB("vld1.32 {d31}", d31, d31, d31, d31); 2102 TESTINSN_VLDn_WB("vld1.64 {d14}", d14, d14, d14, d14); 2103 TESTINSN_VLDn_WB("vld1.8 {d0-d1}", d0, d1, d0, d1); 2104 TESTINSN_VLDn_WB("vld1.16 {d0-d1}", d0, d1, d0, d1); 2105 TESTINSN_VLDn_WB("vld1.32 {d5-d6}", d5, d6, d5, d6); 2106 TESTINSN_VLDn_WB("vld1.64 {d30-d31}", d30, d31, d30, d31); 2107 TESTINSN_VLDn_WB("vld1.8 {d0-d2}", d0, d1, d2, d0); 2108 TESTINSN_VLDn_WB("vld1.16 {d0-d2}", d0, d1, d2, d0); 2109 TESTINSN_VLDn_WB("vld1.32 {d0-d2}", d0, d1, d2, d0); 2110 TESTINSN_VLDn_WB("vld1.64 {d0-d2}", d0, d1, d2, d0); 2111 TESTINSN_VLDn_WB("vld1.8 {d0-d3}", d0, d1, d2, d3); 2112 TESTINSN_VLDn_WB("vld1.16 {d0-d3}", d0, d1, d2, d3); 2113 TESTINSN_VLDn_WB("vld1.32 {d0-d3}", d0, d1, d2, d3); 2114 TESTINSN_VLDn_WB("vld1.64 {d0-d3}", d0, d1, d2, d3); 2115 2116 fflush(stdout); 2117 printf("---- VLD1 (single element to one lane) ----\n"); 2118 TESTINSN_VLDn_WB("vld1.32 {d0[0]}", d0, d0, d0, d0); 2119 TESTINSN_VLDn_WB("vld1.32 {d0[1]}", d0, d0, d0, d0); 2120 TESTINSN_VLDn_WB("vld1.16 {d1[0]}", d1, d1, d1, d1); 2121 TESTINSN_VLDn_WB("vld1.16 {d1[1]}", d1, d1, d1, d1); 2122 TESTINSN_VLDn_WB("vld1.16 {d1[2]}", d1, d1, d1, d1); 2123 TESTINSN_VLDn_WB("vld1.16 {d1[3]}", d1, d1, d1, d1); 2124 TESTINSN_VLDn_WB("vld1.8 {d0[7]}", d0, d0, d0, d0); 2125 TESTINSN_VLDn_WB("vld1.8 {d1[6]}", d1, d1, d1, d1); 2126 TESTINSN_VLDn_WB("vld1.8 {d0[5]}", d0, d0, d0, d0); 2127 TESTINSN_VLDn_WB("vld1.8 {d0[4]}", d0, d0, d0, d0); 2128 TESTINSN_VLDn_WB("vld1.8 {d20[3]}", d20, d20, d20, d20); 2129 TESTINSN_VLDn_WB("vld1.8 {d0[2]}", d0, d0, d0, d0); 2130 TESTINSN_VLDn_WB("vld1.8 {d17[1]}", d17, d17, d17, d17); 2131 TESTINSN_VLDn_WB("vld1.8 {d30[0]}", d30, d30, d30, d30); 2132 2133 fflush(stdout); 2134 printf("---- VLD1 (single element to all lanes) ----\n"); 2135 TESTINSN_VLDn_WB("vld1.8 {d0[]}", d0, d0, d0, d0); 2136 TESTINSN_VLDn_WB("vld1.16 {d0[]}", d0, d0, d0, d0); 2137 TESTINSN_VLDn_WB("vld1.32 {d0[]}", d0, d0, d0, d0); 2138 TESTINSN_VLDn_WB("vld1.8 {d9[]}", d9, d9, d9, d9); 2139 TESTINSN_VLDn_WB("vld1.16 {d17[]}", d17, d17, d17, d17); 2140 TESTINSN_VLDn_WB("vld1.32 {d31[]}", d31, d31, d31, d31); 2141 TESTINSN_VLDn_WB("vld1.8 {d0[],d1[]}", d0, d1, d0, d1); 2142 TESTINSN_VLDn_WB("vld1.16 {d0[],d1[]}", d0, d1, d0, d1); 2143 TESTINSN_VLDn_WB("vld1.32 {d5[],d6[]}", d5, d6, d5, d6); 2144 2145 fflush(stdout); 2146 printf("---- VLD2 (multiple 2-elements) ----\n"); 2147 TESTINSN_VLDn_WB("vld2.8 {d30-d31}", d30, d31, d30, d31); 2148 TESTINSN_VLDn_WB("vld2.16 {d0-d1}", d0, d1, d0, d1); 2149 TESTINSN_VLDn_WB("vld2.32 {d0-d1}", d0, d1, d0, d1); 2150 TESTINSN_VLDn_WB("vld2.8 {d10,d12}", d10, d12, d10, d12); 2151 TESTINSN_VLDn_WB("vld2.16 {d20,d22}", d20, d22, d20, d22); 2152 TESTINSN_VLDn_WB("vld2.32 {d0,d2}", d0, d2, d0, d2); 2153 TESTINSN_VLDn_WB("vld2.8 {d0-d3}", d0, d1, d2, d3); 2154 TESTINSN_VLDn_WB("vld2.16 {d20-d23}", d20, d21, d22, d23); 2155 TESTINSN_VLDn_WB("vld2.32 {d0-d3}", d0, d1, d2, d3); 2156 2157 fflush(stdout); 2158 printf("---- VLD2 (single 2-element structure to one lane) ----\n"); 2159 TESTINSN_VLDn_WB("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 2160 TESTINSN_VLDn_WB("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 2161 TESTINSN_VLDn_WB("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 2162 TESTINSN_VLDn_WB("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 2163 TESTINSN_VLDn_WB("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 2164 TESTINSN_VLDn_WB("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 2165 TESTINSN_VLDn_WB("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 2166 TESTINSN_VLDn_WB("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 2167 TESTINSN_VLDn_WB("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 2168 TESTINSN_VLDn_WB("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 2169 TESTINSN_VLDn_WB("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 2170 TESTINSN_VLDn_WB("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 2171 TESTINSN_VLDn_WB("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 2172 TESTINSN_VLDn_WB("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 2173 TESTINSN_VLDn_WB("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 2174 TESTINSN_VLDn_WB("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 2175 TESTINSN_VLDn_WB("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 2176 TESTINSN_VLDn_WB("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 2177 TESTINSN_VLDn_WB("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 2178 TESTINSN_VLDn_WB("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 2179 2180 fflush(stdout); 2181 printf("---- VLD2 (2-elements to all lanes) ----\n"); 2182 TESTINSN_VLDn_WB("vld2.8 {d0[],d1[]}", d0, d1, d0, d1); 2183 TESTINSN_VLDn_WB("vld2.16 {d0[],d1[]}", d0, d1, d0, d1); 2184 TESTINSN_VLDn_WB("vld2.32 {d0[],d1[]}", d0, d1, d0, d1); 2185 TESTINSN_VLDn_WB("vld2.8 {d9[],d11[]}", d9, d11, d9, d11); 2186 TESTINSN_VLDn_WB("vld2.16 {d17[],d18[]}", d17, d18, d17, d18); 2187 TESTINSN_VLDn_WB("vld2.32 {d30[],d31[]}", d30, d31, d30, d31); 2188 TESTINSN_VLDn_WB("vld2.8 {d0[],d2[]}", d0, d2, d0, d2); 2189 TESTINSN_VLDn_WB("vld2.16 {d0[],d2[]}", d0, d2, d0, d2); 2190 TESTINSN_VLDn_WB("vld2.32 {d5[],d7[]}", d5, d7, d5, d7); 2191 2192 fflush(stdout); 2193 printf("---- VLD3 (multiple 3-elements) ----\n"); 2194 TESTINSN_VLDn_WB("vld3.8 {d20-d22}", d20, d21, d22, d20); 2195 TESTINSN_VLDn_WB("vld3.16 {d0-d2}", d0, d1, d2, d0); 2196 TESTINSN_VLDn_WB("vld3.32 {d0-d2}", d0, d1, d2, d0); 2197 TESTINSN_VLDn_WB("vld3.8 {d0,d2,d4}", d0, d2, d4, d0); 2198 TESTINSN_VLDn_WB("vld3.16 {d20,d22,d24}", d20, d22, d24, d20); 2199 TESTINSN_VLDn_WB("vld3.32 {d0,d2,d4}", d0, d2, d4, d0); 2200 2201 fflush(stdout); 2202 printf("---- VLD3 (single 3-element structure to one lane) ----\n"); 2203 TESTINSN_VLDn_WB("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 2204 TESTINSN_VLDn_WB("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 2205 TESTINSN_VLDn_WB("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 2206 TESTINSN_VLDn_WB("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 2207 TESTINSN_VLDn_WB("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 2208 TESTINSN_VLDn_WB("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 2209 TESTINSN_VLDn_WB("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 2210 TESTINSN_VLDn_WB("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 2211 TESTINSN_VLDn_WB("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 2212 TESTINSN_VLDn_WB("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 2213 TESTINSN_VLDn_WB("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 2214 TESTINSN_VLDn_WB("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 2215 TESTINSN_VLDn_WB("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 2216 TESTINSN_VLDn_WB("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 2217 TESTINSN_VLDn_WB("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 2218 TESTINSN_VLDn_WB("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 2219 TESTINSN_VLDn_WB("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 2220 TESTINSN_VLDn_WB("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 2221 TESTINSN_VLDn_WB("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 2222 TESTINSN_VLDn_WB("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 2223 2224 fflush(stdout); 2225 printf("---- VLD3 (3-elements to all lanes) ----\n"); 2226 TESTINSN_VLDn_WB("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1); 2227 TESTINSN_VLDn_WB("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1); 2228 TESTINSN_VLDn_WB("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1); 2229 TESTINSN_VLDn_WB("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11); 2230 TESTINSN_VLDn_WB("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18); 2231 TESTINSN_VLDn_WB("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31); 2232 TESTINSN_VLDn_WB("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2); 2233 TESTINSN_VLDn_WB("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2); 2234 TESTINSN_VLDn_WB("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7); 2235 2236 fflush(stdout); 2237 printf("---- VLD4 (multiple 3-elements) ----\n"); 2238 TESTINSN_VLDn_WB("vld4.8 {d0-d3}", d0, d1, d2, d3); 2239 TESTINSN_VLDn_WB("vld4.16 {d20-d23}", d20, d21, d22, d23); 2240 TESTINSN_VLDn_WB("vld4.32 {d0-d3}", d0, d1, d2, d3); 2241 TESTINSN_VLDn_WB("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 2242 TESTINSN_VLDn_WB("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 2243 TESTINSN_VLDn_WB("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 2244 2245 fflush(stdout); 2246 printf("---- VLD4 (single 4-element structure to one lane) ----\n"); 2247 TESTINSN_VLDn_WB("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 2248 TESTINSN_VLDn_WB("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 2249 TESTINSN_VLDn_WB("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 2250 TESTINSN_VLDn_WB("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 2251 TESTINSN_VLDn_WB("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 2252 TESTINSN_VLDn_WB("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 2253 TESTINSN_VLDn_WB("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 2254 TESTINSN_VLDn_WB("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 2255 TESTINSN_VLDn_WB("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 2256 TESTINSN_VLDn_WB("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 2257 TESTINSN_VLDn_WB("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 2258 TESTINSN_VLDn_WB("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 2259 TESTINSN_VLDn_WB("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 2260 TESTINSN_VLDn_WB("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 2261 TESTINSN_VLDn_WB("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 2262 TESTINSN_VLDn_WB("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 2263 TESTINSN_VLDn_WB("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 2264 TESTINSN_VLDn_WB("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 2265 TESTINSN_VLDn_WB("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 2266 TESTINSN_VLDn_WB("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 2267 2268 fflush(stdout); 2269 printf("---- VLD4 (4-elements to all lanes) ----\n"); 2270 TESTINSN_VLDn_WB("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 2271 TESTINSN_VLDn_WB("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 2272 TESTINSN_VLDn_WB("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3); 2273 TESTINSN_VLDn_WB("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15); 2274 TESTINSN_VLDn_WB("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20); 2275 TESTINSN_VLDn_WB("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31); 2276 TESTINSN_VLDn_WB("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 2277 TESTINSN_VLDn_WB("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6); 2278 TESTINSN_VLDn_WB("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11); 2279 2280 fflush(stdout); 2281 printf("---- VST1 (multiple single elements) ----\n"); 2282 TESTINSN_VSTn_WB("vst1.8 {d0}", d0, d0, d0, d0); 2283 TESTINSN_VSTn_WB("vst1.16 {d0}", d0, d0, d0, d0); 2284 TESTINSN_VSTn_WB("vst1.32 {d0}", d0, d0, d0, d0); 2285 TESTINSN_VSTn_WB("vst1.64 {d0}", d0, d0, d0, d0); 2286 TESTINSN_VSTn_WB("vst1.8 {d9}", d9, d9, d9, d9); 2287 TESTINSN_VSTn_WB("vst1.16 {d17}", d17, d17, d17, d17); 2288 TESTINSN_VSTn_WB("vst1.32 {d31}", d31, d31, d31, d31); 2289 TESTINSN_VSTn_WB("vst1.64 {d14}", d14, d14, d14, d14); 2290 TESTINSN_VSTn_WB("vst1.8 {d0-d1}", d0, d1, d0, d1); 2291 TESTINSN_VSTn_WB("vst1.16 {d0-d1}", d0, d1, d0, d1); 2292 TESTINSN_VSTn_WB("vst1.32 {d5-d6}", d5, d6, d5, d6); 2293 TESTINSN_VSTn_WB("vst1.64 {d30-d31}", d30, d31, d30, d31); 2294 TESTINSN_VSTn_WB("vst1.8 {d0-d2}", d0, d1, d2, d0); 2295 TESTINSN_VSTn_WB("vst1.16 {d0-d2}", d0, d1, d2, d0); 2296 TESTINSN_VSTn_WB("vst1.32 {d0-d2}", d0, d1, d2, d0); 2297 TESTINSN_VSTn_WB("vst1.64 {d0-d2}", d0, d1, d2, d0); 2298 TESTINSN_VSTn_WB("vst1.8 {d0-d3}", d0, d1, d2, d3); 2299 TESTINSN_VSTn_WB("vst1.16 {d0-d3}", d0, d1, d2, d3); 2300 TESTINSN_VSTn_WB("vst1.32 {d0-d3}", d0, d1, d2, d3); 2301 TESTINSN_VSTn_WB("vst1.64 {d0-d3}", d0, d1, d2, d3); 2302 2303 fflush(stdout); 2304 printf("---- VST1 (single element from one lane) ----\n"); 2305 TESTINSN_VSTn_WB("vst1.32 {d0[0]}", d0, d0, d0, d0); 2306 TESTINSN_VSTn_WB("vst1.32 {d0[1]}", d0, d0, d0, d0); 2307 TESTINSN_VSTn_WB("vst1.16 {d1[0]}", d1, d1, d1, d1); 2308 TESTINSN_VSTn_WB("vst1.16 {d1[1]}", d1, d1, d1, d1); 2309 TESTINSN_VSTn_WB("vst1.16 {d1[2]}", d1, d1, d1, d1); 2310 TESTINSN_VSTn_WB("vst1.16 {d1[3]}", d1, d1, d1, d1); 2311 TESTINSN_VSTn_WB("vst1.8 {d0[7]}", d0, d0, d0, d0); 2312 TESTINSN_VSTn_WB("vst1.8 {d1[6]}", d1, d1, d1, d1); 2313 TESTINSN_VSTn_WB("vst1.8 {d0[5]}", d0, d0, d0, d0); 2314 TESTINSN_VSTn_WB("vst1.8 {d0[4]}", d0, d0, d0, d0); 2315 TESTINSN_VSTn_WB("vst1.8 {d20[3]}", d20, d20, d20, d20); 2316 TESTINSN_VSTn_WB("vst1.8 {d0[2]}", d0, d0, d0, d0); 2317 TESTINSN_VSTn_WB("vst1.8 {d17[1]}", d17, d17, d17, d17); 2318 TESTINSN_VSTn_WB("vst1.8 {d30[0]}", d30, d30, d30, d30); 2319 2320 fflush(stdout); 2321 printf("---- VST2 (multiple 2-elements) ----\n"); 2322 TESTINSN_VSTn_WB("vst2.8 {d30-d31}", d30, d31, d30, d31); 2323 TESTINSN_VSTn_WB("vst2.16 {d0-d1}", d0, d1, d0, d1); 2324 TESTINSN_VSTn_WB("vst2.32 {d0-d1}", d0, d1, d0, d1); 2325 TESTINSN_VSTn_WB("vst2.8 {d10,d12}", d10, d12, d10, d12); 2326 TESTINSN_VSTn_WB("vst2.16 {d20,d22}", d20, d22, d20, d22); 2327 TESTINSN_VSTn_WB("vst2.32 {d0,d2}", d0, d2, d0, d2); 2328 TESTINSN_VSTn_WB("vst2.8 {d0-d3}", d0, d1, d2, d3); 2329 TESTINSN_VSTn_WB("vst2.16 {d20-d23}", d20, d21, d22, d23); 2330 TESTINSN_VSTn_WB("vst2.32 {d0-d3}", d0, d1, d2, d3); 2331 2332 fflush(stdout); 2333 printf("---- VST2 (single 2-element structure from one lane) ----\n"); 2334 TESTINSN_VSTn_WB("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1); 2335 TESTINSN_VSTn_WB("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1); 2336 TESTINSN_VSTn_WB("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2); 2337 TESTINSN_VSTn_WB("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2); 2338 TESTINSN_VSTn_WB("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2); 2339 TESTINSN_VSTn_WB("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2); 2340 TESTINSN_VSTn_WB("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2); 2341 TESTINSN_VSTn_WB("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2); 2342 TESTINSN_VSTn_WB("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3); 2343 TESTINSN_VSTn_WB("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3); 2344 TESTINSN_VSTn_WB("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3); 2345 TESTINSN_VSTn_WB("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3); 2346 TESTINSN_VSTn_WB("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1); 2347 TESTINSN_VSTn_WB("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2); 2348 TESTINSN_VSTn_WB("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1); 2349 TESTINSN_VSTn_WB("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1); 2350 TESTINSN_VSTn_WB("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21); 2351 TESTINSN_VSTn_WB("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1); 2352 TESTINSN_VSTn_WB("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18); 2353 TESTINSN_VSTn_WB("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31); 2354 2355 fflush(stdout); 2356 printf("---- VST3 (multiple 3-elements) ----\n"); 2357 TESTINSN_VSTn_WB("vst3.8 {d20-d22}", d20, d21, d22, d20); 2358 TESTINSN_VSTn_WB("vst3.16 {d0-d2}", d0, d1, d2, d0); 2359 TESTINSN_VSTn_WB("vst3.32 {d0-d2}", d0, d1, d2, d0); 2360 TESTINSN_VSTn_WB("vst3.8 {d0,d2,d4}", d0, d2, d4, d0); 2361 TESTINSN_VSTn_WB("vst3.16 {d20,d22,d24}", d20, d22, d24, d20); 2362 TESTINSN_VSTn_WB("vst3.32 {d0,d2,d4}", d0, d2, d4, d0); 2363 2364 fflush(stdout); 2365 printf("---- VST3 (single 3-element structure from one lane) ----\n"); 2366 TESTINSN_VSTn_WB("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1); 2367 TESTINSN_VSTn_WB("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1); 2368 TESTINSN_VSTn_WB("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2); 2369 TESTINSN_VSTn_WB("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2); 2370 TESTINSN_VSTn_WB("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2); 2371 TESTINSN_VSTn_WB("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2); 2372 TESTINSN_VSTn_WB("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2); 2373 TESTINSN_VSTn_WB("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2); 2374 TESTINSN_VSTn_WB("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5); 2375 TESTINSN_VSTn_WB("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5); 2376 TESTINSN_VSTn_WB("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5); 2377 TESTINSN_VSTn_WB("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5); 2378 TESTINSN_VSTn_WB("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1); 2379 TESTINSN_VSTn_WB("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2); 2380 TESTINSN_VSTn_WB("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1); 2381 TESTINSN_VSTn_WB("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1); 2382 TESTINSN_VSTn_WB("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21); 2383 TESTINSN_VSTn_WB("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1); 2384 TESTINSN_VSTn_WB("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18); 2385 TESTINSN_VSTn_WB("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31); 2386 2387 fflush(stdout); 2388 printf("---- VST4 (multiple 4-elements) ----\n"); 2389 TESTINSN_VSTn_WB("vst4.8 {d0-d3}", d0, d1, d2, d3); 2390 TESTINSN_VSTn_WB("vst4.16 {d20-d23}", d20, d21, d22, d23); 2391 TESTINSN_VSTn_WB("vst4.32 {d0-d3}", d0, d1, d2, d3); 2392 TESTINSN_VSTn_WB("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6); 2393 TESTINSN_VSTn_WB("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7); 2394 TESTINSN_VSTn_WB("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26); 2395 2396 fflush(stdout); 2397 printf("---- VST4 (single 4-element structure from one lane) ----\n"); 2398 TESTINSN_VSTn_WB("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3); 2399 TESTINSN_VSTn_WB("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4); 2400 TESTINSN_VSTn_WB("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6); 2401 TESTINSN_VSTn_WB("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6); 2402 TESTINSN_VSTn_WB("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4); 2403 TESTINSN_VSTn_WB("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4); 2404 TESTINSN_VSTn_WB("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4); 2405 TESTINSN_VSTn_WB("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4); 2406 TESTINSN_VSTn_WB("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7); 2407 TESTINSN_VSTn_WB("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7); 2408 TESTINSN_VSTn_WB("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7); 2409 TESTINSN_VSTn_WB("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7); 2410 TESTINSN_VSTn_WB("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3); 2411 TESTINSN_VSTn_WB("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4); 2412 TESTINSN_VSTn_WB("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3); 2413 TESTINSN_VSTn_WB("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3); 2414 TESTINSN_VSTn_WB("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23); 2415 TESTINSN_VSTn_WB("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3); 2416 TESTINSN_VSTn_WB("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20); 2417 TESTINSN_VSTn_WB("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31); 2418 2419 fflush(stdout); 2420 printf("---- VLD1 (multiple single elements) ----\n"); 2421 TESTINSN_VLDn_RI("vld1.8 {d0}", d0, d0, d0, d0, r5, 13); 2422 TESTINSN_VLDn_RI("vld1.16 {d0}", d0, d0, d0, d0, r8, 13); 2423 TESTINSN_VLDn_RI("vld1.32 {d0}", d0, d0, d0, d0, r5, 42); 2424 TESTINSN_VLDn_RI("vld1.64 {d0}", d0, d0, d0, d0, r5, 0); 2425 TESTINSN_VLDn_RI("vld1.8 {d9}", d9, d9, d9, d9, r5, 13); 2426 TESTINSN_VLDn_RI("vld1.16 {d17}", d17, d17, d17, d17, r6, 13); 2427 TESTINSN_VLDn_RI("vld1.32 {d31}", d31, d31, d31, d31, r5, -3); 2428 TESTINSN_VLDn_RI("vld1.64 {d14}", d14, d14, d14, d14, r5, 13); 2429 TESTINSN_VLDn_RI("vld1.8 {d0-d1}", d0, d1, d0, d1, r5, 13); 2430 TESTINSN_VLDn_RI("vld1.16 {d0-d1}", d0, d1, d0, d1, r5, 13); 2431 TESTINSN_VLDn_RI("vld1.32 {d5-d6}", d5, d6, d5, d6, r5, 13); 2432 TESTINSN_VLDn_RI("vld1.64 {d30-d31}", d30, d31, d30, d31, r5, 13); 2433 TESTINSN_VLDn_RI("vld1.8 {d0-d2}", d0, d1, d2, d0, r5, 13); 2434 TESTINSN_VLDn_RI("vld1.16 {d0-d2}", d0, d1, d2, d0, r5, 13); 2435 TESTINSN_VLDn_RI("vld1.32 {d0-d2}", d0, d1, d2, d0, r5, 13); 2436 TESTINSN_VLDn_RI("vld1.64 {d0-d2}", d0, d1, d2, d0, r5, 13); 2437 TESTINSN_VLDn_RI("vld1.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2438 TESTINSN_VLDn_RI("vld1.16 {d0-d3}", d0, d1, d2, d3, r5, 13); 2439 TESTINSN_VLDn_RI("vld1.32 {d0-d3}", d0, d1, d2, d3, r5, 13); 2440 TESTINSN_VLDn_RI("vld1.64 {d0-d3}", d0, d1, d2, d3, r5, 13); 2441 2442 fflush(stdout); 2443 printf("---- VLD1 (single element to one lane) ----\n"); 2444 TESTINSN_VLDn_RI("vld1.32 {d0[0]}", d0, d0, d0, d0, r5, 13); 2445 TESTINSN_VLDn_RI("vld1.32 {d0[1]}", d0, d0, d0, d0, r9, 42); 2446 TESTINSN_VLDn_RI("vld1.16 {d1[0]}", d1, d1, d1, d1, r5, 13); 2447 TESTINSN_VLDn_RI("vld1.16 {d1[1]}", d1, d1, d1, d1, r1, 0); 2448 TESTINSN_VLDn_RI("vld1.16 {d1[2]}", d1, d1, d1, d1, r5, -3); 2449 TESTINSN_VLDn_RI("vld1.16 {d1[3]}", d1, d1, d1, d1, r5, 13); 2450 TESTINSN_VLDn_RI("vld1.8 {d0[7]}", d0, d0, d0, d0, r5, 13); 2451 TESTINSN_VLDn_RI("vld1.8 {d1[6]}", d1, d1, d1, d1, r5, 13); 2452 TESTINSN_VLDn_RI("vld1.8 {d0[5]}", d0, d0, d0, d0, r5, 13); 2453 TESTINSN_VLDn_RI("vld1.8 {d0[4]}", d0, d0, d0, d0, r5, 13); 2454 TESTINSN_VLDn_RI("vld1.8 {d20[3]}", d20, d20, d20, d20, r5, 13); 2455 TESTINSN_VLDn_RI("vld1.8 {d0[2]}", d0, d0, d0, d0, r5, 13); 2456 TESTINSN_VLDn_RI("vld1.8 {d17[1]}", d17, d17, d17, d17, r5, 13); 2457 TESTINSN_VLDn_RI("vld1.8 {d30[0]}", d30, d30, d30, d30, r5, 13); 2458 2459 fflush(stdout); 2460 printf("---- VLD1 (single element to all lanes) ----\n"); 2461 TESTINSN_VLDn_RI("vld1.8 {d0[]}", d0, d0, d0, d0, r5, 13); 2462 TESTINSN_VLDn_RI("vld1.16 {d0[]}", d0, d0, d0, d0, r9, 42); 2463 TESTINSN_VLDn_RI("vld1.32 {d0[]}", d0, d0, d0, d0, r1, 0); 2464 TESTINSN_VLDn_RI("vld1.8 {d9[]}", d9, d9, d9, d9, r5, -3); 2465 TESTINSN_VLDn_RI("vld1.16 {d17[]}", d17, d17, d17, d17, r5, 13); 2466 TESTINSN_VLDn_RI("vld1.32 {d31[]}", d31, d31, d31, d31, r5, 13); 2467 TESTINSN_VLDn_RI("vld1.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); 2468 TESTINSN_VLDn_RI("vld1.16 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); 2469 TESTINSN_VLDn_RI("vld1.32 {d5[],d6[]}", d5, d6, d5, d6, r5, 13); 2470 2471 fflush(stdout); 2472 printf("---- VLD2 (multiple 2-elements) ----\n"); 2473 TESTINSN_VLDn_RI("vld2.8 {d30-d31}", d30, d31, d30, d31, r5, 13); 2474 TESTINSN_VLDn_RI("vld2.16 {d0-d1}", d0, d1, d0, d1, r9, 42); 2475 TESTINSN_VLDn_RI("vld2.32 {d0-d1}", d0, d1, d0, d1, r1, 0); 2476 TESTINSN_VLDn_RI("vld2.8 {d10,d12}", d10, d12, d10, d12, r5, -3); 2477 TESTINSN_VLDn_RI("vld2.16 {d20,d22}", d20, d22, d20, d22, r5, 13); 2478 TESTINSN_VLDn_RI("vld2.32 {d0,d2}", d0, d2, d0, d2, r5, 13); 2479 TESTINSN_VLDn_RI("vld2.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2480 TESTINSN_VLDn_RI("vld2.16 {d20-d23}", d20, d21, d22, d23, r5, 13); 2481 TESTINSN_VLDn_RI("vld2.32 {d0-d3}", d0, d1, d2, d3, r5, 13); 2482 2483 fflush(stdout); 2484 printf("---- VLD2 (single 2-element structure to one lane) ----\n"); 2485 TESTINSN_VLDn_RI("vld2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13); 2486 TESTINSN_VLDn_RI("vld2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42); 2487 TESTINSN_VLDn_RI("vld2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0); 2488 TESTINSN_VLDn_RI("vld2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3); 2489 TESTINSN_VLDn_RI("vld2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13); 2490 TESTINSN_VLDn_RI("vld2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13); 2491 TESTINSN_VLDn_RI("vld2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13); 2492 TESTINSN_VLDn_RI("vld2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13); 2493 TESTINSN_VLDn_RI("vld2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13); 2494 TESTINSN_VLDn_RI("vld2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13); 2495 TESTINSN_VLDn_RI("vld2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13); 2496 TESTINSN_VLDn_RI("vld2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13); 2497 TESTINSN_VLDn_RI("vld2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13); 2498 TESTINSN_VLDn_RI("vld2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13); 2499 TESTINSN_VLDn_RI("vld2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13); 2500 TESTINSN_VLDn_RI("vld2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13); 2501 TESTINSN_VLDn_RI("vld2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13); 2502 TESTINSN_VLDn_RI("vld2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13); 2503 TESTINSN_VLDn_RI("vld2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13); 2504 TESTINSN_VLDn_RI("vld2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13); 2505 2506 fflush(stdout); 2507 printf("---- VLD2 (2-elements to all lanes) ----\n"); 2508 TESTINSN_VLDn_RI("vld2.8 {d0[],d1[]}", d0, d1, d0, d1, r5, 13); 2509 TESTINSN_VLDn_RI("vld2.16 {d0[],d1[]}", d0, d1, d0, d1, r9, 42); 2510 TESTINSN_VLDn_RI("vld2.32 {d0[],d1[]}", d0, d1, d0, d1, r1, 0); 2511 TESTINSN_VLDn_RI("vld2.8 {d9[],d11[]}", d9, d11, d9, d11, r5, -3); 2512 TESTINSN_VLDn_RI("vld2.16 {d17[],d18[]}", d17, d18, d17, d18, r5, 13); 2513 TESTINSN_VLDn_RI("vld2.32 {d30[],d31[]}", d30, d31, d30, d31, r5, 13); 2514 TESTINSN_VLDn_RI("vld2.8 {d0[],d2[]}", d0, d2, d0, d2, r5, 13); 2515 TESTINSN_VLDn_RI("vld2.16 {d0[],d2[]}", d0, d2, d0, d2, r5, 13); 2516 TESTINSN_VLDn_RI("vld2.32 {d5[],d7[]}", d5, d7, d5, d7, r5, 13); 2517 2518 fflush(stdout); 2519 printf("---- VLD3 (multiple 3-elements) ----\n"); 2520 TESTINSN_VLDn_RI("vld3.8 {d20-d22}", d20, d21, d22, d20, r5, 13); 2521 TESTINSN_VLDn_RI("vld3.16 {d0-d2}", d0, d1, d2, d0, r9, 42); 2522 TESTINSN_VLDn_RI("vld3.32 {d0-d2}", d0, d1, d2, d0, r1, 0); 2523 TESTINSN_VLDn_RI("vld3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3); 2524 TESTINSN_VLDn_RI("vld3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13); 2525 TESTINSN_VLDn_RI("vld3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13); 2526 2527 fflush(stdout); 2528 printf("---- VLD3 (single 3-element structure to one lane) ----\n"); 2529 TESTINSN_VLDn_RI("vld3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13); 2530 TESTINSN_VLDn_RI("vld3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42); 2531 TESTINSN_VLDn_RI("vld3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0); 2532 TESTINSN_VLDn_RI("vld3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3); 2533 TESTINSN_VLDn_RI("vld3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13); 2534 TESTINSN_VLDn_RI("vld3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13); 2535 TESTINSN_VLDn_RI("vld3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13); 2536 TESTINSN_VLDn_RI("vld3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13); 2537 TESTINSN_VLDn_RI("vld3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13); 2538 TESTINSN_VLDn_RI("vld3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13); 2539 TESTINSN_VLDn_RI("vld3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13); 2540 TESTINSN_VLDn_RI("vld3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13); 2541 TESTINSN_VLDn_RI("vld3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13); 2542 TESTINSN_VLDn_RI("vld3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13); 2543 TESTINSN_VLDn_RI("vld3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13); 2544 TESTINSN_VLDn_RI("vld3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13); 2545 TESTINSN_VLDn_RI("vld3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13); 2546 TESTINSN_VLDn_RI("vld3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13); 2547 TESTINSN_VLDn_RI("vld3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13); 2548 TESTINSN_VLDn_RI("vld3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13); 2549 2550 fflush(stdout); 2551 printf("---- VLD3 (3-elements to all lanes) ----\n"); 2552 TESTINSN_VLDn_RI("vld3.8 {d0[],d1[],d2[]}", d0, d1, d2, d1, r5, 13); 2553 TESTINSN_VLDn_RI("vld3.16 {d0[],d1[],d2[]}", d0, d1, d2, d1, r9, 42); 2554 TESTINSN_VLDn_RI("vld3.32 {d0[],d1[],d2[]}", d0, d1, d2, d1, r1, 0); 2555 TESTINSN_VLDn_RI("vld3.8 {d9[],d11[],d13[]}", d9, d11, d13, d11, r5, -3); 2556 TESTINSN_VLDn_RI("vld3.16 {d17[],d18[],d19[]}", d17, d18, d19, d18, r5, 13); 2557 TESTINSN_VLDn_RI("vld3.32 {d29[],d30[],d31[]}", d29, d30, d30, d31, r5, 13); 2558 TESTINSN_VLDn_RI("vld3.8 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13); 2559 TESTINSN_VLDn_RI("vld3.16 {d0[],d2[],d4[]}", d0, d2, d4, d2, r5, 13); 2560 TESTINSN_VLDn_RI("vld3.32 {d5[],d7[],d9[]}", d5, d7, d9, d7, r5, 13); 2561 2562 fflush(stdout); 2563 printf("---- VLD4 (multiple 3-elements) ----\n"); 2564 TESTINSN_VLDn_RI("vld4.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2565 TESTINSN_VLDn_RI("vld4.16 {d20-d23}", d20, d21, d22, d23, r9, 0); 2566 TESTINSN_VLDn_RI("vld4.32 {d0-d3}", d0, d1, d2, d3, r0, 42); 2567 TESTINSN_VLDn_RI("vld4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3); 2568 TESTINSN_VLDn_RI("vld4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13); 2569 TESTINSN_VLDn_RI("vld4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13); 2570 2571 fflush(stdout); 2572 printf("---- VLD4 (single 4-element structure to one lane) ----\n"); 2573 TESTINSN_VLDn_RI("vld4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13); 2574 TESTINSN_VLDn_RI("vld4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42); 2575 TESTINSN_VLDn_RI("vld4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0); 2576 TESTINSN_VLDn_RI("vld4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3); 2577 TESTINSN_VLDn_RI("vld4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13); 2578 TESTINSN_VLDn_RI("vld4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13); 2579 TESTINSN_VLDn_RI("vld4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13); 2580 TESTINSN_VLDn_RI("vld4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13); 2581 TESTINSN_VLDn_RI("vld4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13); 2582 TESTINSN_VLDn_RI("vld4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13); 2583 TESTINSN_VLDn_RI("vld4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13); 2584 TESTINSN_VLDn_RI("vld4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13); 2585 TESTINSN_VLDn_RI("vld4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13); 2586 TESTINSN_VLDn_RI("vld4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13); 2587 TESTINSN_VLDn_RI("vld4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13); 2588 TESTINSN_VLDn_RI("vld4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13); 2589 TESTINSN_VLDn_RI("vld4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13); 2590 TESTINSN_VLDn_RI("vld4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13); 2591 TESTINSN_VLDn_RI("vld4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13); 2592 TESTINSN_VLDn_RI("vld4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13); 2593 2594 fflush(stdout); 2595 printf("---- VLD4 (4-elements to all lanes) ----\n"); 2596 TESTINSN_VLDn_RI("vld4.8 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r5, 13); 2597 TESTINSN_VLDn_RI("vld4.16 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r9, 42); 2598 TESTINSN_VLDn_RI("vld4.32 {d0[],d1[],d2[],d3[]}", d0, d1, d2, d3, r1, 0); 2599 TESTINSN_VLDn_RI("vld4.8 {d9[],d11[],d13[],d15[]}", d9, d11, d13, d15, r5, -3); 2600 TESTINSN_VLDn_RI("vld4.16 {d17[],d18[],d19[],d20[]}", d17, d18, d19, d20, r5, 13); 2601 TESTINSN_VLDn_RI("vld4.32 {d28[],d29[],d30[],d31[]}", d28, d29, d30, d31, r5, 13); 2602 TESTINSN_VLDn_RI("vld4.8 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13); 2603 TESTINSN_VLDn_RI("vld4.16 {d0[],d2[],d4[],d6[]}", d0, d2, d4, d6, r5, 13); 2604 TESTINSN_VLDn_RI("vld4.32 {d5[],d7[],d9[],d11[]}", d5, d7, d9, d11, r5, 13); 2605 2606 fflush(stdout); 2607 printf("---- VST1 (multiple single elements) ----\n"); 2608 TESTINSN_VSTn_RI("vst1.8 {d0}", d0, d0, d0, d0, r5, 13); 2609 TESTINSN_VSTn_RI("vst1.16 {d0}", d0, d0, d0, d0, r9, 42); 2610 TESTINSN_VSTn_RI("vst1.32 {d0}", d0, d0, d0, d0, r5, 0); 2611 TESTINSN_VSTn_RI("vst1.64 {d0}", d0, d0, d0, d0, r5, -3); 2612 TESTINSN_VSTn_RI("vst1.8 {d9}", d9, d9, d9, d9, r5, 13); 2613 TESTINSN_VSTn_RI("vst1.16 {d17}", d17, d17, d17, d17, r5, 13); 2614 TESTINSN_VSTn_RI("vst1.32 {d31}", d31, d31, d31, d31, r5, 13); 2615 TESTINSN_VSTn_RI("vst1.64 {d14}", d14, d14, d14, d14, r5, 13); 2616 TESTINSN_VSTn_RI("vst1.8 {d0-d1}", d0, d1, d0, d1, r5, 13); 2617 TESTINSN_VSTn_RI("vst1.16 {d0-d1}", d0, d1, d0, d1, r5, 13); 2618 TESTINSN_VSTn_RI("vst1.32 {d5-d6}", d5, d6, d5, d6, r5, 13); 2619 TESTINSN_VSTn_RI("vst1.64 {d30-d31}", d30, d31, d30, d31, r5, 13); 2620 TESTINSN_VSTn_RI("vst1.8 {d0-d2}", d0, d1, d2, d0, r5, 13); 2621 TESTINSN_VSTn_RI("vst1.16 {d0-d2}", d0, d1, d2, d0, r5, 13); 2622 TESTINSN_VSTn_RI("vst1.32 {d0-d2}", d0, d1, d2, d0, r5, 13); 2623 TESTINSN_VSTn_RI("vst1.64 {d0-d2}", d0, d1, d2, d0, r5, 13); 2624 TESTINSN_VSTn_RI("vst1.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2625 TESTINSN_VSTn_RI("vst1.16 {d0-d3}", d0, d1, d2, d3, r5, 13); 2626 TESTINSN_VSTn_RI("vst1.32 {d0-d3}", d0, d1, d2, d3, r5, 13); 2627 TESTINSN_VSTn_RI("vst1.64 {d0-d3}", d0, d1, d2, d3, r5, 13); 2628 2629 fflush(stdout); 2630 printf("---- VST1 (single element from one lane) ----\n"); 2631 TESTINSN_VSTn_RI("vst1.32 {d0[0]}", d0, d0, d0, d0, r5, 13); 2632 TESTINSN_VSTn_RI("vst1.32 {d0[1]}", d0, d0, d0, d0, r9, 42); 2633 TESTINSN_VSTn_RI("vst1.16 {d1[0]}", d1, d1, d1, d1, r1, 0); 2634 TESTINSN_VSTn_RI("vst1.16 {d1[1]}", d1, d1, d1, d1, r5, -3); 2635 TESTINSN_VSTn_RI("vst1.16 {d1[2]}", d1, d1, d1, d1, r5, 13); 2636 TESTINSN_VSTn_RI("vst1.16 {d1[3]}", d1, d1, d1, d1, r5, 13); 2637 TESTINSN_VSTn_RI("vst1.8 {d0[7]}", d0, d0, d0, d0, r5, 13); 2638 TESTINSN_VSTn_RI("vst1.8 {d1[6]}", d1, d1, d1, d1, r5, 13); 2639 TESTINSN_VSTn_RI("vst1.8 {d0[5]}", d0, d0, d0, d0, r5, 13); 2640 TESTINSN_VSTn_RI("vst1.8 {d0[4]}", d0, d0, d0, d0, r5, 13); 2641 TESTINSN_VSTn_RI("vst1.8 {d20[3]}", d20, d20, d20, d20, r5, 13); 2642 TESTINSN_VSTn_RI("vst1.8 {d0[2]}", d0, d0, d0, d0, r5, 13); 2643 TESTINSN_VSTn_RI("vst1.8 {d17[1]}", d17, d17, d17, d17, r5, 13); 2644 TESTINSN_VSTn_RI("vst1.8 {d30[0]}", d30, d30, d30, d30, r5, 13); 2645 2646 fflush(stdout); 2647 printf("---- VST2 (multiple 2-elements) ----\n"); 2648 TESTINSN_VSTn_RI("vst2.8 {d30-d31}", d30, d31, d30, d31, r5, 13); 2649 TESTINSN_VSTn_RI("vst2.16 {d0-d1}", d0, d1, d0, d1, r9, 42); 2650 TESTINSN_VSTn_RI("vst2.32 {d0-d1}", d0, d1, d0, d1, r1, 0); 2651 TESTINSN_VSTn_RI("vst2.8 {d10,d12}", d10, d12, d10, d12, r5, -3); 2652 TESTINSN_VSTn_RI("vst2.16 {d20,d22}", d20, d22, d20, d22, r5, 13); 2653 TESTINSN_VSTn_RI("vst2.32 {d0,d2}", d0, d2, d0, d2, r5, 13); 2654 TESTINSN_VSTn_RI("vst2.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2655 TESTINSN_VSTn_RI("vst2.16 {d20-d23}", d20, d21, d22, d23, r5, 13); 2656 TESTINSN_VSTn_RI("vst2.32 {d0-d3}", d0, d1, d2, d3, r5, 13); 2657 2658 fflush(stdout); 2659 printf("---- VST2 (single 2-element structure from one lane) ----\n"); 2660 TESTINSN_VSTn_RI("vst2.32 {d0[0],d1[0]}", d0, d1, d0, d1, r5, 13); 2661 TESTINSN_VSTn_RI("vst2.32 {d0[1],d1[1]}", d0, d1, d0, d1, r9, 42); 2662 TESTINSN_VSTn_RI("vst2.32 {d0[0],d2[0]}", d0, d2, d0, d2, r1, 0); 2663 TESTINSN_VSTn_RI("vst2.32 {d0[1],d2[1]}", d0, d2, d0, d2, r5, -3); 2664 TESTINSN_VSTn_RI("vst2.16 {d1[0],d2[0]}", d1, d2, d1, d2, r5, 13); 2665 TESTINSN_VSTn_RI("vst2.16 {d1[1],d2[1]}", d1, d2, d1, d2, r5, 13); 2666 TESTINSN_VSTn_RI("vst2.16 {d1[2],d2[2]}", d1, d2, d1, d2, r5, 13); 2667 TESTINSN_VSTn_RI("vst2.16 {d1[3],d2[3]}", d1, d2, d1, d2, r5, 13); 2668 TESTINSN_VSTn_RI("vst2.16 {d1[0],d3[0]}", d1, d3, d1, d3, r5, 13); 2669 TESTINSN_VSTn_RI("vst2.16 {d1[1],d3[1]}", d1, d3, d1, d3, r5, 13); 2670 TESTINSN_VSTn_RI("vst2.16 {d1[2],d3[2]}", d1, d3, d1, d3, r5, 13); 2671 TESTINSN_VSTn_RI("vst2.16 {d1[3],d3[3]}", d1, d3, d1, d3, r5, 13); 2672 TESTINSN_VSTn_RI("vst2.8 {d0[7],d1[7]}", d0, d1, d0, d1, r5, 13); 2673 TESTINSN_VSTn_RI("vst2.8 {d1[6],d2[6]}", d1, d2, d1, d2, r5, 13); 2674 TESTINSN_VSTn_RI("vst2.8 {d0[5],d1[5]}", d0, d1, d0, d1, r5, 13); 2675 TESTINSN_VSTn_RI("vst2.8 {d0[4],d1[4]}", d0, d1, d0, d1, r5, 13); 2676 TESTINSN_VSTn_RI("vst2.8 {d20[3],d21[3]}", d20, d21, d20, d21, r5, 13); 2677 TESTINSN_VSTn_RI("vst2.8 {d0[2],d1[2]}", d0, d1, d0, d1, r5, 13); 2678 TESTINSN_VSTn_RI("vst2.8 {d17[1],d18[1]}", d17, d18, d17, d18, r5, 13); 2679 TESTINSN_VSTn_RI("vst2.8 {d30[0],d31[0]}", d30, d31, d30, d31, r5, 13); 2680 2681 fflush(stdout); 2682 printf("---- VST3 (multiple 3-elements) ----\n"); 2683 TESTINSN_VSTn_RI("vst3.8 {d20-d22}", d20, d21, d22, d20, r5, 13); 2684 TESTINSN_VSTn_RI("vst3.16 {d0-d2}", d0, d1, d2, d0, r9, 42); 2685 TESTINSN_VSTn_RI("vst3.32 {d0-d2}", d0, d1, d2, d0, r1, 0); 2686 TESTINSN_VSTn_RI("vst3.8 {d0,d2,d4}", d0, d2, d4, d0, r5, -3); 2687 TESTINSN_VSTn_RI("vst3.16 {d20,d22,d24}", d20, d22, d24, d20, r5, 13); 2688 TESTINSN_VSTn_RI("vst3.32 {d0,d2,d4}", d0, d2, d4, d0, r5, 13); 2689 2690 fflush(stdout); 2691 printf("---- VST3 (single 3-element structure from one lane) ----\n"); 2692 TESTINSN_VSTn_RI("vst3.32 {d0[0],d1[0],d2[0]}", d0, d1, d2, d1, r5, 13); 2693 TESTINSN_VSTn_RI("vst3.32 {d0[1],d1[1],d2[1]}", d0, d1, d2, d1, r9, 42); 2694 TESTINSN_VSTn_RI("vst3.32 {d0[0],d2[0],d4[0]}", d0, d2, d4, d2, r1, 0); 2695 TESTINSN_VSTn_RI("vst3.32 {d0[1],d2[1],d4[1]}", d0, d2, d4, d2, r5, -3); 2696 TESTINSN_VSTn_RI("vst3.16 {d1[0],d2[0],d3[0]}", d1, d2, d3, d2, r5, 13); 2697 TESTINSN_VSTn_RI("vst3.16 {d1[1],d2[1],d3[1]}", d1, d2, d3, d2, r5, 13); 2698 TESTINSN_VSTn_RI("vst3.16 {d1[2],d2[2],d3[2]}", d1, d2, d3, d2, r5, 13); 2699 TESTINSN_VSTn_RI("vst3.16 {d1[3],d2[3],d3[3]}", d1, d2, d3, d2, r5, 13); 2700 TESTINSN_VSTn_RI("vst3.16 {d1[0],d3[0],d5[0]}", d1, d3, d3, d5, r5, 13); 2701 TESTINSN_VSTn_RI("vst3.16 {d1[1],d3[1],d5[1]}", d1, d3, d3, d5, r5, 13); 2702 TESTINSN_VSTn_RI("vst3.16 {d1[2],d3[2],d5[2]}", d1, d3, d3, d5, r5, 13); 2703 TESTINSN_VSTn_RI("vst3.16 {d1[3],d3[3],d5[3]}", d1, d3, d3, d5, r5, 13); 2704 TESTINSN_VSTn_RI("vst3.8 {d0[7],d1[7],d2[7]}", d0, d1, d2, d1, r5, 13); 2705 TESTINSN_VSTn_RI("vst3.8 {d1[6],d2[6],d3[6]}", d1, d2, d3, d2, r5, 13); 2706 TESTINSN_VSTn_RI("vst3.8 {d0[5],d1[5],d2[5]}", d0, d1, d2, d1, r5, 13); 2707 TESTINSN_VSTn_RI("vst3.8 {d0[4],d1[4],d2[4]}", d0, d1, d2, d1, r5, 13); 2708 TESTINSN_VSTn_RI("vst3.8 {d20[3],d21[3],d22[3]}", d20, d21, d22, d21, r5, 13); 2709 TESTINSN_VSTn_RI("vst3.8 {d0[2],d1[2],d2[2]}", d0, d1, d2, d1, r5, 13); 2710 TESTINSN_VSTn_RI("vst3.8 {d17[1],d18[1],d19[1]}", d17, d18, d19, d18, r5, 13); 2711 TESTINSN_VSTn_RI("vst3.8 {d29[0],d30[0],d31[0]}", d30, d31, d29, d31, r5, 13); 2712 2713 fflush(stdout); 2714 printf("---- VST4 (multiple 4-elements) ----\n"); 2715 TESTINSN_VSTn_RI("vst4.8 {d0-d3}", d0, d1, d2, d3, r5, 13); 2716 TESTINSN_VSTn_RI("vst4.16 {d20-d23}", d20, d21, d22, d23, r9, 42); 2717 TESTINSN_VSTn_RI("vst4.32 {d0-d3}", d0, d1, d2, d3, r1, 0); 2718 TESTINSN_VSTn_RI("vst4.8 {d0,d2,d4,d6}", d0, d2, d4, d6, r5, -3); 2719 TESTINSN_VSTn_RI("vst4.16 {d1,d3,d5,d7}", d1, d3, d5, d7, r5, 13); 2720 TESTINSN_VSTn_RI("vst4.32 {d20,d22,d24,d26}", d20, d22, d24, d26, r5, 13); 2721 2722 fflush(stdout); 2723 printf("---- VST4 (single 4-element structure from one lane) ----\n"); 2724 TESTINSN_VSTn_RI("vst4.32 {d0[0],d1[0],d2[0],d3[0]}", d0, d1, d2, d3, r5, 13); 2725 TESTINSN_VSTn_RI("vst4.32 {d0[1],d1[1],d2[1],d3[1]}", d0, d1, d2, d4, r9, 42); 2726 TESTINSN_VSTn_RI("vst4.32 {d0[0],d2[0],d4[0],d6[0]}", d0, d2, d4, d6, r1, 0); 2727 TESTINSN_VSTn_RI("vst4.32 {d0[1],d2[1],d4[1],d6[1]}", d0, d2, d4, d6, r5, -3); 2728 TESTINSN_VSTn_RI("vst4.16 {d1[0],d2[0],d3[0],d4[0]}", d1, d2, d3, d4, r5, 13); 2729 TESTINSN_VSTn_RI("vst4.16 {d1[1],d2[1],d3[1],d4[1]}", d1, d2, d3, d4, r5, 13); 2730 TESTINSN_VSTn_RI("vst4.16 {d1[2],d2[2],d3[2],d4[2]}", d1, d2, d3, d4, r5, 13); 2731 TESTINSN_VSTn_RI("vst4.16 {d1[3],d2[3],d3[3],d4[3]}", d1, d2, d3, d4, r5, 13); 2732 TESTINSN_VSTn_RI("vst4.16 {d1[0],d3[0],d5[0],d7[0]}", d1, d3, d5, d7, r5, 13); 2733 TESTINSN_VSTn_RI("vst4.16 {d1[1],d3[1],d5[1],d7[1]}", d1, d3, d5, d7, r5, 13); 2734 TESTINSN_VSTn_RI("vst4.16 {d1[2],d3[2],d5[2],d7[2]}", d1, d3, d5, d7, r5, 13); 2735 TESTINSN_VSTn_RI("vst4.16 {d1[3],d3[3],d5[3],d7[3]}", d1, d3, d5, d7, r5, 13); 2736 TESTINSN_VSTn_RI("vst4.8 {d0[7],d1[7],d2[7],d3[7]}", d0, d1, d2, d3, r5, 13); 2737 TESTINSN_VSTn_RI("vst4.8 {d1[6],d2[6],d3[6],d4[6]}", d1, d2, d3, d4, r5, 13); 2738 TESTINSN_VSTn_RI("vst4.8 {d0[5],d1[5],d2[5],d3[5]}", d0, d1, d2, d3, r5, 13); 2739 TESTINSN_VSTn_RI("vst4.8 {d0[4],d1[4],d2[4],d3[4]}", d0, d1, d2, d3, r5, 13); 2740 TESTINSN_VSTn_RI("vst4.8 {d20[3],d21[3],d22[3],d23[3]}", d20, d21, d22, d23, r5, 13); 2741 TESTINSN_VSTn_RI("vst4.8 {d0[2],d1[2],d2[2],d3[2]}", d0, d1, d2, d3, r5, 13); 2742 TESTINSN_VSTn_RI("vst4.8 {d17[1],d18[1],d19[1],d20[1]}", d17, d18, d19, d20, r5, 13); 2743 TESTINSN_VSTn_RI("vst4.8 {d28[0],d29[0],d30[0],d31[0]}", d28, d29, d30, d31, r5, 13); 2744 2745 fflush(stdout); 2746 printf("---- VMOVN ----\n"); 2747 TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 2748 TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 2749 TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 2750 TESTINSN_bin("vmovn.i32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 2751 TESTINSN_bin("vmovn.i16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 2752 TESTINSN_bin("vmovn.i64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 2753 2754 fflush(stdout); 2755 printf("---- VQMOVN ----\n"); 2756 TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 2757 TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 2758 TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 2759 TESTINSN_bin_q("vqmovn.u32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 2760 TESTINSN_bin_q("vqmovn.u16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 2761 TESTINSN_bin_q("vqmovn.u64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 2762 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 2763 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 2764 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 2765 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 2766 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 2767 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 2768 TESTINSN_bin_q("vqmovn.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff); 2769 TESTINSN_bin_q("vqmovn.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff); 2770 TESTINSN_bin_q("vqmovn.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff); 2771 2772 fflush(stdout); 2773 printf("---- VQMOVN ----\n"); 2774 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i32, 0x32, d1, i32, 0x24); 2775 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i32, 0x32, d11, i32, 0x24); 2776 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0x32, d1, i32, 0x24); 2777 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xf0); 2778 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i16, 0xdead, d11, i16, 0xbeef); 2779 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i32, 0xff00fe0f, d1, i8, 0x24); 2780 TESTINSN_bin_q("vqmovun.s32 d0, q0", d0, d0, i8, 0xff, d1, i8, 0xff); 2781 TESTINSN_bin_q("vqmovun.s16 d7, q5", d7, d10, i8, 0xff, d11, i16, 0xff); 2782 TESTINSN_bin_q("vqmovun.s64 d31, q0", d31, d0, i8, 0xff, d1, i8, 0xff); 2783 2784 fflush(stdout); 2785 printf("---- VABS ----\n"); 2786 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0x73); 2787 TESTINSN_un("vabs.s16 d15, d4", d15, d4, i32, 0x73); 2788 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0x73); 2789 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i32, 0xfe); 2790 TESTINSN_un("vabs.s16 d31, d4", d31, d4, i32, 0xef); 2791 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i32, 0xde); 2792 TESTINSN_un("vabs.s32 d0, d1", d0, d1, i16, 0xfe0a); 2793 TESTINSN_un("vabs.s16 d15, d4", d15, d4, i16, 0xef0b); 2794 TESTINSN_un("vabs.s8 d8, d7", d8, d7, i16, 0xde0c); 2795 2796 fflush(stdout); 2797 printf("---- VQABS ----\n"); 2798 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0x73); 2799 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 1 << 31); 2800 TESTINSN_un_q("vqabs.s16 d0, d1", d0, d1, i32, 1 << 31); 2801 TESTINSN_un_q("vqabs.s8 d0, d1", d0, d1, i32, 1 << 31); 2802 TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i32, 0x73); 2803 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0x73); 2804 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i32, 0xfe); 2805 TESTINSN_un_q("vqabs.s16 d31, d4", d31, d4, i32, 0xef); 2806 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i32, 0xde); 2807 TESTINSN_un_q("vqabs.s32 d0, d1", d0, d1, i16, 0xfe0a); 2808 TESTINSN_un_q("vqabs.s16 d15, d4", d15, d4, i16, 0xef0b); 2809 TESTINSN_un_q("vqabs.s8 d8, d7", d8, d7, i16, 0xde0c); 2810 2811 fflush(stdout); 2812 printf("---- VADDHN ----\n"); 2813 TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 2814 TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2815 TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2816 TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2817 TESTINSN_bin("vaddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 2818 TESTINSN_bin("vaddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 2819 TESTINSN_bin("vaddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 2820 TESTINSN_bin("vaddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 2821 TESTINSN_bin("vaddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2822 TESTINSN_bin("vaddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2823 TESTINSN_bin("vaddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2824 2825 fflush(stdout); 2826 printf("---- VRADDHN ----\n"); 2827 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 2828 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2829 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2830 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2831 TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 2832 TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 2833 TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 2834 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 2835 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2836 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2837 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2838 TESTINSN_bin("vraddhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0102); 2839 TESTINSN_bin("vraddhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0102); 2840 TESTINSN_bin("vraddhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0102); 2841 TESTINSN_bin("vraddhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x02); 2842 TESTINSN_bin("vraddhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 2843 TESTINSN_bin("vraddhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 2844 TESTINSN_bin("vraddhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x02); 2845 2846 fflush(stdout); 2847 printf("---- VSUBHN ----\n"); 2848 TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 2849 TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2850 TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2851 TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2852 TESTINSN_bin("vsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 2853 TESTINSN_bin("vsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 2854 TESTINSN_bin("vsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 2855 TESTINSN_bin("vsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 2856 TESTINSN_bin("vsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2857 TESTINSN_bin("vsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2858 TESTINSN_bin("vsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2859 2860 fflush(stdout); 2861 printf("---- VRSUBHN ----\n"); 2862 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i32, 0x73, q1, i32, 0x72); 2863 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2864 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2865 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i32, 0x73, q2, i32, 0x72); 2866 TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef73, q2, i32, 0x0172); 2867 TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef73, q2, i32, 0x0172); 2868 TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef73, q8, i32, 0x0172); 2869 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x73, q1, i32, 0x72); 2870 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2871 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2872 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x73, q2, i32, 0x72); 2873 TESTINSN_bin("vrsubhn.i16 d0, q15, q2", d0, q15, i16, 0xef93, q2, i32, 0x0102); 2874 TESTINSN_bin("vrsubhn.i32 d31, q1, q2", d31, q1, i16, 0xef93, q2, i32, 0x0102); 2875 TESTINSN_bin("vrsubhn.i64 d0, q1, q8", d0, q1, i16, 0xef93, q8, i32, 0x0102); 2876 TESTINSN_bin("vrsubhn.i32 d0, q1, q1", d0, q1, i8, 0x93, q1, i32, 0x02); 2877 TESTINSN_bin("vrsubhn.i16 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 2878 TESTINSN_bin("vrsubhn.i32 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 2879 TESTINSN_bin("vrsubhn.i64 d0, q1, q2", d0, q1, i8, 0x93, q2, i32, 0x02); 2880 2881 fflush(stdout); 2882 printf("---- VCEQ #0 ----\n"); 2883 TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x21); 2884 TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x21); 2885 TESTINSN_un("vceq.i8 d10, d11, #0", d10, d11, i32, 0x21); 2886 TESTINSN_un("vceq.i32 d0, d1, #0", d0, d1, i32, 0x0); 2887 TESTINSN_un("vceq.i16 d2, d1, #0", d2, d1, i32, 0x0); 2888 TESTINSN_un("vceq.i8 d10, d31, #0", d10, d31, i32, 0x0); 2889 2890 fflush(stdout); 2891 printf("---- VCGT #0 ----\n"); 2892 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x21); 2893 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x21); 2894 TESTINSN_un("vcgt.s8 d10, d31, #0", d10, d31, i32, 0x21); 2895 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i32, 0x0); 2896 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i32, 0x0); 2897 TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i32, 0x0); 2898 TESTINSN_un("vcgt.s32 d0, d1, #0", d0, d1, i8, 0xef); 2899 TESTINSN_un("vcgt.s16 d2, d1, #0", d2, d1, i8, 0xed); 2900 TESTINSN_un("vcgt.s8 d10, d11, #0", d10, d11, i8, 0xae); 2901 2902 fflush(stdout); 2903 printf("---- VCGE #0 ----\n"); 2904 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x21); 2905 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x21); 2906 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0x21); 2907 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0x0); 2908 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0x0); 2909 TESTINSN_un("vcge.s8 d10, d31, #0", d10, d31, i32, 0x0); 2910 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i8, 0xef); 2911 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i8, 0xed); 2912 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i8, 0xae); 2913 TESTINSN_un("vcge.s32 d0, d1, #0", d0, d1, i32, 0xef); 2914 TESTINSN_un("vcge.s16 d2, d1, #0", d2, d1, i32, 0xed); 2915 TESTINSN_un("vcge.s8 d10, d11, #0", d10, d11, i32, 0xae); 2916 2917 fflush(stdout); 2918 printf("---- VCLE #0 ----\n"); 2919 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x21); 2920 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x21); 2921 TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i32, 0x21); 2922 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i32, 0x0); 2923 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i32, 0x0); 2924 TESTINSN_un("vcle.s8 d10, d31, #0", d10, d31, i32, 0x0); 2925 TESTINSN_un("vcle.s32 d0, d1, #0", d0, d1, i8, 0xef); 2926 TESTINSN_un("vcle.s16 d2, d1, #0", d2, d1, i8, 0xed); 2927 TESTINSN_un("vcle.s8 d10, d11, #0", d10, d11, i8, 0xae); 2928 2929 fflush(stdout); 2930 printf("---- VCLT #0 ----\n"); 2931 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x21); 2932 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x21); 2933 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x21); 2934 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0x0); 2935 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0x0); 2936 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0x0); 2937 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i8, 0xef); 2938 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i8, 0xed); 2939 TESTINSN_un("vclt.s8 d10, d31, #0", d10, d31, i8, 0xae); 2940 TESTINSN_un("vclt.s32 d0, d1, #0", d0, d1, i32, 0xef); 2941 TESTINSN_un("vclt.s16 d2, d1, #0", d2, d1, i32, 0xed); 2942 TESTINSN_un("vclt.s8 d10, d11, #0", d10, d11, i32, 0xae); 2943 2944 fflush(stdout); 2945 printf("---- VCNT ----\n"); 2946 TESTINSN_un("vcnt.8 d0, d1", d0, d1, i32, 0xac3d25eb); 2947 TESTINSN_un("vcnt.8 d11, d14", d11, d14, i32, 0xac3d25eb); 2948 TESTINSN_un("vcnt.8 d6, d2", d6, d2, i32, 0xad0eb); 2949 2950 fflush(stdout); 2951 printf("---- VCLS ----\n"); 2952 TESTINSN_un("vcls.s8 d0, d1", d0, d1, i32, 0x21); 2953 TESTINSN_un("vcls.s8 d30, d31", d30, d31, i8, 0x82); 2954 TESTINSN_un("vcls.s16 d0, d1", d0, d1, i32, 0x21); 2955 TESTINSN_un("vcls.s16 d31, d30", d31, d30, i8, 0x82); 2956 TESTINSN_un("vcls.s32 d6, d1", d6, d1, i32, 0x21); 2957 TESTINSN_un("vcls.s32 d30, d5", d30, d5, i8, 0x82); 2958 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0xff); 2959 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0xff); 2960 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0xff); 2961 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0xffef); 2962 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0xffef); 2963 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0xffef); 2964 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i8, 0x00); 2965 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i8, 0x00); 2966 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i8, 0x00); 2967 TESTINSN_un("vcls.s8 d2, d4", d2, d4, i16, 0x00ef); 2968 TESTINSN_un("vcls.s16 d2, d4", d2, d4, i16, 0x00ef); 2969 TESTINSN_un("vcls.s32 d2, d4", d2, d4, i16, 0x00ef); 2970 2971 fflush(stdout); 2972 printf("---- VCLZ ----\n"); 2973 TESTINSN_un("vclz.i8 d0, d1", d0, d1, i32, 0x21); 2974 TESTINSN_un("vclz.i8 d30, d31", d30, d31, i8, 0x82); 2975 TESTINSN_un("vclz.i16 d0, d1", d0, d1, i32, 0x21); 2976 TESTINSN_un("vclz.i16 d31, d30", d31, d30, i8, 0x82); 2977 TESTINSN_un("vclz.i32 d6, d1", d6, d1, i32, 0x21); 2978 TESTINSN_un("vclz.i32 d30, d5", d30, d5, i8, 0x82); 2979 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0xff); 2980 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0xff); 2981 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0xff); 2982 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0xffef); 2983 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0xffef); 2984 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0xffef); 2985 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i8, 0x00); 2986 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i8, 0x00); 2987 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i8, 0x00); 2988 TESTINSN_un("vclz.i8 d2, d4", d2, d4, i16, 0x00ef); 2989 TESTINSN_un("vclz.i16 d2, d4", d2, d4, i16, 0x00ef); 2990 TESTINSN_un("vclz.i32 d2, d4", d2, d4, i16, 0x00ef); 2991 2992 fflush(stdout); 2993 printf("---- VSLI ----\n"); 2994 TESTINSN_un("vsli.16 d0, d1, #1", d0, d1, i32, 7); 2995 TESTINSN_un("vsli.16 d3, d4, #2", d3, d4, i32, -0x7c); 2996 TESTINSN_un("vsli.32 d2, d5, #31", d2, d5, i32, -1); 2997 TESTINSN_un("vsli.8 d6, d7, #7", d6, d7, i32, 0xffff); 2998 TESTINSN_un("vsli.16 d8, d9, #12", d8, d9, i32, -10); 2999 TESTINSN_un("vsli.32 d10, d11, #5", d10, d11, i32, 10234); 3000 TESTINSN_un("vsli.8 d12, d13, #1", d12, d13, i32, -1); 3001 TESTINSN_un("vsli.16 d14, d15, #11", d14, d15, i32, -1); 3002 TESTINSN_un("vsli.32 d10, d11, #9", d10, d11, i32, 1000); 3003 TESTINSN_un("vsli.8 d7, d13, #7", d7, d13, i32, -1); 3004 TESTINSN_un("vsli.16 d8, d1, #1", d8, d1, i32, 0xabcf); 3005 TESTINSN_un("vsli.32 d12, d3, #15", d12, d3, i32, -0x1b0); 3006 TESTINSN_un("vsli.64 d0, d1, #42", d0, d1, i32, -1); 3007 TESTINSN_un("vsli.64 d6, d7, #12", d6, d7, i32, 0xfac); 3008 TESTINSN_un("vsli.64 d8, d4, #9", d8, d4, i32, 13560); 3009 TESTINSN_un("vsli.64 d9, d12, #11", d9, d12, i32, 98710); 3010 3011 fflush(stdout); 3012 printf("---- VPADD ----\n"); 3013 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 3014 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 3015 TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 3016 TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, 140, d2, i32, 120); 3017 TESTINSN_bin("vpadd.i8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3018 TESTINSN_bin("vpadd.i16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3019 TESTINSN_bin("vpadd.i32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3020 TESTINSN_bin("vpadd.i32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3021 3022 fflush(stdout); 3023 printf("---- VPADDL ----\n"); 3024 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 24); 3025 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, 140); 3026 TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, 140); 3027 TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, 140); 3028 TESTINSN_un("vpaddl.u8 d0, d1", d0, d1, i32, (1 << 31) + 1); 3029 TESTINSN_un("vpaddl.u16 d0, d1", d0, d1, i32, (1 << 31) + 1); 3030 TESTINSN_un("vpaddl.u32 d0, d1", d0, d1, i32, (1 << 31) + 1); 3031 TESTINSN_un("vpaddl.u32 d10, d11", d10, d11, i32, 24); 3032 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 24); 3033 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, 140); 3034 TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, 140); 3035 TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, 140); 3036 TESTINSN_un("vpaddl.s8 d0, d1", d0, d1, i32, (1 << 31) + 1); 3037 TESTINSN_un("vpaddl.s16 d0, d1", d0, d1, i32, (1 << 31) + 1); 3038 TESTINSN_un("vpaddl.s32 d0, d1", d0, d1, i32, (1 << 31) + 1); 3039 TESTINSN_un("vpaddl.s32 d10, d11", d10, d11, i32, 24); 3040 3041 fflush(stdout); 3042 printf("---- VPADAL ----\n"); 3043 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 24); 3044 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, 140); 3045 TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, 140); 3046 TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i8, 140); 3047 TESTINSN_un("vpadal.u8 d0, d1", d0, d1, i32, (1 << 31) + 1); 3048 TESTINSN_un("vpadal.u16 d0, d1", d0, d1, i32, (1 << 31) + 1); 3049 TESTINSN_un("vpadal.u32 d0, d1", d0, d1, i32, (1 << 31) + 1); 3050 TESTINSN_un("vpadal.u32 d10, d11", d10, d11, i32, 24); 3051 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 24); 3052 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, 140); 3053 TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, 140); 3054 TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i8, 140); 3055 TESTINSN_un("vpadal.s8 d0, d1", d0, d1, i32, (1 << 31) + 1); 3056 TESTINSN_un("vpadal.s16 d0, d1", d0, d1, i32, (1 << 31) + 1); 3057 TESTINSN_un("vpadal.s32 d0, d1", d0, d1, i32, (1 << 31) + 1); 3058 TESTINSN_un("vpadal.s32 d10, d11", d10, d11, i32, 24); 3059 3060 fflush(stdout); 3061 printf("---- VZIP ----\n"); 3062 TESTINSN_dual("vzip.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 3063 TESTINSN_dual("vzip.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 3064 TESTINSN_dual("vzip.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 3065 TESTINSN_dual("vzip.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 3066 TESTINSN_dual("vzip.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 3067 TESTINSN_dual("vzip.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 3068 3069 fflush(stdout); 3070 printf("---- VUZP ----\n"); 3071 TESTINSN_dual("vuzp.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 3072 TESTINSN_dual("vuzp.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 3073 TESTINSN_dual("vuzp.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 3074 TESTINSN_dual("vuzp.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 3075 TESTINSN_dual("vuzp.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 3076 TESTINSN_dual("vuzp.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 3077 3078 fflush(stdout); 3079 printf("---- VTRN ----\n"); 3080 TESTINSN_dual("vtrn.32 d0, d1", d0, i8, 0x12, d1, i8, 0x34); 3081 TESTINSN_dual("vtrn.16 d1, d0", d0, i8, 0x12, d1, i8, 0x34); 3082 TESTINSN_dual("vtrn.8 d10, d11", d10, i8, 0x12, d11, i8, 0x34); 3083 TESTINSN_dual("vtrn.32 d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 3084 TESTINSN_dual("vtrn.16 d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 3085 TESTINSN_dual("vtrn.8 d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 3086 3087 fflush(stdout); 3088 printf("---- VSWP ----\n"); 3089 TESTINSN_dual("vswp d0, d1", d0, i8, 0x12, d1, i8, 0x34); 3090 TESTINSN_dual("vswp d1, d0", d0, i8, 0x12, d1, i8, 0x34); 3091 TESTINSN_dual("vswp d10, d11", d10, i8, 0x12, d11, i8, 0x34); 3092 TESTINSN_dual("vswp d0, d1", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 3093 TESTINSN_dual("vswp d1, d0", d0, i32, 0x12345678, d1, i32, 0x0a0b0c0d); 3094 TESTINSN_dual("vswp d30, d31", d30, i32, 0x12345678, d31, i32, 0x0a0b0c0d); 3095 3096 fflush(stdout); 3097 printf("---- VSHRN ----\n"); 3098 TESTINSN_un("vshrn.i16 d0, q1, #1", d0, q1, i32, -1); 3099 TESTINSN_un("vshrn.i16 d3, q4, #2", d3, q4, i32, -0x7c); 3100 TESTINSN_un("vshrn.i32 d2, q5, #10", d2, q5, i32, -1); 3101 TESTINSN_un("vshrn.i32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3102 TESTINSN_un("vshrn.i64 d6, q7, #7", d6, q7, i32, 0xffff); 3103 TESTINSN_un("vshrn.i16 d8, q9, #8", d8, q9, i32, -10); 3104 TESTINSN_un("vshrn.i32 d10, q11, #5", d10, q11, i32, 10234); 3105 TESTINSN_un("vshrn.i64 d12, q13, #1", d12, q13, i32, -1); 3106 TESTINSN_un("vshrn.i16 d14, q15, #6", d14, q15, i32, -1); 3107 TESTINSN_un("vshrn.i32 d10, q11, #9", d10, q11, i32, 1000); 3108 TESTINSN_un("vshrn.i64 d7, q13, #7", d7, q13, i32, -1); 3109 TESTINSN_un("vshrn.i16 d8, q1, #1", d8, q1, i32, 0xabcf); 3110 TESTINSN_un("vshrn.i32 d12, q3, #15", d12, q3, i32, -0x1b0); 3111 TESTINSN_un("vshrn.i64 d0, q1, #22", d0, q1, i32, -1); 3112 TESTINSN_un("vshrn.i64 d6, q7, #12", d6, q7, i32, 0xfac); 3113 TESTINSN_un("vshrn.i64 d8, q4, #9", d8, q4, i32, 13560); 3114 TESTINSN_un("vshrn.i64 d9, q12, #11", d9, q12, i32, 98710); 3115 3116 fflush(stdout); 3117 printf("---- VDUP ----\n"); 3118 TESTINSN_un("vdup.8 d12, d2[0]", d12, d2, i32, 0xabc4657); 3119 TESTINSN_un("vdup.8 d0, d3[2]", d0, d3, i32, 0x7a1b3); 3120 TESTINSN_un("vdup.8 d1, d0[7]", d1, d0, i32, 0x713aaa); 3121 TESTINSN_un("vdup.8 d10, d4[3]", d10, d4, i32, 0xaa713); 3122 TESTINSN_un("vdup.8 d4, d28[4]", d4, d28, i32, 0x7b1c3); 3123 TESTINSN_un("vdup.16 d17, d19[1]", d17, d19, i32, 0x713ffff); 3124 TESTINSN_un("vdup.16 d15, d31[2]", d15, d31, i32, 0x7f00fa); 3125 TESTINSN_un("vdup.16 d6, d2[0]", d6, d2, i32, 0xffabcde); 3126 TESTINSN_un("vdup.16 d8, d22[3]", d8, d22, i32, 0x713); 3127 TESTINSN_un("vdup.16 d9, d2[0]", d9, d2, i32, 0x713); 3128 TESTINSN_un("vdup.32 d10, d17[1]", d10, d17, i32, 0x713); 3129 TESTINSN_un("vdup.32 d15, d11[0]", d15, d11, i32, 0x3); 3130 TESTINSN_un("vdup.32 d30, d29[1]", d30, d29, i32, 0xf00000aa); 3131 TESTINSN_un("vdup.32 d22, d0[1]", d22, d0, i32, 0xf); 3132 TESTINSN_un("vdup.32 d13, d13[0]", d13, d13, i32, -1); 3133 3134 fflush(stdout); 3135 printf("---- VQDMULH ----\n"); 3136 TESTINSN_bin_q("vqdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 3137 TESTINSN_bin_q("vqdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 3138 TESTINSN_bin_q("vqdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 3139 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 3140 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3141 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 3142 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 3143 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 3144 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3145 TESTINSN_bin_q("vqdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 3146 TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 3147 TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 3148 TESTINSN_bin_q("vqdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31); 3149 TESTINSN_bin_q("vqdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30); 3150 3151 fflush(stdout); 3152 printf("---- VQDMULH (by scalar) ----\n"); 3153 TESTINSN_bin_q("vqdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120); 3154 TESTINSN_bin_q("vqdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120); 3155 TESTINSN_bin_q("vqdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120); 3156 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 3157 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3158 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 3159 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12); 3160 TESTINSN_bin_q("vqdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 3161 TESTINSN_bin_q("vqdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3162 TESTINSN_bin_q("vqdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120); 3163 TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31); 3164 TESTINSN_bin_q("vqdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, 1 << 31); 3165 TESTINSN_bin_q("vqdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31); 3166 TESTINSN_bin_q("vqdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30); 3167 3168 fflush(stdout); 3169 printf("---- VSHRN ----\n"); 3170 TESTINSN_un("vshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657); 3171 TESTINSN_un("vshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3); 3172 TESTINSN_un("vshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa); 3173 TESTINSN_un("vshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713); 3174 TESTINSN_un("vshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3); 3175 TESTINSN_un("vshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff); 3176 TESTINSN_un("vshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa); 3177 TESTINSN_un("vshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc); 3178 TESTINSN_un("vshrn.i16 d8, q12, #3", d8, q12, i32, 0x713); 3179 TESTINSN_un("vshrn.i16 d9, q2, #7", d9, q2, i32, 0x713); 3180 TESTINSN_un("vshrn.i32 d10, q13, #2", d10, q13, i32, 0x713); 3181 TESTINSN_un("vshrn.i32 d15, q11, #1", d15, q11, i32, 0x3); 3182 TESTINSN_un("vshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa); 3183 TESTINSN_un("vshrn.i32 d12, q0, #6", d12, q0, i32, 0xf); 3184 TESTINSN_un("vshrn.i32 d13, q13, #2", d13, q13, i32, -1); 3185 3186 fflush(stdout); 3187 printf("---- VQSHRN ----\n"); 3188 TESTINSN_un_q("vqshrn.s16 d0, q1, #1", d0, q1, i32, -1); 3189 TESTINSN_un_q("vqshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c); 3190 TESTINSN_un_q("vqshrn.s32 d2, q5, #10", d2, q5, i32, -1); 3191 TESTINSN_un_q("vqshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3192 TESTINSN_un_q("vqshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 3193 TESTINSN_un_q("vqshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff); 3194 TESTINSN_un_q("vqshrn.s16 d8, q9, #8", d8, q9, i32, -10); 3195 TESTINSN_un_q("vqshrn.s32 d10, q11, #5", d10, q11, i32, 10234); 3196 TESTINSN_un_q("vqshrn.s64 d12, q13, #1", d12, q13, i32, -1); 3197 TESTINSN_un_q("vqshrn.s16 d14, q15, #6", d14, q15, i32, -1); 3198 TESTINSN_un_q("vqshrn.s32 d10, q11, #9", d10, q11, i32, 1000); 3199 TESTINSN_un_q("vqshrn.s64 d7, q13, #7", d7, q13, i32, -1); 3200 TESTINSN_un_q("vqshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 3201 TESTINSN_un_q("vqshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 3202 TESTINSN_un_q("vqshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 3203 TESTINSN_un_q("vqshrn.s64 d0, q1, #22", d0, q1, i32, -1); 3204 TESTINSN_un_q("vqshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac); 3205 TESTINSN_un_q("vqshrn.s64 d8, q4, #9", d8, q4, i32, 13560); 3206 TESTINSN_un_q("vqshrn.s64 d9, q12, #11", d9, q12, i32, 98710); 3207 TESTINSN_un_q("vqshrn.u16 d0, q1, #1", d0, q1, i32, -1); 3208 TESTINSN_un_q("vqshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c); 3209 TESTINSN_un_q("vqshrn.u32 d2, q5, #10", d2, q5, i32, -1); 3210 TESTINSN_un_q("vqshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3211 TESTINSN_un_q("vqshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff); 3212 TESTINSN_un_q("vqshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff); 3213 TESTINSN_un_q("vqshrn.u16 d8, q9, #8", d8, q9, i32, -10); 3214 TESTINSN_un_q("vqshrn.u32 d10, q11, #5", d10, q11, i32, 10234); 3215 TESTINSN_un_q("vqshrn.u64 d12, q13, #1", d12, q13, i32, -1); 3216 TESTINSN_un_q("vqshrn.u16 d14, q15, #6", d14, q15, i32, -1); 3217 TESTINSN_un_q("vqshrn.u32 d10, q11, #9", d10, q11, i32, 1000); 3218 TESTINSN_un_q("vqshrn.u64 d7, q13, #7", d7, q13, i32, -1); 3219 TESTINSN_un_q("vqshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf); 3220 TESTINSN_un_q("vqshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf); 3221 TESTINSN_un_q("vqshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0); 3222 TESTINSN_un_q("vqshrn.u64 d0, q1, #22", d0, q1, i32, -1); 3223 TESTINSN_un_q("vqshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac); 3224 TESTINSN_un_q("vqshrn.u64 d8, q4, #9", d8, q4, i32, 13560); 3225 TESTINSN_un_q("vqshrn.u64 d9, q12, #11", d9, q12, i32, 98710); 3226 3227 fflush(stdout); 3228 printf("---- VQSHRUN ----\n"); 3229 TESTINSN_un_q("vqshrun.s16 d0, q1, #1", d0, q1, i32, -1); 3230 TESTINSN_un_q("vqshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c); 3231 TESTINSN_un_q("vqshrun.s32 d2, q5, #10", d2, q5, i32, -1); 3232 TESTINSN_un_q("vqshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3233 TESTINSN_un_q("vqshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 3234 TESTINSN_un_q("vqshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff); 3235 TESTINSN_un_q("vqshrun.s16 d8, q9, #8", d8, q9, i32, -10); 3236 TESTINSN_un_q("vqshrun.s32 d10, q11, #5", d10, q11, i32, 10234); 3237 TESTINSN_un_q("vqshrun.s64 d12, q13, #1", d12, q13, i32, -1); 3238 TESTINSN_un_q("vqshrun.s16 d14, q15, #6", d14, q15, i32, -1); 3239 TESTINSN_un_q("vqshrun.s32 d10, q11, #9", d10, q11, i32, 1000); 3240 TESTINSN_un_q("vqshrun.s64 d7, q13, #7", d7, q13, i32, -1); 3241 TESTINSN_un_q("vqshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 3242 TESTINSN_un_q("vqshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 3243 TESTINSN_un_q("vqshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 3244 TESTINSN_un_q("vqshrun.s64 d0, q1, #22", d0, q1, i32, -1); 3245 TESTINSN_un_q("vqshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac); 3246 TESTINSN_un_q("vqshrun.s64 d8, q4, #9", d8, q4, i32, 13560); 3247 TESTINSN_un_q("vqshrun.s64 d9, q12, #11", d9, q12, i32, 98710); 3248 3249 fflush(stdout); 3250 printf("---- VQRSHRN ----\n"); 3251 TESTINSN_un_q("vqrshrn.s16 d0, q1, #1", d0, q1, i32, -1); 3252 TESTINSN_un_q("vqrshrn.s16 d3, q4, #2", d3, q4, i32, -0x7c); 3253 TESTINSN_un_q("vqrshrn.s32 d2, q5, #10", d2, q5, i32, -1); 3254 TESTINSN_un_q("vqrshrn.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3255 TESTINSN_un_q("vqrshrn.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 3256 TESTINSN_un_q("vqrshrn.s64 d6, q7, #7", d6, q7, i32, 0xffff); 3257 TESTINSN_un_q("vqrshrn.s16 d8, q9, #8", d8, q9, i32, -10); 3258 TESTINSN_un_q("vqrshrn.s32 d10, q11, #5", d10, q11, i32, 10234); 3259 TESTINSN_un_q("vqrshrn.s64 d12, q13, #1", d12, q13, i32, -1); 3260 TESTINSN_un_q("vqrshrn.s16 d14, q15, #6", d14, q15, i32, -1); 3261 TESTINSN_un_q("vqrshrn.s32 d10, q11, #9", d10, q11, i32, 1000); 3262 TESTINSN_un_q("vqrshrn.s64 d7, q13, #7", d7, q13, i32, -1); 3263 TESTINSN_un_q("vqrshrn.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 3264 TESTINSN_un_q("vqrshrn.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 3265 TESTINSN_un_q("vqrshrn.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 3266 TESTINSN_un_q("vqrshrn.s64 d0, q1, #22", d0, q1, i32, -1); 3267 TESTINSN_un_q("vqrshrn.s64 d6, q7, #12", d6, q7, i32, 0xfac); 3268 TESTINSN_un_q("vqrshrn.s64 d8, q4, #9", d8, q4, i32, 13560); 3269 TESTINSN_un_q("vqrshrn.s64 d9, q12, #11", d9, q12, i32, 98710); 3270 TESTINSN_un_q("vqrshrn.u16 d0, q1, #1", d0, q1, i32, -1); 3271 TESTINSN_un_q("vqrshrn.u16 d3, q4, #2", d3, q4, i32, -0x7c); 3272 TESTINSN_un_q("vqrshrn.u32 d2, q5, #10", d2, q5, i32, -1); 3273 TESTINSN_un_q("vqrshrn.u32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3274 TESTINSN_un_q("vqrshrn.u16 d2, q5, #1", d2, q5, i16, 0x7fff); 3275 TESTINSN_un_q("vqrshrn.u64 d6, q7, #7", d6, q7, i32, 0xffff); 3276 TESTINSN_un_q("vqrshrn.u16 d8, q9, #8", d8, q9, i32, -10); 3277 TESTINSN_un_q("vqrshrn.u32 d10, q11, #5", d10, q11, i32, 10234); 3278 TESTINSN_un_q("vqrshrn.u64 d12, q13, #1", d12, q13, i32, -1); 3279 TESTINSN_un_q("vqrshrn.u16 d14, q15, #6", d14, q15, i32, -1); 3280 TESTINSN_un_q("vqrshrn.u32 d10, q11, #9", d10, q11, i32, 1000); 3281 TESTINSN_un_q("vqrshrn.u64 d7, q13, #7", d7, q13, i32, -1); 3282 TESTINSN_un_q("vqrshrn.u16 d8, q1, #1", d8, q1, i32, 0xabcf); 3283 TESTINSN_un_q("vqrshrn.u32 d8, q1, #1", d8, q1, i32, 0xabcf); 3284 TESTINSN_un_q("vqrshrn.u32 d12, q3, #15", d12, q3, i32, -0x1b0); 3285 TESTINSN_un_q("vqrshrn.u64 d0, q1, #22", d0, q1, i32, -1); 3286 TESTINSN_un_q("vqrshrn.u64 d6, q7, #12", d6, q7, i32, 0xfac); 3287 TESTINSN_un_q("vqrshrn.u64 d8, q4, #9", d8, q4, i32, 13560); 3288 TESTINSN_un_q("vqrshrn.u64 d9, q12, #11", d9, q12, i32, 98710); 3289 3290 fflush(stdout); 3291 printf("---- VQRSHRUN ----\n"); 3292 TESTINSN_un_q("vqrshrun.s16 d0, q1, #1", d0, q1, i32, -1); 3293 TESTINSN_un_q("vqrshrun.s16 d3, q4, #2", d3, q4, i32, -0x7c); 3294 TESTINSN_un_q("vqrshrun.s32 d2, q5, #10", d2, q5, i32, -1); 3295 TESTINSN_un_q("vqrshrun.s32 d2, q5, #1", d2, q5, i32, 0x7fffffff); 3296 TESTINSN_un_q("vqrshrun.s16 d2, q5, #1", d2, q5, i16, 0x7fff); 3297 TESTINSN_un_q("vqrshrun.s64 d6, q7, #7", d6, q7, i32, 0xffff); 3298 TESTINSN_un_q("vqrshrun.s16 d8, q9, #8", d8, q9, i32, -10); 3299 TESTINSN_un_q("vqrshrun.s32 d10, q11, #5", d10, q11, i32, 10234); 3300 TESTINSN_un_q("vqrshrun.s64 d12, q13, #1", d12, q13, i32, -1); 3301 TESTINSN_un_q("vqrshrun.s16 d14, q15, #6", d14, q15, i32, -1); 3302 TESTINSN_un_q("vqrshrun.s32 d10, q11, #9", d10, q11, i32, 1000); 3303 TESTINSN_un_q("vqrshrun.s64 d7, q13, #7", d7, q13, i32, -1); 3304 TESTINSN_un_q("vqrshrun.s16 d8, q1, #1", d8, q1, i32, 0xabcf); 3305 TESTINSN_un_q("vqrshrun.s32 d8, q1, #1", d8, q1, i32, 0xabcf); 3306 TESTINSN_un_q("vqrshrun.s32 d12, q3, #15", d12, q3, i32, -0x1b0); 3307 TESTINSN_un_q("vqrshrun.s64 d0, q1, #22", d0, q1, i32, -1); 3308 TESTINSN_un_q("vqrshrun.s64 d6, q7, #12", d6, q7, i32, 0xfac); 3309 TESTINSN_un_q("vqrshrun.s64 d8, q4, #9", d8, q4, i32, 13560); 3310 TESTINSN_un_q("vqrshrun.s64 d9, q12, #11", d9, q12, i32, 98710); 3311 3312 fflush(stdout); 3313 printf("---- VRSHRN ----\n"); 3314 TESTINSN_un("vrshrn.i64 d2, q2, #1", d2, q2, i32, 0xabc4657); 3315 TESTINSN_un("vrshrn.i64 d3, q3, #0", d3, q3, i32, 0x7a1b3); 3316 TESTINSN_un("vrshrn.i64 d1, q0, #3", d1, q0, i32, 0x713aaa); 3317 TESTINSN_un("vrshrn.i64 d0, q4, #5", d0, q4, i32, 0xaa713); 3318 TESTINSN_un("vrshrn.i64 d4, q8, #11", d4, q8, i32, 0x7b1c3); 3319 TESTINSN_un("vrshrn.i16 d7, q12, #6", d7, q12, i32, 0x713ffff); 3320 TESTINSN_un("vrshrn.i16 d15, q11, #2", d15, q11, i32, 0x7f00fa); 3321 TESTINSN_un("vrshrn.i16 d6, q2, #4", d6, q2, i32, 0xffabc); 3322 TESTINSN_un("vrshrn.i16 d8, q12, #3", d8, q12, i32, 0x713); 3323 TESTINSN_un("vrshrn.i16 d9, q2, #7", d9, q2, i32, 0x713); 3324 TESTINSN_un("vrshrn.i32 d10, q13, #2", d10, q13, i32, 0x713); 3325 TESTINSN_un("vrshrn.i32 d15, q11, #1", d15, q11, i32, 0x3); 3326 TESTINSN_un("vrshrn.i32 d10, q9, #5", d10, q9, i32, 0xf00000aa); 3327 TESTINSN_un("vrshrn.i32 d12, q0, #6", d12, q0, i32, 0xf); 3328 TESTINSN_un("vrshrn.i32 d13, q13, #2", d13, q13, i32, -1); 3329 3330 fflush(stdout); 3331 printf("---- VSHL (immediate) ----\n"); 3332 TESTINSN_un("vshl.i64 d0, d1, #1", d0, d1, i32, 24); 3333 TESTINSN_un("vshl.i64 d5, d2, #1", d5, d2, i32, (1 << 30)); 3334 TESTINSN_un("vshl.i64 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 3335 TESTINSN_un("vshl.i64 d11, d2, #12", d11, d2, i32, -1); 3336 TESTINSN_un("vshl.i64 d15, d12, #63", d15, d12, i32, 5); 3337 TESTINSN_un("vshl.i64 d5, d12, #62", d5, d12, i32, (1 << 31) + 1); 3338 TESTINSN_un("vshl.i32 d0, d1, #1", d0, d1, i32, 24); 3339 TESTINSN_un("vshl.i32 d5, d2, #1", d5, d2, i32, (1 << 30)); 3340 TESTINSN_un("vshl.i32 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 3341 TESTINSN_un("vshl.i32 d11, d2, #12", d11, d2, i32, -1); 3342 TESTINSN_un("vshl.i32 d15, d12, #20", d15, d12, i32, 5); 3343 TESTINSN_un("vshl.i32 d5, d12, #30", d5, d12, i32, (1 << 31) + 1); 3344 TESTINSN_un("vshl.i16 d0, d1, #1", d0, d1, i16, 24); 3345 TESTINSN_un("vshl.i16 d5, d2, #1", d5, d2, i32, (1 << 30)); 3346 TESTINSN_un("vshl.i16 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 3347 TESTINSN_un("vshl.i16 d11, d2, #12", d11, d2, i16, -1); 3348 TESTINSN_un("vshl.i16 d15, d12, #3", d15, d12, i16, 5); 3349 TESTINSN_un("vshl.i16 d5, d12, #14", d5, d12, i32, (1 << 31) + 1); 3350 TESTINSN_un("vshl.i8 d0, d1, #1", d0, d1, i8, 24); 3351 TESTINSN_un("vshl.i8 d5, d2, #1", d5, d2, i32, (1 << 30)); 3352 TESTINSN_un("vshl.i8 d9, d12, #2", d9, d12, i32, (1 << 31) + 2); 3353 TESTINSN_un("vshl.i8 d11, d2, #7", d11, d2, i8, -1); 3354 TESTINSN_un("vshl.i8 d15, d12, #3", d15, d12, i8, 5); 3355 TESTINSN_un("vshl.i8 d5, d12, #6", d5, d12, i32, (1 << 31) + 1); 3356 3357 fflush(stdout); 3358 printf("---- VNEG ----\n"); 3359 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0x73); 3360 TESTINSN_un("vneg.s16 d15, d4", d15, d4, i32, 0x73); 3361 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0x73); 3362 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i32, 0xfe); 3363 TESTINSN_un("vneg.s16 d31, d4", d31, d4, i32, 0xef); 3364 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i32, 0xde); 3365 TESTINSN_un("vneg.s32 d0, d1", d0, d1, i16, 0xfe0a); 3366 TESTINSN_un("vneg.s16 d15, d4", d15, d4, i16, 0xef0b); 3367 TESTINSN_un("vneg.s8 d8, d7", d8, d7, i16, 0xde0c); 3368 3369 fflush(stdout); 3370 printf("---- VQNEG ----\n"); 3371 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0x73); 3372 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 1 << 31); 3373 TESTINSN_un_q("vqneg.s16 d0, d1", d0, d1, i32, 1 << 31); 3374 TESTINSN_un_q("vqneg.s8 d0, d1", d0, d1, i32, 1 << 31); 3375 TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i32, 0x73); 3376 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0x73); 3377 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i32, 0xfe); 3378 TESTINSN_un_q("vqneg.s16 d31, d4", d31, d4, i32, 0xef); 3379 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i32, 0xde); 3380 TESTINSN_un_q("vqneg.s32 d0, d1", d0, d1, i16, 0xfe0a); 3381 TESTINSN_un_q("vqneg.s16 d15, d4", d15, d4, i16, 0xef0b); 3382 TESTINSN_un_q("vqneg.s8 d8, d7", d8, d7, i16, 0xde0c); 3383 3384 fflush(stdout); 3385 printf("---- VREV ----\n"); 3386 TESTINSN_un("vrev64.8 d0, d1", d0, d1, i32, 0xaabbccdd); 3387 TESTINSN_un("vrev64.16 d10, d31", d10, d31, i32, 0xaabbccdd); 3388 TESTINSN_un("vrev64.32 d1, d14", d1, d14, i32, 0xaabbccdd); 3389 TESTINSN_un("vrev32.8 d0, d1", d0, d1, i32, 0xaabbccdd); 3390 TESTINSN_un("vrev32.16 d30, d15", d30, d15, i32, 0xaabbccdd); 3391 TESTINSN_un("vrev16.8 d0, d1", d0, d1, i32, 0xaabbccdd); 3392 3393 fflush(stdout); 3394 printf("---- VTBL ----\n"); 3395 TESTINSN_tbl_1("vtbl.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678); 3396 TESTINSN_tbl_1("vtbl.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678); 3397 TESTINSN_tbl_1("vtbl.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678); 3398 TESTINSN_tbl_1("vtbl.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678); 3399 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678); 3400 TESTINSN_tbl_1("vtbl.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678); 3401 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678); 3402 TESTINSN_tbl_1("vtbl.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678); 3403 TESTINSN_tbl_2("vtbl.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3404 TESTINSN_tbl_2("vtbl.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4); 3405 TESTINSN_tbl_2("vtbl.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4); 3406 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3407 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3408 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3409 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3410 TESTINSN_tbl_2("vtbl.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3411 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3412 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3413 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3414 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3415 TESTINSN_tbl_2("vtbl.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3416 TESTINSN_tbl_3("vtbl.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3417 TESTINSN_tbl_3("vtbl.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd); 3418 TESTINSN_tbl_3("vtbl.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd); 3419 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3420 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3421 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3422 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3423 TESTINSN_tbl_3("vtbl.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3424 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3425 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3426 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3427 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3428 TESTINSN_tbl_3("vtbl.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3429 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); 3430 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); 3431 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); 3432 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); 3433 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); 3434 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); 3435 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); 3436 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); 3437 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); 3438 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); 3439 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); 3440 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); 3441 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); 3442 3443 fflush(stdout); 3444 printf("---- VTBX ----\n"); 3445 TESTINSN_tbl_1("vtbx.8 d0, {d2}, d1", d0, d1, i8, 0, d2, i32, 0x12345678); 3446 TESTINSN_tbl_1("vtbx.8 d0, {d31}, d1", d0, d1, i8, 0x07, d31, i32, 0x12345678); 3447 TESTINSN_tbl_1("vtbx.8 d0, {d20}, d1", d0, d1, i8, 1, d20, i32, 0x12345678); 3448 TESTINSN_tbl_1("vtbx.8 d0, {d2}, d31", d0, d31, i8, 2, d2, i32, 0x12345678); 3449 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07030501, d2, i32, 0x12345678); 3450 TESTINSN_tbl_1("vtbx.8 d31, {d2}, d1", d31, d1, i16, 0x0104, d2, i32, 0x12345678); 3451 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07080501, d2, i32, 0x12345678); 3452 TESTINSN_tbl_1("vtbx.8 d30, {d2}, d1", d30, d1, i32, 0x07ed05ee, d2, i32, 0x12345678); 3453 TESTINSN_tbl_2("vtbx.8 d0, {d2-d3}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3454 TESTINSN_tbl_2("vtbx.8 d0, {d1-d2}, d3", d0, d3, i8, 0xa, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4); 3455 TESTINSN_tbl_2("vtbx.8 d0, {d30-d31}, d1", d0, d1, i8, 0xf, d30, i32, 0x12345678, d31, i32, 0xa1a2a3a4); 3456 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3457 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3458 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3459 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 14, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3460 TESTINSN_tbl_2("vtbx.8 d0, {d22-d23}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4); 3461 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3462 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3463 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x070e0e01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3464 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x0d130f01, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3465 TESTINSN_tbl_2("vtbx.8 d30, {d2-d3}, d31", d30, d31, i32, 0x07030511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4); 3466 TESTINSN_tbl_3("vtbx.8 d0, {d2-d4}, d1", d0, d1, i8, 0, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3467 TESTINSN_tbl_3("vtbx.8 d0, {d1-d3}, d10", d0, d10, i8, 0x11, d1, i32, 0x12345678, d2, i32, 0xa1a2a3a4, d3, i32, 0xcacbcccd); 3468 TESTINSN_tbl_3("vtbx.8 d0, {d29-d31}, d1", d0, d1, i8, 0x17, d29, i32, 0x12345678, d30, i32, 0xa1a2a3a4, d31, i32, 0xcacbcccd); 3469 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 9, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3470 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 15, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3471 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 4, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3472 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 16, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3473 TESTINSN_tbl_3("vtbx.8 d0, {d22-d24}, d1", d0, d1, i8, 17, d22, i32, 0x12345678, d23, i32, 0xa1a2a3a4, d24, i32, 0xcacbcccd); 3474 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0a031504, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3475 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0c0a0501, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3476 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x170efe0f, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3477 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x0d130f11, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3478 TESTINSN_tbl_3("vtbx.8 d30, {d2-d4}, d31", d30, d31, i32, 0x070f1511, d2, i32, 0x12345678, d3, i32, 0xa1a2a3a4, d4, i32, 0xcacbcccd); 3479 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); 3480 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); 3481 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); 3482 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); 3483 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); 3484 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); 3485 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); 3486 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); 3487 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); 3488 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); 3489 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); 3490 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); 3491 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); 3492 3493 fflush(stdout); 3494 printf("---- VPMAX (integer) ----\n"); 3495 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 3496 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 3497 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 3498 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 3499 TESTINSN_bin("vpmax.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 3500 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 3501 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3502 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3503 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 3504 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3505 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3506 TESTINSN_bin("vpmax.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 3507 TESTINSN_bin("vpmax.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3508 TESTINSN_bin("vpmax.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3509 TESTINSN_bin("vpmax.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3510 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 3511 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 3512 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 3513 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 3514 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120); 3515 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3516 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3517 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3518 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3519 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3520 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3521 TESTINSN_bin("vpmax.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3522 TESTINSN_bin("vpmax.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3523 TESTINSN_bin("vpmax.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3524 TESTINSN_bin("vpmax.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3525 3526 fflush(stdout); 3527 printf("---- VPMIN (integer) ----\n"); 3528 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 121); 3529 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 121); 3530 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 3531 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 3532 TESTINSN_bin("vpmin.s8 d0, d1, d2", d0, d1, i32, 120, d2, i32, 120); 3533 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 3534 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3535 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3536 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 3537 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3538 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3539 TESTINSN_bin("vpmin.s8 d5, d7, d5", d5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 3540 TESTINSN_bin("vpmin.s16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3541 TESTINSN_bin("vpmin.s32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3542 TESTINSN_bin("vpmin.s32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3543 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 25, d2, i32, 120); 3544 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 250, d2, i32, 120); 3545 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, 140, d2, i32, 140); 3546 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, 0x01200140, d2, i32, 120); 3547 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, 0x01202120, d2, i32, 120); 3548 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3549 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3550 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 3551 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3552 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3553 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 3554 TESTINSN_bin("vpmin.u8 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3555 TESTINSN_bin("vpmin.u16 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3556 TESTINSN_bin("vpmin.u32 d0, d1, d2", d0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 3557 TESTINSN_bin("vpmin.u32 d10, d11, d12", d10, d11, i32, 24, d12, i32, 120); 3558 3559 fflush(stdout); 3560 printf("---- VQRDMULH ----\n"); 3561 TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d2", d0, d1, i32, 24, d2, i32, 120); 3562 TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d8", d6, d7, i32, 140, d8, i32, -120); 3563 TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d12", d9, d11, i32, 0x140, d12, i32, 0x120); 3564 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 3565 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3566 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 3567 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31), d9, i32, 12); 3568 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 3569 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3570 TESTINSN_bin_q("vqrdmulh.s32 d10, d11, d15", d10, d11, i32, 24, d15, i32, 120); 3571 TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 31); 3572 TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, (1 << 31) + 1); 3573 TESTINSN_bin_q("vqrdmulh.s32 d10, d30, d31", d10, d30, i32, 1 << 30, d31, i32, 1 << 31); 3574 TESTINSN_bin_q("vqrdmulh.s16 d10, d30, d31", d10, d30, i32, 1 << 31, d31, i32, 1 << 30); 3575 3576 fflush(stdout); 3577 printf("---- VQRDMULH (by scalar) ----\n"); 3578 TESTINSN_bin_q("vqrdmulh.s32 d0, d1, d6[0]", d0, d1, i32, 24, d6, i32, 120); 3579 TESTINSN_bin_q("vqrdmulh.s32 d6, d7, d1[1]", d6, d7, i32, 140, d1, i32, -120); 3580 TESTINSN_bin_q("vqrdmulh.s16 d9, d11, d7[0]", d9, d11, i32, 0x140, d7, i32, 0x120); 3581 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[0]", d4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 3582 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[1]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3583 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[1]", d4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 3584 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31), d9, i32, 12); 3585 TESTINSN_bin_q("vqrdmulh.s16 d4, d5, d6[2]", d4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 3586 TESTINSN_bin_q("vqrdmulh.s32 d7, d8, d9[0]", d7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 3587 TESTINSN_bin_q("vqrdmulh.s32 d10, d31, d15[0]", d10, d31, i32, 24, d15, i32, 120); 3588 TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 31, d7, i32, 1 << 31); 3589 TESTINSN_bin_q("vqrdmulh.s16 d10, d14, d7[3]", d10, d14, i32, 1 << 31, q15, i32, (1 << 31) + 1); 3590 TESTINSN_bin_q("vqrdmulh.s32 d10, d14, d15[1]", d10, d14, i32, 1 << 30, d15, i32, 1 << 31); 3591 TESTINSN_bin_q("vqrdmulh.s16 d31, d14, d7[1]", d31, d14, i32, 1 << 31, d7, i32, 1 << 30); 3592 3593 fflush(stdout); 3594 printf("---- VADD (fp) ----\n"); 3595 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3596 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3597 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3598 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3599 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3600 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 3601 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 3602 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3603 TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3604 TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3605 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3606 TESTINSN_bin("vadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3607 TESTINSN_bin("vadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3608 TESTINSN_bin("vadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3609 TESTINSN_bin("vadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3610 TESTINSN_bin("vadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3611 TESTINSN_bin("vadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3612 TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3613 TESTINSN_bin("vadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3614 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3615 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3616 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3617 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3618 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3619 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3620 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3621 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3622 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3623 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3624 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3625 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3626 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3627 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3628 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3629 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3630 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3631 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3632 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3633 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3634 TESTINSN_bin("vadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3635 3636 fflush(stdout); 3637 printf("---- VSUB (fp) ----\n"); 3638 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3639 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3640 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3641 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3642 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3643 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3644 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3645 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3646 TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3647 TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3648 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3649 TESTINSN_bin("vsub.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3650 TESTINSN_bin("vsub.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3651 TESTINSN_bin("vsub.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3652 TESTINSN_bin("vsub.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3653 TESTINSN_bin("vsub.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3654 TESTINSN_bin("vsub.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3655 TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3656 TESTINSN_bin("vsub.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3657 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3658 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3659 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3660 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3661 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3662 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3663 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3664 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3665 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3666 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3667 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3668 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3669 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3670 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3671 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3672 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3673 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3674 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3675 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3676 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3677 TESTINSN_bin("vsub.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3678 3679 fflush(stdout); 3680 printf("---- VMUL (fp) ----\n"); 3681 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3682 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3683 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3684 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3685 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3686 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3687 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3688 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3689 TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3690 TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3691 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3692 TESTINSN_bin("vmul.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3693 TESTINSN_bin("vmul.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3694 TESTINSN_bin("vmul.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3695 TESTINSN_bin("vmul.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3696 TESTINSN_bin("vmul.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3697 TESTINSN_bin("vmul.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3698 TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3699 TESTINSN_bin("vmul.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3700 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3701 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3702 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3703 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3704 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3705 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3706 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3707 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3708 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3709 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3710 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3711 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3712 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3713 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3714 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3715 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3716 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3717 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3718 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3719 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3720 TESTINSN_bin("vmul.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3721 3722 fflush(stdout); 3723 printf("---- VMUL (fp by scalar) ----\n"); 3724 TESTINSN_bin("vmul.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120)); 3725 TESTINSN_bin("vmul.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120)); 3726 TESTINSN_bin("vmul.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 3727 TESTINSN_bin("vmul.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 3728 TESTINSN_bin("vmul.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 3729 TESTINSN_bin("vmul.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 3730 TESTINSN_bin("vmul.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11)); 3731 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3732 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3733 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3734 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3735 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3736 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3737 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3738 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3739 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3740 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3741 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3742 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3743 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3744 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3745 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3746 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3747 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3748 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3749 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3750 TESTINSN_bin("vmul.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3751 3752 fflush(stdout); 3753 printf("---- VMLA (fp) ----\n"); 3754 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3755 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3756 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3757 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3758 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3759 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3760 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3761 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3762 TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3763 TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3764 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3765 TESTINSN_bin_f("vmla.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3766 TESTINSN_bin_f("vmla.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3767 TESTINSN_bin_f("vmla.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3768 TESTINSN_bin_f("vmla.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3769 TESTINSN_bin_f("vmla.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3770 TESTINSN_bin_f("vmla.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3771 TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3772 TESTINSN_bin_f("vmla.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3773 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3774 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3775 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3776 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3777 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3778 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3779 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3780 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3781 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3782 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3783 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3784 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3785 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3786 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3787 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3788 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3789 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3790 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3791 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3792 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3793 TESTINSN_bin_f("vmla.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3794 3795 fflush(stdout); 3796 printf("---- VMLA (fp by scalar) ----\n"); 3797 TESTINSN_bin_f("vmla.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120)); 3798 TESTINSN_bin_f("vmla.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120)); 3799 TESTINSN_bin_f("vmla.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 3800 TESTINSN_bin_f("vmla.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 3801 TESTINSN_bin_f("vmla.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 3802 TESTINSN_bin_f("vmla.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 3803 TESTINSN_bin_f("vmla.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11)); 3804 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3805 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3806 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3807 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3808 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3809 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3810 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3811 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3812 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3813 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3814 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3815 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3816 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3817 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3818 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3819 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3820 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3821 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3822 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3823 TESTINSN_bin_f("vmla.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3824 3825 fflush(stdout); 3826 printf("---- VMLS (fp) ----\n"); 3827 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3828 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3829 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3830 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3831 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3832 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3833 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3834 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3835 TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3836 TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3837 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3838 TESTINSN_bin_f("vmls.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3839 TESTINSN_bin_f("vmls.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3840 TESTINSN_bin_f("vmls.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3841 TESTINSN_bin_f("vmls.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3842 TESTINSN_bin_f("vmls.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3843 TESTINSN_bin_f("vmls.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3844 TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3845 TESTINSN_bin_f("vmls.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3846 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3847 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3848 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3849 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3850 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3851 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3852 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3853 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3854 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3855 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3856 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3857 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3858 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3859 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3860 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3861 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3862 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3863 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3864 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3865 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3866 TESTINSN_bin_f("vmls.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3867 3868 fflush(stdout); 3869 printf("---- VMLS (fp by scalar) ----\n"); 3870 TESTINSN_bin_f("vmls.f32 d0, d1, d4[0]", d0, d1, i32, f2u(24), d4, i32, f2u(120)); 3871 TESTINSN_bin_f("vmls.f32 d31, d8, d7[1]", d31, d8, i32, f2u(140), d7, i32, f2u(-120)); 3872 TESTINSN_bin_f("vmls.f32 d4, d8, d15[1]", d4, d8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 3873 TESTINSN_bin_f("vmls.f32 d7, d8, d1[1]", d7, d8, i32, (1 << 31), d1, i16, 12); 3874 TESTINSN_bin_f("vmls.f32 d17, d8, d1[1]", d17, d8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 3875 TESTINSN_bin_f("vmls.f32 d7, d8, d1[0]", d7, d8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 3876 TESTINSN_bin_f("vmls.f32 d7, d24, d1[0]", d7, d24, i32, f2u(1e12), d1, i32, f2u(1e11)); 3877 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3878 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3879 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3880 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3881 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3882 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3883 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3884 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3885 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3886 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3887 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3888 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3889 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3890 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3891 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3892 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3893 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3894 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3895 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3896 TESTINSN_bin_f("vmls.f32 d0, d1, d2[0]", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3897 3898 fflush(stdout); 3899 printf("---- VABD (fp) ----\n"); 3900 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3901 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3902 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3903 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3904 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3905 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3906 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3907 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3908 TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3909 TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3910 TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3911 TESTINSN_bin("vabd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3912 TESTINSN_bin("vabd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3913 TESTINSN_bin("vabd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3914 TESTINSN_bin("vabd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3915 TESTINSN_bin("vabd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3916 TESTINSN_bin("vabd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3917 TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3918 TESTINSN_bin("vabd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3919 TESTINSN_bin("vabd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3920 3921 fflush(stdout); 3922 printf("---- VPADD (fp) ----\n"); 3923 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 3924 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 3925 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 3926 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 3927 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 3928 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 3929 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 3930 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 3931 TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 3932 TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 3933 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 3934 TESTINSN_bin("vpadd.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 3935 TESTINSN_bin("vpadd.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 3936 TESTINSN_bin("vpadd.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 3937 TESTINSN_bin("vpadd.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 3938 TESTINSN_bin("vpadd.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 3939 TESTINSN_bin("vpadd.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 3940 TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 3941 TESTINSN_bin("vpadd.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 3942 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 3943 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 3944 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 3945 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 3946 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 3947 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 3948 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 3949 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 3950 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 3951 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 3952 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 3953 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 3954 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 3955 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 3956 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 3957 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 3958 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 3959 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 3960 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 3961 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 3962 TESTINSN_bin("vpadd.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 3963 3964 fflush(stdout); 3965 printf("---- VCVT (integer <-> fp) ----\n"); 3966 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(3.2)); 3967 TESTINSN_un("vcvt.u32.f32 d10, d11", d10, d11, i32, f2u(3e22)); 3968 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(3e9)); 3969 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 3970 TESTINSN_un("vcvt.u32.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 3971 TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 3972 TESTINSN_un("vcvt.u32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 3973 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(3.2)); 3974 TESTINSN_un("vcvt.s32.f32 d20, d21", d20, d21, i32, f2u(3e22)); 3975 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(3e9)); 3976 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 3977 TESTINSN_un("vcvt.s32.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 3978 TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 3979 TESTINSN_un("vcvt.s32.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 3980 TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, 7); 3981 TESTINSN_un("vcvt.f32.u32 d10, d11", d10, d11, i32, 1 << 31); 3982 TESTINSN_un("vcvt.f32.u32 d0, d1", d0, d1, i32, (1U << 31) + 1); 3983 TESTINSN_un("vcvt.f32.u32 d24, d26", d24, d26, i32, (1U << 31) - 1); 3984 TESTINSN_un("vcvt.f32.u32 d0, d14", d0, d14, i32, 0x30a0bcef); 3985 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, 7); 3986 TESTINSN_un("vcvt.f32.s32 d30, d31", d30, d31, i32, 1 << 31); 3987 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) + 1); 3988 TESTINSN_un("vcvt.f32.s32 d0, d1", d0, d1, i32, (1U << 31) - 1); 3989 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(NAN)); 3990 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(0.0)); 3991 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 3992 TESTINSN_un("vcvt.u32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 3993 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(NAN)); 3994 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(0.0)); 3995 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 3996 TESTINSN_un("vcvt.s32.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 3997 3998 fflush(stdout); 3999 printf("---- VCVT (fixed <-> fp) ----\n"); 4000 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(3.2)); 4001 TESTINSN_un("vcvt.u32.f32 d10, d11, #1", d10, d11, i32, f2u(3e22)); 4002 TESTINSN_un("vcvt.u32.f32 d15, d4, #32", d15, d4, i32, f2u(3e9)); 4003 TESTINSN_un("vcvt.u32.f32 d15, d4, #7", d15, d4, i32, f2u(-0.5)); 4004 TESTINSN_un("vcvt.u32.f32 d15, d4, #4", d15, d4, i32, f2u(-7.1)); 4005 TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4006 TESTINSN_un("vcvt.u32.f32 d12, d8, #3", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4007 TESTINSN_un("vcvt.s32.f32 d0, d1, #5", d0, d1, i32, f2u(3.2)); 4008 TESTINSN_un("vcvt.s32.f32 d20, d21, #1", d20, d21, i32, f2u(3e22)); 4009 TESTINSN_un("vcvt.s32.f32 d15, d4, #8", d15, d4, i32, f2u(3e9)); 4010 TESTINSN_un("vcvt.s32.f32 d15, d4, #2", d15, d4, i32, f2u(-0.5)); 4011 TESTINSN_un("vcvt.s32.f32 d15, d4, #1", d15, d4, i32, f2u(-7.1)); 4012 TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4013 TESTINSN_un("vcvt.s32.f32 d12, d8, #2", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4014 TESTINSN_un("vcvt.f32.u32 d0, d1, #5", d0, d1, i32, 7); 4015 TESTINSN_un("vcvt.f32.u32 d10, d11, #9", d10, d11, i32, 1 << 31); 4016 TESTINSN_un("vcvt.f32.u32 d0, d1, #4", d0, d1, i32, (1U << 31) + 1); 4017 TESTINSN_un("vcvt.f32.u32 d24, d26, #6", d24, d26, i32, (1U << 31) - 1); 4018 TESTINSN_un("vcvt.f32.u32 d0, d14, #5", d0, d14, i32, 0x30a0bcef); 4019 TESTINSN_un("vcvt.f32.s32 d0, d1, #12", d0, d1, i32, 7); 4020 TESTINSN_un("vcvt.f32.s32 d30, d31, #8", d30, d31, i32, 1 << 31); 4021 TESTINSN_un("vcvt.f32.s32 d0, d1, #1", d0, d1, i32, (1U << 31) + 1); 4022 TESTINSN_un("vcvt.f32.s32 d0, d1, #6", d0, d1, i32, (1U << 31) - 1); 4023 TESTINSN_un("vcvt.f32.s32 d0, d14, #2", d0, d14, i32, 0x30a0bcef); 4024 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN)); 4025 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0)); 4026 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY)); 4027 TESTINSN_un("vcvt.u32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY)); 4028 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(NAN)); 4029 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(0.0)); 4030 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(INFINITY)); 4031 TESTINSN_un("vcvt.s32.f32 d0, d1, #3", d0, d1, i32, f2u(-INFINITY)); 4032 4033 fflush(stdout); 4034 printf("---- VMAX (fp) ----\n"); 4035 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4036 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4037 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4038 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4039 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4040 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4041 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4042 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4043 TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4044 TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4045 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4046 TESTINSN_bin("vmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4047 TESTINSN_bin("vmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4048 TESTINSN_bin("vmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4049 TESTINSN_bin("vmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4050 TESTINSN_bin("vmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4051 TESTINSN_bin("vmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4052 TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4053 TESTINSN_bin("vmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4054 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4055 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4056 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4057 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4058 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4059 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4060 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4061 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4062 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4063 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4064 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4065 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4066 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4067 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4068 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4069 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4070 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4071 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4072 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4073 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4074 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4075 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4076 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4077 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4078 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4079 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4080 TESTINSN_bin("vmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4081 4082 fflush(stdout); 4083 printf("---- VMIN (fp) ----\n"); 4084 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4085 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4086 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4087 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4088 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4089 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4090 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4091 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4092 TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4093 TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4094 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4095 TESTINSN_bin("vmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4096 TESTINSN_bin("vmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4097 TESTINSN_bin("vmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4098 TESTINSN_bin("vmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4099 TESTINSN_bin("vmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4100 TESTINSN_bin("vmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4101 TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4102 TESTINSN_bin("vmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4103 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4104 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4105 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4106 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4107 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4108 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4109 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4110 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4111 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4112 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4113 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4114 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4115 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4116 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4117 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4118 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4119 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4120 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4121 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4122 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4123 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4124 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4125 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4126 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4127 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4128 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4129 TESTINSN_bin("vmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4130 4131 fflush(stdout); 4132 printf("---- VPMAX (fp) ----\n"); 4133 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4134 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4135 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4136 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4137 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4138 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4139 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4140 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4141 TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4142 TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4143 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4144 TESTINSN_bin("vpmax.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4145 TESTINSN_bin("vpmax.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4146 TESTINSN_bin("vpmax.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4147 TESTINSN_bin("vpmax.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4148 TESTINSN_bin("vpmax.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4149 TESTINSN_bin("vpmax.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4150 TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4151 TESTINSN_bin("vpmax.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4152 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4153 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4154 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4155 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4156 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4157 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4158 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4159 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4160 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4161 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4162 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4163 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4164 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4165 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4166 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4167 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4168 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4169 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4170 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4171 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4172 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4173 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4174 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4175 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4176 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4177 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4178 TESTINSN_bin("vpmax.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4179 4180 fflush(stdout); 4181 printf("---- VPMIN (fp) ----\n"); 4182 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4183 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4184 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4185 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4186 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4187 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4188 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4189 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4190 TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4191 TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4192 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4193 TESTINSN_bin("vpmin.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4194 TESTINSN_bin("vpmin.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4195 TESTINSN_bin("vpmin.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4196 TESTINSN_bin("vpmin.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4197 TESTINSN_bin("vpmin.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4198 TESTINSN_bin("vpmin.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4199 TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4200 TESTINSN_bin("vpmin.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4201 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4202 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4203 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4204 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4205 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4206 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4207 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4208 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4209 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4210 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4211 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4212 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4213 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4214 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4215 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4216 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4217 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4218 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4219 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4220 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4221 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4222 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4223 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4224 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4225 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4226 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4227 TESTINSN_bin("vpmin.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4228 4229 fflush(stdout); 4230 printf("---- VRECPE ----\n"); 4231 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2)); 4232 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(-653.2)); 4233 TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22)); 4234 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9)); 4235 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-0.5)); 4236 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(-7.1)); 4237 TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4238 TESTINSN_un("vrecpe.u32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4239 TESTINSN_un("vrecpe.u32 d0, d1", d0, d1, i32, f2u(3.2)); 4240 TESTINSN_un("vrecpe.u32 d10, d11", d10, d11, i32, f2u(3e22)); 4241 TESTINSN_un("vrecpe.u32 d15, d4", d15, d4, i32, f2u(3e9)); 4242 TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4243 TESTINSN_un("vrecpe.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4244 TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4245 TESTINSN_un("vrecpe.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4246 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7); 4247 TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31); 4248 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4249 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4250 TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4251 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, 7); 4252 TESTINSN_un("vrecpe.f32 d10, d11", d10, d11, i32, 1 << 31); 4253 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4254 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4255 TESTINSN_un("vrecpe.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4256 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(NAN)); 4257 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(0.0)); 4258 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 4259 TESTINSN_un("vrecpe.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 4260 4261 fflush(stdout); 4262 printf("---- VRECPS ----\n"); 4263 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4264 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4265 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4266 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4267 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4268 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 4269 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 4270 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4271 TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4272 TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4273 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4274 TESTINSN_bin("vrecps.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4275 TESTINSN_bin("vrecps.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4276 TESTINSN_bin("vrecps.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4277 TESTINSN_bin("vrecps.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4278 TESTINSN_bin("vrecps.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4279 TESTINSN_bin("vrecps.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4280 TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4281 TESTINSN_bin("vrecps.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4282 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4283 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4284 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4285 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4286 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4287 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4288 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4289 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4290 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4291 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4292 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4293 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4294 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4295 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4296 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4297 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4298 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4299 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4300 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4301 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4302 TESTINSN_bin("vrecps.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4303 4304 fflush(stdout); 4305 printf("---- VABS (fp) ----\n"); 4306 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2)); 4307 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22)); 4308 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9)); 4309 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4310 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4311 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4312 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4313 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(3.2)); 4314 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, f2u(3e22)); 4315 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(3e9)); 4316 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4317 TESTINSN_un("vabs.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4318 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4319 TESTINSN_un("vabs.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4320 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7); 4321 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31); 4322 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4323 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4324 TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4325 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, 7); 4326 TESTINSN_un("vabs.f32 d10, d11", d10, d11, i32, 1 << 31); 4327 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4328 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4329 TESTINSN_un("vabs.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4330 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(NAN)); 4331 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(0.0)); 4332 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 4333 TESTINSN_un("vabs.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 4334 4335 fflush(stdout); 4336 printf("---- VCGT (fp) ----\n"); 4337 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4338 TESTINSN_bin("vcgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4339 TESTINSN_bin("vcgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4340 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4341 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4342 TESTINSN_bin("vcgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4343 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4344 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4345 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4346 TESTINSN_bin("vcgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4347 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4348 TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4349 TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4350 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4351 TESTINSN_bin("vcgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4352 TESTINSN_bin("vcgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4353 TESTINSN_bin("vcgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4354 TESTINSN_bin("vcgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4355 TESTINSN_bin("vcgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4356 TESTINSN_bin("vcgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4357 TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4358 TESTINSN_bin("vcgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4359 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4360 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4361 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4362 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4363 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4364 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4365 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4366 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4367 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4368 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4369 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4370 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4371 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4372 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4373 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4374 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4375 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4376 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4377 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4378 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4379 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4380 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4381 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4382 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4383 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4384 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4385 TESTINSN_bin("vcgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4386 4387 fflush(stdout); 4388 printf("---- VCGE (fp) ----\n"); 4389 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4390 TESTINSN_bin("vcge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4391 TESTINSN_bin("vcge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4392 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4393 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4394 TESTINSN_bin("vcge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4395 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4396 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4397 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4398 TESTINSN_bin("vcge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4399 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4400 TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4401 TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4402 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4403 TESTINSN_bin("vcge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4404 TESTINSN_bin("vcge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4405 TESTINSN_bin("vcge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4406 TESTINSN_bin("vcge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4407 TESTINSN_bin("vcge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4408 TESTINSN_bin("vcge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4409 TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4410 TESTINSN_bin("vcge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4411 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4412 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4413 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4414 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4415 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4416 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4417 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4418 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4419 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4420 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4421 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4422 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4423 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4424 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4425 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4426 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4427 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4428 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4429 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4430 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4431 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4432 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4433 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4434 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4435 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4436 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4437 TESTINSN_bin("vcge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4438 4439 fflush(stdout); 4440 printf("---- VACGT (fp) ----\n"); 4441 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4442 TESTINSN_bin("vacgt.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4443 TESTINSN_bin("vacgt.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4444 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4445 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4446 TESTINSN_bin("vacgt.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4447 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4448 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4449 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4450 TESTINSN_bin("vacgt.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4451 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4452 TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4453 TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4454 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4455 TESTINSN_bin("vacgt.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4456 TESTINSN_bin("vacgt.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4457 TESTINSN_bin("vacgt.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4458 TESTINSN_bin("vacgt.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4459 TESTINSN_bin("vacgt.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4460 TESTINSN_bin("vacgt.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4461 TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4462 TESTINSN_bin("vacgt.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4463 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4464 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4465 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4466 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4467 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4468 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4469 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4470 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4471 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4472 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4473 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4474 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4475 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4476 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4477 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4478 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4479 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4480 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4481 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4482 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4483 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4484 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4485 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4486 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4487 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4488 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4489 TESTINSN_bin("vacgt.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4490 4491 fflush(stdout); 4492 printf("---- VACGE (fp) ----\n"); 4493 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4494 TESTINSN_bin("vacge.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4495 TESTINSN_bin("vacge.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4496 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4497 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4498 TESTINSN_bin("vacge.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4499 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4500 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4501 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4502 TESTINSN_bin("vacge.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4503 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4504 TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4505 TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4506 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4507 TESTINSN_bin("vacge.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4508 TESTINSN_bin("vacge.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4509 TESTINSN_bin("vacge.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4510 TESTINSN_bin("vacge.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4511 TESTINSN_bin("vacge.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4512 TESTINSN_bin("vacge.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4513 TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4514 TESTINSN_bin("vacge.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4515 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4516 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4517 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4518 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4519 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4520 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4521 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4522 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4523 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4524 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4525 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4526 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4527 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4528 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4529 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4530 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4531 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4532 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4533 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4534 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4535 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4536 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4537 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4538 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4539 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4540 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4541 TESTINSN_bin("vacge.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4542 4543 fflush(stdout); 4544 printf("---- VCEQ (fp) ----\n"); 4545 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.5), d2, i32, f2u(-0.5)); 4546 TESTINSN_bin("vceq.f32 d2, d15, d12", d2, d15, i32, f2u(-0.53), d12, i32, f2u(0.52)); 4547 TESTINSN_bin("vceq.f32 d15, d7, d8", d15, d7, i32, f2u(231.45), d7, i32, f2u(231.45)); 4548 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4549 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4550 TESTINSN_bin("vceq.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4551 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4552 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4553 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(24.87556), d5, i32, f2u(1346.0004)); 4554 TESTINSN_bin("vceq.f32 d10, d31, d2", d10, d31, i32, f2u(48755.7), d2, i32, f2u(1089.2)); 4555 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4556 TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4557 TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4558 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4559 TESTINSN_bin("vceq.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4560 TESTINSN_bin("vceq.f32 d20, d21, d2", d20, d21, i32, f2u(487.587), d2, i32, f2u(109)); 4561 TESTINSN_bin("vceq.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4562 TESTINSN_bin("vceq.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4563 TESTINSN_bin("vceq.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4564 TESTINSN_bin("vceq.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4565 TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4566 TESTINSN_bin("vceq.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4567 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4568 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0), d2, i32, f2u(0)); 4569 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(1.0/1024.0), d2, i32, f2u(-1.0/1024.0)); 4570 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-1.0/1024.0), d2, i32, f2u(1.0/1024.0)); 4571 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(2342+1.0/1024.0), d2, i32, f2u(2342-1.0/1024.0)); 4572 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-2342+1.0/1024.0), d2, i32, f2u(-2342-1.0/1024.0)); 4573 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(89276+1.0/1024.0), d2, i32, f2u(98276+1.0/1024.0)); 4574 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4575 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4576 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4577 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4578 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4579 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4580 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4581 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4582 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4583 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4584 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4585 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4586 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4587 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4588 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4589 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4590 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4591 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4592 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4593 TESTINSN_bin("vceq.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4594 4595 fflush(stdout); 4596 printf("---- VCEQ (fp) #0 ----\n"); 4597 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4598 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, 0x1); 4599 TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4600 TESTINSN_un("vceq.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4601 TESTINSN_un("vceq.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4602 TESTINSN_un("vceq.f32 d30, d15, #0", d30, d15, i32, 0x0); 4603 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4604 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4605 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4606 TESTINSN_un("vceq.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4607 4608 fflush(stdout); 4609 printf("---- VCGT (fp) #0 ----\n"); 4610 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4611 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, 0x1); 4612 TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4613 TESTINSN_un("vcgt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4614 TESTINSN_un("vcgt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4615 TESTINSN_un("vcgt.f32 d30, d15, #0", d30, d15, i32, 0x0); 4616 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4617 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4618 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4619 TESTINSN_un("vcgt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4620 4621 fflush(stdout); 4622 printf("---- VCLT (fp) #0 ----\n"); 4623 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4624 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, 0x1); 4625 TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4626 TESTINSN_un("vclt.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4627 TESTINSN_un("vclt.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4628 TESTINSN_un("vclt.f32 d30, d15, #0", d30, d15, i32, 0x0); 4629 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4630 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4631 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4632 TESTINSN_un("vclt.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4633 4634 fflush(stdout); 4635 printf("---- VCGE (fp) #0 ----\n"); 4636 TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4637 TESTINSN_un("vcge.f32 d0, d1, #0", d0, d1, i32, 0x1); 4638 TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4639 TESTINSN_un("vcge.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4640 TESTINSN_un("vcge.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4641 TESTINSN_un("vcge.f32 d30, d15, #0", d30, d15, i32, 0x0); 4642 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4643 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4644 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4645 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4646 4647 fflush(stdout); 4648 printf("---- VCLE (fp) #0 ----\n"); 4649 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x01000000); 4650 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, 0x1); 4651 TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, 1 << 31); 4652 TESTINSN_un("vcle.f32 d2, d1, #0", d2, d1, i32, f2u(23.04)); 4653 TESTINSN_un("vcle.f32 d2, d31, #0", d2, d31, i32, f2u(-23.04)); 4654 TESTINSN_un("vcle.f32 d30, d15, #0", d30, d15, i32, 0x0); 4655 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(NAN)); 4656 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(0.0)); 4657 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(INFINITY)); 4658 TESTINSN_un("vcle.f32 d0, d1, #0", d0, d1, i32, f2u(-INFINITY)); 4659 4660 fflush(stdout); 4661 printf("---- VNEG (fp) ----\n"); 4662 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x01000000); 4663 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, 0x1); 4664 TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, 1 << 31); 4665 TESTINSN_un("vneg.f32 d2, d1", d2, d1, i32, f2u(23.04)); 4666 TESTINSN_un("vneg.f32 d2, d31", d2, d31, i32, f2u(-23.04)); 4667 TESTINSN_un("vneg.f32 d30, d15", d30, d15, i32, 0x0); 4668 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(NAN)); 4669 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(0.0)); 4670 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 4671 TESTINSN_un("vneg.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 4672 4673 fflush(stdout); 4674 printf("---- VRSQRTS ----\n"); 4675 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(23.04), d2, i32, f2u(-45.5687)); 4676 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(-347856.475), d5, i32, f2u(1346)); 4677 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(-45786.476)); 4678 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(95867.76), d7, i32, f2u(17065)); 4679 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(-45667.24), d2, i32, f2u(-248562.76)); 4680 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(24), d5, i32, f2u(1346)); 4681 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(48755), d2, i32, f2u(1089)); 4682 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(214), d7, i32, f2u(1752065)); 4683 TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(356047.56), d12, i32, f2u(5867.009)); 4684 TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(34.00046), d6, i32, f2u(0.0024575)); 4685 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(2754), d2, i32, f2u(107)); 4686 TESTINSN_bin("vrsqrts.f32 d3, d4, d5", d3, d4, i32, f2u(874), d5, i32, f2u(1384.6)); 4687 TESTINSN_bin("vrsqrts.f32 d10, d11, d2", d10, d11, i32, f2u(487.587), d2, i32, f2u(109)); 4688 TESTINSN_bin("vrsqrts.f32 d9, d5, d7", d9, d5, i32, f2u(2146), d7, i32, f2u(1752)); 4689 TESTINSN_bin("vrsqrts.f32 d0, d11, d12", d0, d11, i32, f2u(-56.25), d12, i32, f2u(-5786.47)); 4690 TESTINSN_bin("vrsqrts.f32 d7, d1, d6", d7, d1, i32, f2u(456.2489562), d6, i32, f2u(-7.2945676)); 4691 TESTINSN_bin("vrsqrts.f32 d0, d5, d2", d0, d5, i32, f2u(532.987), d2, i32, f2u(-0.0045876)); 4692 TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(-485.2457), d15, i32, f2u(-567.245)); 4693 TESTINSN_bin("vrsqrts.f32 d10, d13, d15", d10, d13, i32, f2u(278456.45), d15, i32, f2u(8756.0076)); 4694 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(876988654), d2, i32, f2u(1224808797)); 4695 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(NAN)); 4696 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(1.0)); 4697 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(0.0)); 4698 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 4699 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 4700 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(NAN)); 4701 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(1.0)); 4702 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(0.0)); 4703 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 4704 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 4705 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 4706 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 4707 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 4708 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 4709 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 4710 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 4711 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 4712 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 4713 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 4714 TESTINSN_bin("vrsqrts.f32 d0, d1, d2", d0, d1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 4715 4716 fflush(stdout); 4717 printf("---- VRSQRTE (fp) ----\n"); 4718 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2)); 4719 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22)); 4720 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9)); 4721 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4722 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4723 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4724 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4725 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(3.2)); 4726 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, f2u(3e22)); 4727 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(3e9)); 4728 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-0.5)); 4729 TESTINSN_un("vrsqrte.f32 d15, d4", d15, d4, i32, f2u(-7.1)); 4730 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(8.0 - 1.0/1024.0)); 4731 TESTINSN_un("vrsqrte.f32 d12, d8", d12, d8, i32, f2u(-8.0 + 1.0/1024.0)); 4732 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7); 4733 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31); 4734 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4735 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4736 TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4737 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, 7); 4738 TESTINSN_un("vrsqrte.f32 d10, d11", d10, d11, i32, 1 << 31); 4739 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) + 1); 4740 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, (1U << 31) - 1); 4741 TESTINSN_un("vrsqrte.f32 d0, d14", d0, d14, i32, 0x30a0bcef); 4742 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(NAN)); 4743 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(0.0)); 4744 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(INFINITY)); 4745 TESTINSN_un("vrsqrte.f32 d0, d1", d0, d1, i32, f2u(-INFINITY)); 4746 4747 return 0; 4748 } 4749