neon128.c revision 8f943afc22a6a683b78271836c8ddc462b4824a9
1 2/* How to compile: 3 4 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ 5 -marm -o neon128-a neon128.c 6 7 or 8 9 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ 10 -mthumb -o neon128-t neon128.c 11 12*/ 13 14#include <stdio.h> 15#include <math.h> 16 17#ifndef __thumb__ 18// ARM 19#define MOVE_to_FPSCR_from_R4 \ 20 ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t" 21#define MOVE_to_R4_from_FPSCR \ 22 ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t" 23#endif 24 25#ifdef __thumb__ 26// Thumb 27#define MOVE_to_FPSCR_from_R4 \ 28 ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t" 29#define MOVE_to_R4_from_FPSCR \ 30 ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t" 31#endif 32 33static inline unsigned int f2u(float x) { 34 union { 35 float f; 36 unsigned int u; 37 } cvt; 38 cvt.f = x; 39 return cvt.u; 40} 41 42/* test macros to generate and output the result of a single instruction */ 43 44const unsigned int mem[] = { 45 0x121f1e1f, 0x131b1a1b, 0x141c1f1c, 0x151d191d, 46 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a, 47 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a, 48 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c 49}; 50 51#define TESTINSN_imm(instruction, QD, imm) \ 52{ \ 53 unsigned int out[4]; \ 54\ 55 __asm__ volatile( \ 56 "vmov.i8 " #QD ", #0x55" "\n\t" \ 57 instruction ", #" #imm "\n\t" \ 58 "vstmia %0, {" #QD "}\n\t" \ 59 : \ 60 : "r" (out) \ 61 : #QD, "memory" \ 62 ); \ 63 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \ 64 instruction, out[3], out[2], out[1], out[0]); \ 65}\ 66{ \ 67 unsigned int out[4]; \ 68 unsigned int addr = 0; \ 69 \ 70 __asm__ volatile( \ 71 "mov %1, %2\n\t" \ 72 "vldmia %1!, {" #QD "}\n\t" \ 73 instruction ", #" #imm "\n\t" \ 74 "vstmia %0, {" #QD "}\n\t" \ 75 : \ 76 : "r" (out), "r" (addr), "r" (mem) \ 77 : #QD, "%2", "memory" \ 78 ); \ 79 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \ 80 instruction, out[3], out[2], out[1], out[0]); \ 81} 82 83#define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \ 84{ \ 85 unsigned int out[4]; \ 86\ 87 __asm__ volatile( \ 88 "vmov.i8 " #QD ", #0x55" "\n\t" \ 89 "vdup." #QMtype " " #QM ", %1\n\t" \ 90 instruction "\n\t" \ 91 "vstmia %0, {" #QD "}\n\t" \ 92 : \ 93 : "r" (out), "r" (QMval) \ 94 : #QD, #QM, "memory" \ 95 ); \ 96 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ 97 instruction, out[3], out[2], out[1], out[0], QMval); \ 98} \ 99{ \ 100 unsigned int out[4]; \ 101 unsigned int addr = 0; \ 102 \ 103 __asm__ volatile( \ 104 "mov %2, %3\n\t" \ 105 "vldmia %2!, {" #QD "}\n\t" \ 106 "vldmia %2!, {" #QM "}\n\t" \ 107 instruction "\n\t" \ 108 "vstmia %0, {" #QD "}\n\t" \ 109 : \ 110 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ 111 : #QD, #QM, "%2", "memory" \ 112 ); \ 113 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ 114 instruction, out[3], out[2], out[1], out[0], QMval); \ 115} 116 117 118#define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \ 119{ \ 120 unsigned int out[4]; \ 121 unsigned int fpscr; \ 122\ 123 __asm__ volatile( \ 124 "vmov.i8 " #QD ", #0x55" "\n\t" \ 125 "mov r4, #0\n\t" \ 126 MOVE_to_FPSCR_from_R4 \ 127 "vdup." #QMtype " " #QM ", %2\n\t" \ 128 instruction "\n\t" \ 129 "vstmia %1, {" #QD "}\n\t" \ 130 MOVE_to_R4_from_FPSCR \ 131 "mov %0, r4" \ 132 : "=r" (fpscr) \ 133 : "r" (out), "r" (QMval) \ 134 : #QD, #QM, "memory", "r4" \ 135 ); \ 136 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 137 " fpscr: %08x\n", \ 138 instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \ 139} \ 140{ \ 141 unsigned int out[4]; \ 142 unsigned int fpscr; \ 143 unsigned int addr = 0; \ 144 \ 145 __asm__ volatile( \ 146 "vmov.i8 " #QD ", #0x55" "\n\t" \ 147 "mov r4, #0\n\t" \ 148 MOVE_to_FPSCR_from_R4 \ 149 "mov %3, %4\n\t" \ 150 "vldmia %3!, {" #QM "}\n\t" \ 151 instruction "\n\t" \ 152 "vstmia %1, {" #QD "}\n\t" \ 153 MOVE_to_R4_from_FPSCR \ 154 "mov %0, r4" \ 155 : "=r" (fpscr) \ 156 : "r" (out), "r" (QMval), "r" (addr), "r" (mem) \ 157 : #QD, #QM, "memory", "r4" \ 158 ); \ 159 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 160 " fpscr: %08x\n", \ 161 instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \ 162} 163 164#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 165{ \ 166 unsigned int out[4]; \ 167\ 168 __asm__ volatile( \ 169 "vmov.i8 " #QD ", #0x55" "\n\t" \ 170 "vdup." #QMtype " " #QM ", %1\n\t" \ 171 "vdup." #QNtype " " #QN ", %2\n\t" \ 172 instruction "\n\t" \ 173 "vstmia %0, {" #QD "}\n\t" \ 174 : \ 175 : "r" (out), "r" (QMval), "r" (QNval) \ 176 : #QD, #QM, #QN, "memory" \ 177 ); \ 178 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 179 " Qn (" #QNtype ")0x%08x\n", \ 180 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ 181} \ 182/*{ \ 183 unsigned int out[4]; \ 184 unsigned int addr = 0; \ 185 \ 186 __asm__ volatile( \ 187 "mov %0, %4\n\t" \ 188 "vldmia %0!, {" #QM "}\n\t" \ 189 "vmov.i8 " #QD ", #0x55" "\n\t" \ 190 "vdup." #QNtype " " #QN ", %3\n\t" \ 191 instruction "\n\t" \ 192 "vstmia %1, {" #QD "}\n\t" \ 193 : "+r" (addr) \ 194 : "r" (out), "r" (QMval), "r" (QNval), "r" (mem) \ 195 : #QD, #QM, #QN, "memory" \ 196 ); \ 197 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 198 " Qn (" #QNtype ")0x%08x\n", \ 199 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ 200} */ 201 202#define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 203{ \ 204 unsigned int out[4]; \ 205\ 206 __asm__ volatile( \ 207 "vdup.i32 " #QD ", %3\n\t" \ 208 "vdup." #QMtype " " #QM ", %1\n\t" \ 209 "vdup." #QNtype " " #QN ", %2\n\t" \ 210 instruction "\n\t" \ 211 "vstmia %0, {" #QD "}\n\t" \ 212 : \ 213 : "r" (out), "r" (QMval), "r" (QNval), "r" (0x3f800000) \ 214 : #QD, #QM, #QN, "memory" \ 215 ); \ 216 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 217 " Qn (" #QNtype ")0x%08x\n", \ 218 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ 219} \ 220{ \ 221 unsigned int out[4]; \ 222 unsigned int addr = 0; \ 223 \ 224 __asm__ volatile( \ 225 "vdup.i32 " #QD ", %3\n\t" \ 226 "mov %4, %5\n\t" \ 227 "vldmia %4!, {" #QM "}\n\t" \ 228 "vdup." #QNtype " " #QN ", %2\n\t" \ 229 instruction "\n\t" \ 230 "vstmia %0, {" #QD "}\n\t" \ 231 : \ 232 : "r" (out), "r" (QMval), "r" (QNval), "r"(0x3f800000), "r" (addr), "r" (mem) \ 233 : #QD, #QM, #QN, "memory" \ 234 ); \ 235 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 236 " Qn (" #QNtype ")0x%08x\n", \ 237 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ 238} 239 240#define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 241{ \ 242 unsigned int out[4]; \ 243 unsigned int fpscr; \ 244\ 245 __asm__ volatile( \ 246 "vmov.i8 " #QD ", #0x55" "\n\t" \ 247 "mov r4, #0\n\t" \ 248 MOVE_to_FPSCR_from_R4 \ 249 "vdup." #QMtype " " #QM ", %2\n\t" \ 250 "vdup." #QNtype " " #QN ", %3\n\t" \ 251 instruction "\n\t" \ 252 "vstmia %1, {" #QD "}\n\t" \ 253 MOVE_to_R4_from_FPSCR \ 254 "mov %0, r4" \ 255 : "=r" (fpscr) \ 256 : "r" (out), "r" (QMval), "r" (QNval) \ 257 : #QD, #QM, #QN, "memory", "r4" \ 258 ); \ 259 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 260 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 261 instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \ 262} \ 263{ \ 264 unsigned int out[4]; \ 265 unsigned int fpscr; \ 266 unsigned int addr = 0; \ 267 \ 268 __asm__ volatile( \ 269 "vmov.i8 " #QD ", #0x55" "\n\t" \ 270 "mov r4, #0\n\t" \ 271 MOVE_to_FPSCR_from_R4 \ 272 "mov %4, %5\n\t" \ 273 "vldmia %4!, {" #QM "}\n\t" \ 274 "vdup." #QNtype " " #QN ", %3\n\t" \ 275 instruction "\n\t" \ 276 "vstmia %1, {" #QD "}\n\t" \ 277 MOVE_to_R4_from_FPSCR \ 278 "mov %0, r4" \ 279 : "=r" (fpscr) \ 280 : "r" (out), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ 281 : #QD, #QM, #QN, "memory", "r4" \ 282 ); \ 283 printf("%s :: Qd 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 284 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 285 instruction, out[1], out[0], QMval, QNval, fpscr); \ 286 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 287 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 288 instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \ 289} 290 291#define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \ 292{ \ 293 unsigned int out1[4]; \ 294 unsigned int out2[4]; \ 295\ 296 __asm__ volatile( \ 297 "vdup." #QMtype " " #QM ", %2\n\t" \ 298 "vdup." #QNtype " " #QN ", %3\n\t" \ 299 instruction "\n\t" \ 300 "vstmia %0, {" #QM "}\n\t" \ 301 "vstmia %1, {" #QN "}\n\t" \ 302 : \ 303 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval) \ 304 : #QM, #QN, "memory" \ 305 ); \ 306 printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x Qn 0x%08x 0x%08x 0x%08x 0x%08x" \ 307 " Qm (" #QMtype ")0x%08x Qn (" #QNtype ")0x%08x\n", \ 308 instruction, out1[3], out1[2], out1[1], out1[0], \ 309 out2[3], out2[2], out2[1], out2[0], QMval, QNval); \ 310} \ 311{ \ 312 unsigned int out1[4]; \ 313 unsigned int out2[4]; \ 314 unsigned int addr = 0; \ 315 \ 316 __asm__ volatile( \ 317 "mov %4, %5\n\t" \ 318 "vldmia %4!, {" #QM "}\n\t" \ 319 "vdup." #QNtype " " #QN ", %3\n\t" \ 320 instruction "\n\t" \ 321 "vstmia %0, {" #QM "}\n\t" \ 322 "vstmia %1, {" #QN "}\n\t" \ 323 : \ 324 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval), "r" (addr), "r" (mem) \ 325 : #QM, #QN, "%4", "memory" \ 326 ); \ 327 printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x Qn 0x%08x 0x%08x 0x%08x 0x%08x\nQm (" \ 328#QMtype ")0x%08x" " Qn (" #QNtype ")0x%08x\n", \ 329 instruction, out1[3], out1[2], out1[1], out1[0],\ 330 out2[3], out2[2], out2[1], out2[0], QMval, QNval); \ 331} 332 333#if 0 334#define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \ 335{ \ 336 unsigned int out[4]; \ 337\ 338 __asm__ volatile( \ 339 "vmov.i8 " #QD ", #0x55" "\n\t" \ 340 "vdup." #QMtype " " #QM ", %1\n\t" \ 341 instruction ", #" #imm "\n\t" \ 342 "vstmia %0, {" #QD "}\n\t" \ 343 : \ 344 : "r" (out), "r" (QMval) \ 345 : #QD, #QM, "memory" \ 346 ); \ 347 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x", \ 348 instruction, out[3], out[2], out[1], out[0], QMval); \ 349} 350#endif 351 352int main(int argc, char **argv) 353{ 354 printf("----- VMOV (immediate) -----\n"); 355 TESTINSN_imm("vmov.i32 q0", q0, 0x7); 356 TESTINSN_imm("vmov.i16 q1", q1, 0x7); 357 TESTINSN_imm("vmov.i8 q2", q2, 0x7); 358 TESTINSN_imm("vmov.i32 q5", q5, 0x700); 359 TESTINSN_imm("vmov.i16 q7", q7, 0x700); 360 TESTINSN_imm("vmov.i32 q10", q10, 0x70000); 361 TESTINSN_imm("vmov.i32 q12", q12, 0x7000000); 362 TESTINSN_imm("vmov.i32 q13", q13, 0x7FF); 363 TESTINSN_imm("vmov.i32 q14", q14, 0x7FFFF); 364 TESTINSN_imm("vmov.i64 q15", q15, 0xFF0000FF00FFFF00); 365 TESTINSN_imm("vmov.f32 q0", q0, 0.328125); 366 TESTINSN_imm("vmov.f32 q0", q0, -0.328125); 367 368 printf("----- VMVN (immediate) -----\n"); 369 TESTINSN_imm("vmvn.i32 q0", q0, 0x7); 370 TESTINSN_imm("vmvn.i16 q1", q1, 0x7); 371 TESTINSN_imm("vmvn.i8 q2", q2, 0x7); 372 TESTINSN_imm("vmvn.i32 q5", q5, 0x700); 373 TESTINSN_imm("vmvn.i16 q7", q7, 0x700); 374 TESTINSN_imm("vmvn.i32 q10", q10, 0x70000); 375 TESTINSN_imm("vmvn.i32 q13", q13, 0x7000000); 376 TESTINSN_imm("vmvn.i32 q11", q11, 0x7FF); 377 TESTINSN_imm("vmvn.i32 q14", q14, 0x7FFFF); 378 TESTINSN_imm("vmvn.i64 q15", q15, 0xFF0000FF00FFFF00); 379 380 printf("----- VORR (immediate) -----\n"); 381 TESTINSN_imm("vorr.i32 q0", q0, 0x7); 382 TESTINSN_imm("vorr.i16 q2", q2, 0x7); 383 TESTINSN_imm("vorr.i32 q8", q8, 0x700); 384 TESTINSN_imm("vorr.i16 q6", q6, 0x700); 385 TESTINSN_imm("vorr.i32 q14", q14, 0x70000); 386 TESTINSN_imm("vorr.i32 q15", q15, 0x7000000); 387 388 printf("----- VBIC (immediate) -----\n"); 389 TESTINSN_imm("vbic.i32 q0", q0, 0x7); 390 TESTINSN_imm("vbic.i16 q3", q3, 0x7); 391 TESTINSN_imm("vbic.i32 q5", q5, 0x700); 392 TESTINSN_imm("vbic.i16 q8", q8, 0x700); 393 TESTINSN_imm("vbic.i32 q10", q10, 0x70000); 394 TESTINSN_imm("vbic.i32 q15", q15, 0x7000000); 395 396 printf("---- VMVN (register) ----\n"); 397 TESTINSN_un("vmvn q0, q1", q0, q1, i32, 24); 398 TESTINSN_un("vmvn q10, q15", q10, q15, i32, 24); 399 TESTINSN_un("vmvn q0, q14", q0, q14, i32, 24); 400 401 printf("---- VMOV (register) ----\n"); 402 TESTINSN_un("vmov q0, q1", q0, q1, i32, 24); 403 TESTINSN_un("vmov q10, q15", q10, q15, i32, 24); 404 TESTINSN_un("vmov q0, q14", q0, q14, i32, 24); 405 406 printf("---- VDUP (ARM core register) (tested indirectly) ----\n"); 407 TESTINSN_un("vmov q0, q1", q0, q1, i8, 7); 408 TESTINSN_un("vmov q10, q11", q10, q11, i16, 7); 409 TESTINSN_un("vmov q0, q15", q0, q15, i32, 7); 410 411 printf("---- VADD ----\n"); 412 TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 413 TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 414 TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 415 TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 416 TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 417 TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 418 TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 419 TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 420 TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 421 TESTINSN_bin("vadd.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 422 TESTINSN_bin("vadd.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120); 423 424 printf("---- VSUB ----\n"); 425 TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 426 TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 427 TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 428 TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 429 TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 430 TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 431 TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 432 TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 433 TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 434 TESTINSN_bin("vsub.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 435 TESTINSN_bin("vsub.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120); 436 437 printf("---- VAND ----\n"); 438 TESTINSN_bin("vand q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 439 TESTINSN_bin("vand q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 440 TESTINSN_bin("vand q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 441 TESTINSN_bin("vand q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 442 443 printf("---- VBIC ----\n"); 444 TESTINSN_bin("vbic q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 445 TESTINSN_bin("vbic q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 446 TESTINSN_bin("vbic q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 447 TESTINSN_bin("vbic q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 448 449 printf("---- VORR ----\n"); 450 TESTINSN_bin("vorr q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 451 TESTINSN_bin("vorr q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 452 TESTINSN_bin("vorr q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 453 TESTINSN_bin("vorr q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 454 455 printf("---- VORN ----\n"); 456 TESTINSN_bin("vorn q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 457 TESTINSN_bin("vorn q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 458 TESTINSN_bin("vorn q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 459 TESTINSN_bin("vorn q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 460 461 printf("---- VEOR ----\n"); 462 TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 463 TESTINSN_bin("veor q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 464 TESTINSN_bin("veor q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 465 TESTINSN_bin("veor q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 466 TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 467 TESTINSN_bin("veor q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 468 TESTINSN_bin("veor q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 469 TESTINSN_bin("veor q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 470 471 printf("---- VBSL ----\n"); 472 TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 473 TESTINSN_bin("vbsl q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 474 TESTINSN_bin("vbsl q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 475 TESTINSN_bin("vbsl q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 476 TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 477 TESTINSN_bin("vbsl q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 478 TESTINSN_bin("vbsl q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 479 TESTINSN_bin("vbsl q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 480 481 printf("---- VBIT ----\n"); 482 TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 483 TESTINSN_bin("vbit q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 484 TESTINSN_bin("vbit q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 485 TESTINSN_bin("vbit q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 486 TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 487 TESTINSN_bin("vbit q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 488 TESTINSN_bin("vbit q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 489 TESTINSN_bin("vbit q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 490 491 printf("---- VBIF ----\n"); 492 TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 493 TESTINSN_bin("vbif q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 494 TESTINSN_bin("vbif q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 495 TESTINSN_bin("vbif q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 496 TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 497 TESTINSN_bin("vbif q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 498 TESTINSN_bin("vbif q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 499 TESTINSN_bin("vbif q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 500 501 printf("---- VEXT ----\n"); 502 TESTINSN_bin("vext.8 q0, q1, q2, #0", q0, q1, i8, 0x77, q2, i8, 0xff); 503 TESTINSN_bin("vext.8 q0, q1, q2, #1", q0, q1, i8, 0x77, q2, i8, 0xff); 504 TESTINSN_bin("vext.8 q0, q1, q2, #9", q0, q1, i8, 0x77, q2, i8, 0xff); 505 TESTINSN_bin("vext.8 q0, q1, q2, #15", q0, q1, i8, 0x77, q2, i8, 0xff); 506 TESTINSN_bin("vext.8 q10, q11, q12, #4", q10, q11, i8, 0x77, q12, i8, 0xff); 507 TESTINSN_bin("vext.8 q0, q5, q15, #12", q0, q5, i8, 0x77, q15, i8, 0xff); 508 509 printf("---- VHADD ----\n"); 510 TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 511 TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 512 TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 513 TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 514 TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121); 515 TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 516 TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 517 TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 518 TESTINSN_bin("vhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 519 TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 520 TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 521 TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 522 TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 523 TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121); 524 TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 525 TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 526 TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 527 TESTINSN_bin("vhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 528 529 printf("---- VHSUB ----\n"); 530 TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 531 TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 532 TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 533 TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 534 TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 535 TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 536 TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 537 TESTINSN_bin("vhsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 538 TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 539 TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 540 TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 541 TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 542 TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 543 TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 544 TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 545 TESTINSN_bin("vhsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 546 547 printf("---- VQADD ----\n"); 548 TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 549 TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 550 TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 551 TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 552 TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 553 TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 554 TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 555 TESTINSN_bin_q("vqadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 556 TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 557 TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 558 TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 559 TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 560 TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 561 TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 562 TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 563 TESTINSN_bin_q("vqadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 564 565 printf("---- VQSUB ----\n"); 566 TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 567 TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 568 TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 569 TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 570 TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 571 TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 572 TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 573 TESTINSN_bin_q("vqsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 574 TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 575 TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 576 TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 577 TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 578 TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 579 TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 580 TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 581 TESTINSN_bin_q("vqsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 582 583 printf("---- VRHADD ----\n"); 584 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 585 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 586 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 587 TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 588 TESTINSN_bin("vrhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 589 TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 590 TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 591 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 592 TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 593 TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 594 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 595 TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 596 TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 597 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 598 TESTINSN_bin("vrhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 599 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 600 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 601 TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 602 TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 603 TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 604 TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 605 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 606 TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 607 TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 608 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 609 TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 610 TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 611 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 612 TESTINSN_bin("vrhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 613 614 printf("---- VCGT ----\n"); 615 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 616 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 617 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 618 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 619 TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 620 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 621 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 622 TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 623 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 624 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 625 TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 626 TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2); 627 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 628 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 629 TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 630 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 631 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 632 TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2); 633 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 634 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 635 TESTINSN_bin("vcgt.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 636 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 637 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 638 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 639 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 640 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 641 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 642 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 643 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 644 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 645 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 646 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 647 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 648 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 649 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 650 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 651 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 652 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 653 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 654 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 655 TESTINSN_bin("vcgt.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 656 657 printf("---- VCGE ----\n"); 658 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 659 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 660 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 661 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 662 TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 663 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 664 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 665 TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 666 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 667 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 668 TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 669 TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2); 670 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 671 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 672 TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 673 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 674 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 675 TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2); 676 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 677 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 678 TESTINSN_bin("vcge.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 679 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 680 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 681 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 682 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 683 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 684 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 685 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 686 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 687 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 688 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 689 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 690 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 691 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 692 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 693 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 694 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 695 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 696 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 697 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 698 TESTINSN_bin("vcge.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 699 700 printf("---- VSHL (register) ----\n"); 701 TESTINSN_bin("vshl.s8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1); 702 TESTINSN_bin("vshl.s8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8); 703 TESTINSN_bin("vshl.s8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4); 704 TESTINSN_bin("vshl.s16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2); 705 TESTINSN_bin("vshl.s16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1); 706 TESTINSN_bin("vshl.s16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11); 707 TESTINSN_bin("vshl.s32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2); 708 TESTINSN_bin("vshl.s32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12); 709 TESTINSN_bin("vshl.s32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21); 710 TESTINSN_bin("vshl.s64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20); 711 TESTINSN_bin("vshl.s64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4); 712 TESTINSN_bin("vshl.s64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30); 713 TESTINSN_bin("vshl.u8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1); 714 TESTINSN_bin("vshl.u8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8); 715 TESTINSN_bin("vshl.u8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4); 716 TESTINSN_bin("vshl.u16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2); 717 TESTINSN_bin("vshl.u16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1); 718 TESTINSN_bin("vshl.u16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11); 719 TESTINSN_bin("vshl.u32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2); 720 TESTINSN_bin("vshl.u32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12); 721 TESTINSN_bin("vshl.u32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21); 722 TESTINSN_bin("vshl.u64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20); 723 TESTINSN_bin("vshl.u64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4); 724 TESTINSN_bin("vshl.u64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30); 725 726 printf("---- VQSHL (register) ----\n"); 727 TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 728 TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 729 TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 730 TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 731 TESTINSN_bin_q("vqshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 732 TESTINSN_bin_q("vqshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 733 TESTINSN_bin_q("vqshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 734 TESTINSN_bin_q("vqshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 735 TESTINSN_bin_q("vqshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 736 TESTINSN_bin_q("vqshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 737 TESTINSN_bin_q("vqshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 738 TESTINSN_bin_q("vqshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 739 TESTINSN_bin_q("vqshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 740 TESTINSN_bin_q("vqshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 741 TESTINSN_bin_q("vqshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 742 TESTINSN_bin_q("vqshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 743 TESTINSN_bin_q("vqshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 744 TESTINSN_bin_q("vqshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 745 TESTINSN_bin_q("vqshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 746 TESTINSN_bin_q("vqshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 747 TESTINSN_bin_q("vqshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 748 TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 749 TESTINSN_bin_q("vqshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 750 TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 751 TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 752 TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 753 TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 754 TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 755 TESTINSN_bin_q("vqshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 756 TESTINSN_bin_q("vqshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 757 TESTINSN_bin_q("vqshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 758 TESTINSN_bin_q("vqshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 759 TESTINSN_bin_q("vqshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 760 TESTINSN_bin_q("vqshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 761 TESTINSN_bin_q("vqshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 762 TESTINSN_bin_q("vqshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 763 TESTINSN_bin_q("vqshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 764 TESTINSN_bin_q("vqshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 765 TESTINSN_bin_q("vqshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 766 TESTINSN_bin_q("vqshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 767 TESTINSN_bin_q("vqshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 768 TESTINSN_bin_q("vqshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 769 TESTINSN_bin_q("vqshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 770 TESTINSN_bin_q("vqshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 771 TESTINSN_bin_q("vqshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 772 TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 773 TESTINSN_bin_q("vqshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 774 TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 775 776 printf("---- VQSHL / VQSHLU (immediate) ----\n"); 777 TESTINSN_un_q("vqshl.s64 q0, q1, #1", q0, q1, i32, 1); 778 TESTINSN_un_q("vqshl.s64 q15, q14, #1", q15, q14, i32, -127); 779 TESTINSN_un_q("vqshl.s64 q5, q4, #0", q5, q4, i32, -127); 780 TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, 16); 781 TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, 16); 782 TESTINSN_un_q("vqshl.s64 q5, q4, #59", q5, q4, i32, 16); 783 TESTINSN_un_q("vqshl.s64 q5, q4, #58", q5, q4, i32, 16); 784 TESTINSN_un_q("vqshl.s64 q5, q4, #17", q5, q4, i32, 16); 785 TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, -1); 786 TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, -1); 787 TESTINSN_un_q("vqshl.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 788 TESTINSN_un_q("vqshl.s32 q10, q11, #1", q10, q11, i32, 1); 789 TESTINSN_un_q("vqshl.s32 q15, q14, #1", q15, q14, i32, -127); 790 TESTINSN_un_q("vqshl.s32 q5, q4, #0", q5, q4, i32, -127); 791 TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, 16); 792 TESTINSN_un_q("vqshl.s32 q5, q4, #28", q5, q4, i32, 16); 793 TESTINSN_un_q("vqshl.s32 q5, q4, #27", q5, q4, i32, 16); 794 TESTINSN_un_q("vqshl.s32 q5, q4, #26", q5, q4, i32, 16); 795 TESTINSN_un_q("vqshl.s32 q5, q4, #17", q5, q4, i32, 16); 796 TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, -1); 797 TESTINSN_un_q("vqshl.s32 q5, q4, #29", q5, q4, i32, -1); 798 TESTINSN_un_q("vqshl.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 799 TESTINSN_un_q("vqshl.s16 q9, q8, #1", q9, q8, i32, 1); 800 TESTINSN_un_q("vqshl.s16 q15, q14, #1", q15, q14, i32, -127); 801 TESTINSN_un_q("vqshl.s16 q5, q4, #0", q5, q4, i32, -127); 802 TESTINSN_un_q("vqshl.s16 q9, q8, #15", q9, q8, i32, 16); 803 TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, 16); 804 TESTINSN_un_q("vqshl.s16 q5, q4, #11", q5, q4, i32, 16); 805 TESTINSN_un_q("vqshl.s16 q5, q4, #10", q5, q4, i32, 16); 806 TESTINSN_un_q("vqshl.s16 q5, q4, #4", q5, q4, i32, 16); 807 TESTINSN_un_q("vqshl.s16 q5, q4, #15", q5, q4, i32, -1); 808 TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, -1); 809 TESTINSN_un_q("vqshl.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 810 TESTINSN_un_q("vqshl.s8 q0, q1, #1", q0, q1, i32, 1); 811 TESTINSN_un_q("vqshl.s8 q15, q14, #1", q15, q14, i32, -127); 812 TESTINSN_un_q("vqshl.s8 q5, q4, #0", q5, q4, i32, -127); 813 TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, 16); 814 TESTINSN_un_q("vqshl.s8 q5, q4, #4", q5, q4, i32, 16); 815 TESTINSN_un_q("vqshl.s8 q5, q4, #3", q5, q4, i32, 16); 816 TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, 16); 817 TESTINSN_un_q("vqshl.s8 q5, q4, #1", q5, q4, i32, 16); 818 TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, -1); 819 TESTINSN_un_q("vqshl.s8 q5, q4, #5", q5, q4, i32, -1); 820 TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2); 821 TESTINSN_un_q("vqshl.u64 q0, q1, #1", q0, q1, i32, 1); 822 TESTINSN_un_q("vqshl.u64 q15, q14, #1", q15, q14, i32, -127); 823 TESTINSN_un_q("vqshl.u64 q5, q4, #0", q5, q4, i32, -127); 824 TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, 16); 825 TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, 16); 826 TESTINSN_un_q("vqshl.u64 q5, q4, #59", q5, q4, i32, 16); 827 TESTINSN_un_q("vqshl.u64 q5, q4, #58", q5, q4, i32, 16); 828 TESTINSN_un_q("vqshl.u64 q5, q4, #17", q5, q4, i32, 16); 829 TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, -1); 830 TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, -1); 831 TESTINSN_un_q("vqshl.u64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 832 TESTINSN_un_q("vqshl.u32 q10, q11, #1", q10, q11, i32, 1); 833 TESTINSN_un_q("vqshl.u32 q15, q14, #1", q15, q14, i32, -127); 834 TESTINSN_un_q("vqshl.u32 q5, q4, #0", q5, q4, i32, -127); 835 TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, 16); 836 TESTINSN_un_q("vqshl.u32 q5, q4, #28", q5, q4, i32, 16); 837 TESTINSN_un_q("vqshl.u32 q5, q4, #27", q5, q4, i32, 16); 838 TESTINSN_un_q("vqshl.u32 q5, q4, #26", q5, q4, i32, 16); 839 TESTINSN_un_q("vqshl.u32 q5, q4, #17", q5, q4, i32, 16); 840 TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, -1); 841 TESTINSN_un_q("vqshl.u32 q5, q4, #29", q5, q4, i32, -1); 842 TESTINSN_un_q("vqshl.u32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 843 TESTINSN_un_q("vqshl.u16 q9, q8, #1", q9, q8, i32, 1); 844 TESTINSN_un_q("vqshl.u16 q15, q14, #1", q15, q14, i32, -127); 845 TESTINSN_un_q("vqshl.u16 q5, q4, #0", q5, q4, i32, -127); 846 TESTINSN_un_q("vqshl.u16 q9, q8, #15", q9, q8, i32, 16); 847 TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, 16); 848 TESTINSN_un_q("vqshl.u16 q5, q4, #11", q5, q4, i32, 16); 849 TESTINSN_un_q("vqshl.u16 q5, q4, #10", q5, q4, i32, 16); 850 TESTINSN_un_q("vqshl.u16 q5, q4, #4", q5, q4, i32, 16); 851 TESTINSN_un_q("vqshl.u16 q5, q4, #15", q5, q4, i32, -1); 852 TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, -1); 853 TESTINSN_un_q("vqshl.u16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 854 TESTINSN_un_q("vqshl.u8 q0, q1, #1", q0, q1, i32, 1); 855 TESTINSN_un_q("vqshl.u8 q15, q14, #1", q15, q14, i32, -127); 856 TESTINSN_un_q("vqshl.u8 q5, q4, #0", q5, q4, i32, -127); 857 TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, 16); 858 TESTINSN_un_q("vqshl.u8 q5, q4, #4", q5, q4, i32, 16); 859 TESTINSN_un_q("vqshl.u8 q5, q4, #3", q5, q4, i32, 16); 860 TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, 16); 861 TESTINSN_un_q("vqshl.u8 q5, q4, #1", q5, q4, i32, 16); 862 TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, -1); 863 TESTINSN_un_q("vqshl.u8 q5, q4, #5", q5, q4, i32, -1); 864 TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2); 865 TESTINSN_un_q("vqshlu.s64 q0, q1, #1", q0, q1, i32, 1); 866 TESTINSN_un_q("vqshlu.s64 q15, q14, #1", q15, q14, i32, -127); 867 TESTINSN_un_q("vqshlu.s64 q5, q4, #0", q5, q4, i32, -127); 868 TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, 16); 869 TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, 16); 870 TESTINSN_un_q("vqshlu.s64 q5, q4, #59", q5, q4, i32, 16); 871 TESTINSN_un_q("vqshlu.s64 q5, q4, #58", q5, q4, i32, 16); 872 TESTINSN_un_q("vqshlu.s64 q5, q4, #17", q5, q4, i32, 16); 873 TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, -1); 874 TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, -1); 875 TESTINSN_un_q("vqshlu.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 876 TESTINSN_un_q("vqshlu.s32 q10, q11, #1", q10, q11, i32, 1); 877 TESTINSN_un_q("vqshlu.s32 q15, q14, #1", q15, q14, i32, -127); 878 TESTINSN_un_q("vqshlu.s32 q5, q4, #0", q5, q4, i32, -127); 879 TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, 16); 880 TESTINSN_un_q("vqshlu.s32 q5, q4, #28", q5, q4, i32, 16); 881 TESTINSN_un_q("vqshlu.s32 q5, q4, #27", q5, q4, i32, 16); 882 TESTINSN_un_q("vqshlu.s32 q5, q4, #26", q5, q4, i32, 16); 883 TESTINSN_un_q("vqshlu.s32 q5, q4, #17", q5, q4, i32, 16); 884 TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, -1); 885 TESTINSN_un_q("vqshlu.s32 q5, q4, #29", q5, q4, i32, -1); 886 TESTINSN_un_q("vqshlu.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 887 TESTINSN_un_q("vqshlu.s16 q9, q8, #1", q9, q8, i32, 1); 888 TESTINSN_un_q("vqshlu.s16 q15, q14, #1", q15, q14, i32, -127); 889 TESTINSN_un_q("vqshlu.s16 q5, q4, #0", q5, q4, i32, -127); 890 TESTINSN_un_q("vqshlu.s16 q9, q8, #15", q9, q8, i32, 16); 891 TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, 16); 892 TESTINSN_un_q("vqshlu.s16 q5, q4, #11", q5, q4, i32, 16); 893 TESTINSN_un_q("vqshlu.s16 q5, q4, #10", q5, q4, i32, 16); 894 TESTINSN_un_q("vqshlu.s16 q5, q4, #4", q5, q4, i32, 16); 895 TESTINSN_un_q("vqshlu.s16 q5, q4, #15", q5, q4, i32, -1); 896 TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, -1); 897 TESTINSN_un_q("vqshlu.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 898 TESTINSN_un_q("vqshlu.s8 q0, q1, #1", q0, q1, i32, 1); 899 TESTINSN_un_q("vqshlu.s8 q15, q14, #1", q15, q14, i32, -127); 900 TESTINSN_un_q("vqshlu.s8 q5, q4, #0", q5, q4, i32, -127); 901 TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, 16); 902 TESTINSN_un_q("vqshlu.s8 q5, q4, #4", q5, q4, i32, 16); 903 TESTINSN_un_q("vqshlu.s8 q5, q4, #3", q5, q4, i32, 16); 904 TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, 16); 905 TESTINSN_un_q("vqshlu.s8 q5, q4, #1", q5, q4, i32, 16); 906 TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, -1); 907 TESTINSN_un_q("vqshlu.s8 q5, q4, #5", q5, q4, i32, -1); 908 TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2); 909 910 printf("---- VQRSHL (register) ----\n"); 911 TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 912 TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 913 TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 914 TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 915 TESTINSN_bin_q("vqrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 916 TESTINSN_bin_q("vqrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 917 TESTINSN_bin_q("vqrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 918 TESTINSN_bin_q("vqrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 919 TESTINSN_bin_q("vqrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 920 TESTINSN_bin_q("vqrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 921 TESTINSN_bin_q("vqrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 922 TESTINSN_bin_q("vqrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 923 TESTINSN_bin_q("vqrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 924 TESTINSN_bin_q("vqrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 925 TESTINSN_bin_q("vqrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 926 TESTINSN_bin_q("vqrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 927 TESTINSN_bin_q("vqrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 928 TESTINSN_bin_q("vqrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 929 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 930 TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 931 TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 932 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 933 TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 934 TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 935 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 936 TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 937 TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 938 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 939 TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 940 TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 941 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 942 TESTINSN_bin_q("vqrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 943 TESTINSN_bin_q("vqrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 944 TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 945 TESTINSN_bin_q("vqrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 946 TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 947 TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 948 TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 949 TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 950 TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 951 TESTINSN_bin_q("vqrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 952 TESTINSN_bin_q("vqrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 953 TESTINSN_bin_q("vqrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 954 TESTINSN_bin_q("vqrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 955 TESTINSN_bin_q("vqrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 956 TESTINSN_bin_q("vqrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 957 TESTINSN_bin_q("vqrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 958 TESTINSN_bin_q("vqrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 959 TESTINSN_bin_q("vqrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 960 TESTINSN_bin_q("vqrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 961 TESTINSN_bin_q("vqrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 962 TESTINSN_bin_q("vqrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 963 TESTINSN_bin_q("vqrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 964 TESTINSN_bin_q("vqrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 965 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 966 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 967 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 968 TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 969 TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 970 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 971 TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 972 TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 973 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 974 TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 975 TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 976 TESTINSN_bin_q("vqrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 977 TESTINSN_bin_q("vqrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 978 TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 979 TESTINSN_bin_q("vqrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 980 TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 981 982 printf("---- VRSHL (register) ----\n"); 983 TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 984 TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 985 TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 986 TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 987 TESTINSN_bin("vrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 988 TESTINSN_bin("vrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 989 TESTINSN_bin("vrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 990 TESTINSN_bin("vrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 991 TESTINSN_bin("vrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 992 TESTINSN_bin("vrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 993 TESTINSN_bin("vrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 994 TESTINSN_bin("vrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 995 TESTINSN_bin("vrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 996 TESTINSN_bin("vrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 997 TESTINSN_bin("vrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 998 TESTINSN_bin("vrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 999 TESTINSN_bin("vrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 1000 TESTINSN_bin("vrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 1001 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 1002 TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 1003 TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 1004 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 1005 TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 1006 TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 1007 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 1008 TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 1009 TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 1010 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 1011 TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 1012 TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 1013 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 1014 TESTINSN_bin("vrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 1015 TESTINSN_bin("vrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 1016 TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 1017 TESTINSN_bin("vrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 1018 TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1019 TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 1020 TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 1021 TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 1022 TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 1023 TESTINSN_bin("vrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 1024 TESTINSN_bin("vrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 1025 TESTINSN_bin("vrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 1026 TESTINSN_bin("vrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 1027 TESTINSN_bin("vrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 1028 TESTINSN_bin("vrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 1029 TESTINSN_bin("vrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 1030 TESTINSN_bin("vrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 1031 TESTINSN_bin("vrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 1032 TESTINSN_bin("vrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 1033 TESTINSN_bin("vrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 1034 TESTINSN_bin("vrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 1035 TESTINSN_bin("vrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 1036 TESTINSN_bin("vrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 1037 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 1038 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 1039 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 1040 TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 1041 TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 1042 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 1043 TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 1044 TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 1045 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 1046 TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 1047 TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 1048 TESTINSN_bin("vrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 1049 TESTINSN_bin("vrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 1050 TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 1051 TESTINSN_bin("vrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 1052 TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1053 1054 printf("---- VMAX (integer) ----\n"); 1055 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 1056 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121); 1057 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 1058 TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1059 TESTINSN_bin("vmax.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 1060 TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 1061 TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1062 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1063 TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 1064 TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1065 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1066 TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 1067 TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1068 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1069 TESTINSN_bin("vmax.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1070 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 1071 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120); 1072 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 1073 TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1074 TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 1075 TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1076 TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1077 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1078 TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1079 TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1080 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1081 TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1082 TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1083 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1084 TESTINSN_bin("vmax.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1085 1086 printf("---- VMIN (integer) ----\n"); 1087 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 1088 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121); 1089 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1090 TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 1091 TESTINSN_bin("vmin.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 1092 TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 1093 TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1094 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1095 TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 1096 TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1097 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1098 TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 1099 TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1100 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1101 TESTINSN_bin("vmin.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1102 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 1103 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120); 1104 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1105 TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 1106 TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 1107 TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1108 TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1109 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1110 TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1111 TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1112 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1113 TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1114 TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1115 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1116 TESTINSN_bin("vmin.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1117 1118 printf("---- VABD ----\n"); 1119 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 1120 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 1121 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120); 1122 TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1123 TESTINSN_bin("vabd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1124 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 1125 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2); 1126 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200); 1127 TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1128 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1129 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 1130 TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1131 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1132 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 1133 TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1134 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1135 TESTINSN_bin("vabd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1136 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 1137 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1138 TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, -140, q2, i32, 120); 1139 TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1140 TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2); 1141 TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200); 1142 TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1143 TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1144 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1145 TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1146 TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1147 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1148 TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1149 TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1150 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1151 TESTINSN_bin("vabd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1152 1153 printf("---- VABA ----\n"); 1154 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 1155 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 1156 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1157 TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1158 TESTINSN_bin("vaba.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1159 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 1160 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2); 1161 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200); 1162 TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1163 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1164 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 1165 TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1166 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1167 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 1168 TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1169 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1170 TESTINSN_bin("vaba.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1171 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 1172 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1173 TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1174 TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1175 TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2); 1176 TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200); 1177 TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1178 TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1179 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1180 TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1181 TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1182 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 1183 TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1184 TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1185 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 1186 TESTINSN_bin("vaba.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1187 1188 printf("---- VABAL ----\n"); 1189 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120); 1190 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121); 1191 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1192 TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1193 TESTINSN_bin("vabal.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1194 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1195 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1196 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1197 TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1198 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1199 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1200 TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1201 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1202 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1203 TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1204 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1205 TESTINSN_bin("vabal.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120); 1206 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120); 1207 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1208 TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1209 TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1210 TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1211 TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1212 TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1213 TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1214 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1215 TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1216 TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1217 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1218 TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1219 TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1220 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1221 TESTINSN_bin("vabal.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120); 1222 1223 printf("---- VABDL ----\n"); 1224 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120); 1225 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121); 1226 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1227 TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1228 TESTINSN_bin("vabdl.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1229 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 1230 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1231 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1232 TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1233 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1234 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 1235 TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1236 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1237 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 1238 TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1239 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1240 TESTINSN_bin("vabdl.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120); 1241 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120); 1242 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1243 TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1244 TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 1245 TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2); 1246 TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200); 1247 TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1248 TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1249 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 1250 TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1251 TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1252 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 1253 TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1254 TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1255 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 1256 TESTINSN_bin("vabdl.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120); 1257 1258 printf("---- VTST ----\n"); 1259 TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 1260 TESTINSN_bin("vtst.32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120); 1261 TESTINSN_bin("vtst.16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120); 1262 TESTINSN_bin("vtst.8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120); 1263 TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1264 TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1); 1265 TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1266 TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2); 1267 TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1); 1268 TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2); 1269 TESTINSN_bin("vtst.32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1270 1271 printf("---- VCEQ ----\n"); 1272 TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 1273 TESTINSN_bin("vceq.i32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120); 1274 TESTINSN_bin("vceq.i16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120); 1275 TESTINSN_bin("vceq.i8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120); 1276 TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1277 TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1); 1278 TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 1279 TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2); 1280 TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 14) + 1); 1281 TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2); 1282 TESTINSN_bin("vceq.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 1283 1284 printf("---- VMLA ----\n"); 1285 TESTINSN_bin("vmla.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120); 1286 TESTINSN_bin("vmla.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, 120); 1287 TESTINSN_bin("vmla.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 1288 TESTINSN_bin("vmla.i16 q7, q1, q2", q7, q1, i32, 0x140, q2, i32, 0x120); 1289 TESTINSN_bin("vmla.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120); 1290 TESTINSN_bin("vmla.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 1291 TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 1292 TESTINSN_bin("vmla.i16 q14, q5, q9", q14, q5, i32, (1 << 14) + 1, q9, i32, (1 << 13) + 2); 1293 TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 1294 TESTINSN_bin("vmla.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 1295 TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 1296 TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 1297 TESTINSN_bin("vmla.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, -120); 1298 1299 printf("---- VMLS ----\n"); 1300 TESTINSN_bin("vmls.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120); 1301 TESTINSN_bin("vmls.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120); 1302 TESTINSN_bin("vmls.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 1303 TESTINSN_bin("vmls.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1304 TESTINSN_bin("vmls.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 1305 TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 1306 TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 1307 TESTINSN_bin("vmls.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 1308 TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 1309 TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 1310 TESTINSN_bin("vmls.i32 q10, q11, q15", q10, q11, i32, -24, q15, i32, 120); 1311 1312 printf("---- VMUL ----\n"); 1313 TESTINSN_bin("vmul.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 1314 TESTINSN_bin("vmul.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120); 1315 TESTINSN_bin("vmul.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 1316 TESTINSN_bin("vmul.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 1317 TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 1318 TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 1319 TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 1320 TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 25) + 0xfeb2, q12, i32, (1 << 13) + 0xdf); 1321 TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2); 1322 TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12); 1323 TESTINSN_bin("vmul.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 1324 TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 1325 TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 1326 TESTINSN_bin("vmul.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120); 1327 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3); 1328 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f); 1329 1330 printf("---- VMUL (by scalar) ----\n"); 1331 TESTINSN_bin("vmul.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 1332 TESTINSN_bin("vmul.i32 q15, q8, d7[1]", q15, q8, i32, 140, d4, i32, -120); 1333 TESTINSN_bin("vmul.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120); 1334 TESTINSN_bin("vmul.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1335 TESTINSN_bin("vmul.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1336 TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1337 TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 1338 TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1339 TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1340 1341 printf("---- VMLA (by scalar) ----\n"); 1342 TESTINSN_bin("vmla.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 1343 TESTINSN_bin("vmla.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120); 1344 TESTINSN_bin("vmla.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120); 1345 TESTINSN_bin("vmla.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1346 TESTINSN_bin("vmla.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1347 TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1348 TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 1349 TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1350 TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1351 1352 printf("---- VMLS (by scalar) ----\n"); 1353 TESTINSN_bin("vmls.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 1354 TESTINSN_bin("vmls.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120); 1355 TESTINSN_bin("vmls.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120); 1356 TESTINSN_bin("vmls.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1357 TESTINSN_bin("vmls.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1358 TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1359 TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 1360 TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1361 TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1362 1363 printf("---- VMULL (by scalar) ----\n"); 1364 TESTINSN_bin("vmull.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120); 1365 TESTINSN_bin("vmull.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120); 1366 TESTINSN_bin("vmull.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 1367 TESTINSN_bin("vmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1368 TESTINSN_bin("vmull.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1369 TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1370 TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 1371 TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1372 TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1373 TESTINSN_bin("vmull.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120); 1374 TESTINSN_bin("vmull.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120); 1375 TESTINSN_bin("vmull.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 1376 TESTINSN_bin("vmull.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1377 TESTINSN_bin("vmull.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1378 TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1379 TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 1380 TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1381 TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1382 1383 printf("---- VMLAL (by scalar) ----\n"); 1384 TESTINSN_bin("vmlal.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120); 1385 TESTINSN_bin("vmlal.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120); 1386 TESTINSN_bin("vmlal.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 1387 TESTINSN_bin("vmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1388 TESTINSN_bin("vmlal.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1389 TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1390 TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 1391 TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1392 TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1393 TESTINSN_bin("vmlal.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120); 1394 TESTINSN_bin("vmlal.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120); 1395 TESTINSN_bin("vmlal.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 1396 TESTINSN_bin("vmlal.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1397 TESTINSN_bin("vmlal.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1398 TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1399 TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 1400 TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1401 TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1402 1403 printf("---- VMLSL (by scalar) ----\n"); 1404 TESTINSN_bin("vmlsl.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120); 1405 TESTINSN_bin("vmlsl.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120); 1406 TESTINSN_bin("vmlsl.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 1407 TESTINSN_bin("vmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1408 TESTINSN_bin("vmlsl.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1409 TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1410 TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 1411 TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1412 TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1413 TESTINSN_bin("vmlsl.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120); 1414 TESTINSN_bin("vmlsl.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120); 1415 TESTINSN_bin("vmlsl.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 1416 TESTINSN_bin("vmlsl.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1417 TESTINSN_bin("vmlsl.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 1418 TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1419 TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 1420 TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1421 TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 1422 1423 printf("---- VRSHR ----\n"); 1424 TESTINSN_un("vrshr.s8 q0, q1, #0", q0, q1, i32, -1); 1425 TESTINSN_un("vrshr.s8 q0, q1, #1", q0, q1, i32, -1); 1426 TESTINSN_un("vrshr.s16 q3, q4, #2", q3, q4, i32, -0x7c); 1427 TESTINSN_un("vrshr.s32 q2, q5, #31", q2, q5, i32, -1); 1428 TESTINSN_un("vrshr.s8 q6, q7, #7", q6, q7, i32, 0xffff); 1429 TESTINSN_un("vrshr.s16 q8, q9, #12", q8, q9, i32, -10); 1430 TESTINSN_un("vrshr.s32 q10, q11, #5", q10, q11, i32, 10234); 1431 TESTINSN_un("vrshr.u8 q12, q13, #1", q12, q13, i32, -1); 1432 TESTINSN_un("vrshr.u16 q14, q15, #11", q14, q15, i32, -1); 1433 TESTINSN_un("vrshr.u32 q10, q11, #9", q10, q11, i32, 1000); 1434 TESTINSN_un("vrshr.u8 q7, q13, #7", q7, q13, i32, -1); 1435 TESTINSN_un("vrshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf); 1436 TESTINSN_un("vrshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0); 1437 TESTINSN_un("vrshr.u64 q0, q1, #42", q0, q1, i32, -1); 1438 TESTINSN_un("vrshr.s64 q6, q7, #12", q6, q7, i32, 0xfac); 1439 TESTINSN_un("vrshr.u64 q8, q4, #9", q8, q4, i32, 13560); 1440 TESTINSN_un("vrshr.s64 q9, q12, #11", q9, q12, i32, 98710); 1441 1442 printf("---- VRSRA ----\n"); 1443 TESTINSN_un("vrsra.s8 q0, q1, #1", q0, q1, i32, -1); 1444 TESTINSN_un("vrsra.s16 q3, q4, #2", q3, q4, i32, -0x7c); 1445 TESTINSN_un("vrsra.s32 q2, q5, #31", q2, q5, i32, -1); 1446 TESTINSN_un("vrsra.s8 q6, q7, #7", q6, q7, i32, 0xffff); 1447 TESTINSN_un("vrsra.s16 q8, q9, #12", q8, q9, i32, -10); 1448 TESTINSN_un("vrsra.s32 q10, q11, #5", q10, q11, i32, 10234); 1449 TESTINSN_un("vrsra.u8 q12, q13, #1", q12, q13, i32, -1); 1450 TESTINSN_un("vrsra.u16 q14, q15, #11", q14, q15, i32, -1); 1451 TESTINSN_un("vrsra.u32 q10, q11, #9", q10, q11, i32, 1000); 1452 TESTINSN_un("vrsra.u8 q7, q13, #7", q7, q13, i32, -1); 1453 TESTINSN_un("vrsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf); 1454 TESTINSN_un("vrsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0); 1455 TESTINSN_un("vrsra.u64 q0, q1, #42", q0, q1, i32, -1); 1456 TESTINSN_un("vrsra.s64 q6, q7, #12", q6, q7, i32, 0xfac); 1457 TESTINSN_un("vrsra.u64 q8, q4, #9", q8, q4, i32, 13560); 1458 TESTINSN_un("vrsra.s64 q9, q12, #11", q9, q12, i32, 98710); 1459 1460 printf("---- VSHR ----\n"); 1461 TESTINSN_un("vshr.s8 q0, q1, #0", q0, q1, i32, -1); 1462 TESTINSN_un("vshr.s8 q0, q1, #1", q0, q1, i32, -1); 1463 TESTINSN_un("vshr.s16 q3, q4, #2", q3, q4, i32, -0x7c); 1464 TESTINSN_un("vshr.s32 q2, q5, #31", q2, q5, i32, -1); 1465 TESTINSN_un("vshr.s8 q6, q7, #7", q6, q7, i32, 0xffff); 1466 TESTINSN_un("vshr.s16 q8, q9, #12", q8, q9, i32, -10); 1467 TESTINSN_un("vshr.s32 q10, q11, #5", q10, q11, i32, 10234); 1468 TESTINSN_un("vshr.u8 q12, q13, #1", q12, q13, i32, -1); 1469 TESTINSN_un("vshr.u16 q14, q15, #11", q14, q15, i32, -1); 1470 TESTINSN_un("vshr.u32 q10, q11, #9", q10, q11, i32, 1000); 1471 TESTINSN_un("vshr.u8 q7, q13, #7", q7, q13, i32, -1); 1472 TESTINSN_un("vshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf); 1473 TESTINSN_un("vshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0); 1474 TESTINSN_un("vshr.u64 q0, q1, #42", q0, q1, i32, -1); 1475 TESTINSN_un("vshr.s64 q6, q7, #12", q6, q7, i32, 0xfac); 1476 TESTINSN_un("vshr.u64 q8, q4, #9", q8, q4, i32, 13560); 1477 TESTINSN_un("vshr.s64 q9, q12, #11", q9, q12, i32, 98710); 1478 1479 printf("---- VSRA ----\n"); 1480 TESTINSN_un("vsra.s8 q0, q1, #1", q0, q1, i32, -1); 1481 TESTINSN_un("vsra.s16 q3, q4, #2", q3, q4, i32, -0x7c); 1482 TESTINSN_un("vsra.s32 q2, q5, #31", q2, q5, i32, -1); 1483 TESTINSN_un("vsra.s8 q6, q7, #7", q6, q7, i32, 0xffff); 1484 TESTINSN_un("vsra.s16 q8, q9, #12", q8, q9, i32, -10); 1485 TESTINSN_un("vsra.s32 q10, q11, #5", q10, q11, i32, 10234); 1486 TESTINSN_un("vsra.u8 q12, q13, #1", q12, q13, i32, -1); 1487 TESTINSN_un("vsra.u16 q14, q15, #11", q14, q15, i32, -1); 1488 TESTINSN_un("vsra.u32 q10, q11, #9", q10, q11, i32, 1000); 1489 TESTINSN_un("vsra.u8 q7, q13, #7", q7, q13, i32, -1); 1490 TESTINSN_un("vsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf); 1491 TESTINSN_un("vsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0); 1492 TESTINSN_un("vsra.u64 q0, q1, #42", q0, q1, i32, -1); 1493 TESTINSN_un("vsra.s64 q6, q7, #12", q6, q7, i32, 0xfac); 1494 TESTINSN_un("vsra.u64 q8, q4, #9", q8, q4, i32, 13560); 1495 TESTINSN_un("vsra.s64 q9, q12, #11", q9, q12, i32, 98710); 1496 1497 printf("---- VSRI ----\n"); 1498 TESTINSN_un("vsri.16 q0, q1, #1", q0, q1, i32, -1); 1499 TESTINSN_un("vsri.16 q3, q4, #2", q3, q4, i32, -0x7c); 1500 TESTINSN_un("vsri.32 q2, q5, #31", q2, q5, i32, -1); 1501 TESTINSN_un("vsri.8 q6, q7, #7", q6, q7, i32, 0xffff); 1502 TESTINSN_un("vsri.16 q8, q9, #12", q8, q9, i32, -10); 1503 TESTINSN_un("vsri.32 q10, q11, #5", q10, q11, i32, 10234); 1504 TESTINSN_un("vsri.8 q12, q13, #1", q12, q13, i32, -1); 1505 TESTINSN_un("vsri.16 q14, q15, #11", q14, q15, i32, -1); 1506 TESTINSN_un("vsri.32 q10, q11, #9", q10, q11, i32, 1000); 1507 TESTINSN_un("vsri.8 q7, q13, #7", q7, q13, i32, -1); 1508 TESTINSN_un("vsri.16 q8, q1, #5", q8, q1, i32, 0xabcf); 1509 TESTINSN_un("vsri.32 q12, q3, #15", q12, q3, i32, -0x1b0); 1510 TESTINSN_un("vsri.64 q0, q1, #42", q0, q1, i32, -1); 1511 TESTINSN_un("vsri.64 q6, q7, #12", q6, q7, i32, 0xfac); 1512 TESTINSN_un("vsri.64 q8, q4, #9", q8, q4, i32, 13560); 1513 TESTINSN_un("vsri.64 q9, q12, #11", q9, q12, i32, 98710); 1514 1515 printf("---- VMOVL ----\n"); 1516 TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i32, 0x42); 1517 TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i32, 0x42); 1518 TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i32, 0x42); 1519 TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i32, 0x42); 1520 TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i32, 0x42); 1521 TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i32, 0x42); 1522 TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i8, 0xed); 1523 TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i8, 0xed); 1524 TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i8, 0xed); 1525 TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i8, 0xed); 1526 TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i8, 0xed); 1527 TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i8, 0xed); 1528 1529 printf("---- VABS ----\n"); 1530 TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0x73); 1531 TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0x73); 1532 TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0x73); 1533 TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0xfe); 1534 TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0xef); 1535 TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0xde); 1536 TESTINSN_un("vabs.s32 q0, q1", q0, q1, i16, 0xfe0a); 1537 TESTINSN_un("vabs.s16 q15, q4", q15, q4, i16, 0xef0b); 1538 TESTINSN_un("vabs.s8 q8, q7", q8, q7, i16, 0xde0c); 1539 1540 printf("---- VQABS ----\n"); 1541 TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0x73); 1542 TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 1 << 31); 1543 TESTINSN_un_q("vqabs.s16 q0, q1", q0, q1, i32, 1 << 31); 1544 TESTINSN_un_q("vqabs.s8 q0, q1", q0, q1, i32, 1 << 31); 1545 TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0x73); 1546 TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0x73); 1547 TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0xfe); 1548 TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0xef); 1549 TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0xde); 1550 TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i16, 0xfe0a); 1551 TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i16, 0xef0b); 1552 TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i16, 0xde0c); 1553 1554 printf("---- VADDW ----\n"); 1555 TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 1556 TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12); 1557 TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12); 1558 TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 1559 TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 1560 TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 1561 TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 1562 TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2); 1563 TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2); 1564 TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 1565 TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 1566 TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 1567 1568 printf("---- VADDL ----\n"); 1569 TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 1570 TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12); 1571 TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12); 1572 TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 1573 TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 1574 TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 1575 TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 1576 TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2); 1577 TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2); 1578 TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 1579 TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 1580 TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 1581 TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 1582 TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12); 1583 TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12); 1584 TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 1585 TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 1586 TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 1587 TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 1588 TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2); 1589 TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2); 1590 TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 1591 TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 1592 TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 1593 1594 printf("---- VSUBW ----\n"); 1595 TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 1596 TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12); 1597 TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12); 1598 TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 1599 TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 1600 TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 1601 TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 1602 TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2); 1603 TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2); 1604 TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 1605 TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 1606 TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 1607 1608 printf("---- VSUBL ----\n"); 1609 TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 1610 TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12); 1611 TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12); 1612 TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 1613 TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 1614 TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 1615 TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 1616 TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2); 1617 TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2); 1618 TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 1619 TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 1620 TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 1621 TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 1622 TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12); 1623 TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12); 1624 TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 1625 TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 1626 TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 1627 TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 1628 TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2); 1629 TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2); 1630 TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 1631 TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 1632 TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 1633 1634 printf("---- VCEQ #0 ----\n"); 1635 TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x21); 1636 TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x21); 1637 TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x21); 1638 TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x0); 1639 TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x0); 1640 TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x0); 1641 1642 printf("---- VCGT #0 ----\n"); 1643 TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x21); 1644 TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x21); 1645 TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x21); 1646 TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x0); 1647 TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x0); 1648 TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x0); 1649 TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i8, 0xef); 1650 TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i8, 0xed); 1651 TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i8, 0xae); 1652 1653 printf("---- VCGE #0 ----\n"); 1654 TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x21); 1655 TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x21); 1656 TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x21); 1657 TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x0); 1658 TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x0); 1659 TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x0); 1660 TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i8, 0xef); 1661 TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i8, 0xed); 1662 TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i8, 0xae); 1663 TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0xef); 1664 TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0xed); 1665 TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0xae); 1666 1667 printf("---- VCLE #0 ----\n"); 1668 TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x21); 1669 TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x21); 1670 TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x21); 1671 TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x0); 1672 TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x0); 1673 TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x0); 1674 TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i8, 0xef); 1675 TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i8, 0xed); 1676 TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i8, 0xae); 1677 1678 printf("---- VCLT #0 ----\n"); 1679 TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x21); 1680 TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x21); 1681 TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x21); 1682 TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x0); 1683 TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x0); 1684 TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x0); 1685 TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i8, 0xef); 1686 TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i8, 0xed); 1687 TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i8, 0xae); 1688 TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0xef); 1689 TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0xed); 1690 TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0xae); 1691 1692 printf("---- VCNT ----\n"); 1693 TESTINSN_un("vcnt.8 q0, q1", q0, q1, i32, 0xac3d25eb); 1694 TESTINSN_un("vcnt.8 q11, q14", q11, q14, i32, 0xac3d25eb); 1695 TESTINSN_un("vcnt.8 q6, q2", q6, q2, i32, 0xad0eb); 1696 1697 printf("---- VCLS ----\n"); 1698 TESTINSN_un("vcls.s8 q0, q1", q0, q1, i32, 0x21); 1699 TESTINSN_un("vcls.s8 q10, q15", q10, q15, i8, 0x82); 1700 TESTINSN_un("vcls.s16 q0, q1", q0, q1, i32, 0x21); 1701 TESTINSN_un("vcls.s16 q15, q10", q15, q10, i8, 0x82); 1702 TESTINSN_un("vcls.s32 q6, q1", q6, q1, i32, 0x21); 1703 TESTINSN_un("vcls.s32 q10, q5", q10, q5, i8, 0x82); 1704 TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0xff); 1705 TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0xff); 1706 TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0xff); 1707 TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0xffef); 1708 TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0xffef); 1709 TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0xffef); 1710 TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0x00); 1711 TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0x00); 1712 TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0x00); 1713 TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0x00ef); 1714 TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0x00ef); 1715 TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0x00ef); 1716 1717 printf("---- VCLZ ----\n"); 1718 TESTINSN_un("vclz.i8 q0, q1", q0, q1, i32, 0x21); 1719 TESTINSN_un("vclz.i8 q10, q15", q10, q15, i8, 0x82); 1720 TESTINSN_un("vclz.i16 q0, q1", q0, q1, i32, 0x21); 1721 TESTINSN_un("vclz.i16 q15, q10", q15, q10, i8, 0x82); 1722 TESTINSN_un("vclz.i32 q6, q1", q6, q1, i32, 0x21); 1723 TESTINSN_un("vclz.i32 q10, q5", q10, q5, i8, 0x82); 1724 TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0xff); 1725 TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0xff); 1726 TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0xff); 1727 TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0xffef); 1728 TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0xffef); 1729 TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0xffef); 1730 TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0x00); 1731 TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0x00); 1732 TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0x00); 1733 TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0x00ef); 1734 TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0x00ef); 1735 TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0x00ef); 1736 1737 printf("---- VSLI ----\n"); 1738 TESTINSN_un("vsli.16 q0, q1, #1", q0, q1, i32, -1); 1739 TESTINSN_un("vsli.16 q3, q4, #2", q3, q4, i32, -0x7c); 1740 TESTINSN_un("vsli.32 q2, q5, #31", q2, q5, i32, -1); 1741 TESTINSN_un("vsli.8 q6, q7, #7", q6, q7, i32, 0xffff); 1742 TESTINSN_un("vsli.16 q8, q9, #12", q8, q9, i32, -10); 1743 TESTINSN_un("vsli.32 q10, q11, #5", q10, q11, i32, 10234); 1744 TESTINSN_un("vsli.8 q12, q13, #1", q12, q13, i32, -1); 1745 TESTINSN_un("vsli.16 q14, q15, #11", q14, q15, i32, -1); 1746 TESTINSN_un("vsli.32 q10, q11, #9", q10, q11, i32, 1000); 1747 TESTINSN_un("vsli.8 q7, q13, #7", q7, q13, i32, -1); 1748 TESTINSN_un("vsli.16 q8, q1, #1", q8, q1, i32, 0xabcf); 1749 TESTINSN_un("vsli.32 q12, q3, #15", q12, q3, i32, -0x1b0); 1750 TESTINSN_un("vsli.64 q0, q1, #42", q0, q1, i32, -1); 1751 TESTINSN_un("vsli.64 q6, q7, #12", q6, q7, i32, 0xfac); 1752 TESTINSN_un("vsli.64 q8, q4, #9", q8, q4, i32, 13560); 1753 TESTINSN_un("vsli.64 q9, q12, #11", q9, q12, i32, 98710); 1754 1755 printf("---- VPADDL ----\n"); 1756 TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 24); 1757 TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 140); 1758 TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, 140); 1759 TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, 140); 1760 TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, (1 << 31) + 1); 1761 TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, (1 << 31) + 1); 1762 TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, (1 << 31) + 1); 1763 TESTINSN_un("vpaddl.u32 q10, q11", q10, q11, i32, 24); 1764 TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 24); 1765 TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 140); 1766 TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, 140); 1767 TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, 140); 1768 TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, (1 << 31) + 1); 1769 TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, (1 << 31) + 1); 1770 TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, (1 << 31) + 1); 1771 TESTINSN_un("vpaddl.s32 q10, q11", q10, q11, i32, 24); 1772 1773 printf("---- VPADAL ----\n"); 1774 TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 24); 1775 TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 140); 1776 TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, 140); 1777 TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i8, 140); 1778 TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i32, (1 << 31) + 1); 1779 TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, (1 << 31) + 1); 1780 TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, (1 << 31) + 1); 1781 TESTINSN_un("vpadal.u32 q10, q11", q10, q11, i32, 24); 1782 TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 24); 1783 TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 140); 1784 TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, 140); 1785 TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i8, 140); 1786 TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i32, (1 << 31) + 1); 1787 TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, (1 << 31) + 1); 1788 TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, (1 << 31) + 1); 1789 TESTINSN_un("vpadal.s32 q10, q11", q10, q11, i32, 24); 1790 1791 printf("---- VZIP ----\n"); 1792 TESTINSN_dual("vzip.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34); 1793 TESTINSN_dual("vzip.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34); 1794 TESTINSN_dual("vzip.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34); 1795 TESTINSN_dual("vzip.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 1796 TESTINSN_dual("vzip.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 1797 TESTINSN_dual("vzip.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d); 1798 1799 printf("---- VUZP ----\n"); 1800 TESTINSN_dual("vuzp.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34); 1801 TESTINSN_dual("vuzp.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34); 1802 TESTINSN_dual("vuzp.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34); 1803 TESTINSN_dual("vuzp.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 1804 TESTINSN_dual("vuzp.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 1805 TESTINSN_dual("vuzp.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d); 1806 1807 printf("---- VTRN ----\n"); 1808 TESTINSN_dual("vtrn.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34); 1809 TESTINSN_dual("vtrn.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34); 1810 TESTINSN_dual("vtrn.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34); 1811 TESTINSN_dual("vtrn.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 1812 TESTINSN_dual("vtrn.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 1813 TESTINSN_dual("vtrn.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d); 1814 1815 printf("---- VSWP ----\n"); 1816 TESTINSN_dual("vswp q0, q1", q0, i8, 0x12, q1, i8, 0x34); 1817 TESTINSN_dual("vswp q1, q0", q0, i8, 0x12, q1, i8, 0x34); 1818 TESTINSN_dual("vswp q10, q11", q10, i8, 0x12, q11, i8, 0x34); 1819 TESTINSN_dual("vswp q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 1820 TESTINSN_dual("vswp q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 1821 TESTINSN_dual("vswp q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d); 1822 1823 printf("---- VDUP ----\n"); 1824 TESTINSN_un("vdup.8 q2, d2[0]", q2, d2, i32, 0xabc4657); 1825 TESTINSN_un("vdup.8 q3, d3[2]", q3, d3, i32, 0x7a1b3); 1826 TESTINSN_un("vdup.8 q1, d0[7]", q1, d0, i32, 0x713aaa); 1827 TESTINSN_un("vdup.8 q0, d4[3]", q0, d4, i32, 0xaa713); 1828 TESTINSN_un("vdup.8 q4, d28[4]", q4, d28, i32, 0x7b1c3); 1829 TESTINSN_un("vdup.16 q7, d19[3]", q7, d19, i32, 0x713ffff); 1830 TESTINSN_un("vdup.16 q15, d31[0]", q15, d31, i32, 0x7f00fa); 1831 TESTINSN_un("vdup.16 q6, d2[0]", q6, d2, i32, 0xffabcde); 1832 TESTINSN_un("vdup.16 q8, d22[3]", q8, d22, i32, 0x713); 1833 TESTINSN_un("vdup.16 q9, d2[0]", q9, d2, i32, 0x713); 1834 TESTINSN_un("vdup.32 q10, d17[1]", q10, d17, i32, 0x713); 1835 TESTINSN_un("vdup.32 q15, d11[0]", q15, d11, i32, 0x3); 1836 TESTINSN_un("vdup.32 q10, d29[1]", q10, d29, i32, 0xf00000aa); 1837 TESTINSN_un("vdup.32 q12, d0[1]", q12, d0, i32, 0xf); 1838 TESTINSN_un("vdup.32 q13, d13[0]", q13, d13, i32, -1); 1839 1840 printf("---- VQDMULL ----\n"); 1841 TESTINSN_bin_q("vqdmull.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120); 1842 TESTINSN_bin_q("vqdmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 1843 TESTINSN_bin_q("vqdmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 1844 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1845 TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1846 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1847 TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 1848 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1849 TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1850 TESTINSN_bin_q("vqdmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 1851 TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 1852 TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 1853 TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 1854 TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 1855 1856 printf("---- VQDMULL (by scalar) ----\n"); 1857 TESTINSN_bin_q("vqdmull.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120); 1858 TESTINSN_bin_q("vqdmull.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120); 1859 TESTINSN_bin_q("vqdmull.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120); 1860 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1861 TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 1862 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 1863 TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12); 1864 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1865 TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 1866 TESTINSN_bin_q("vqdmull.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120); 1867 TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 1868 TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 1869 TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31); 1870 TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30); 1871 1872 printf("---- VQDMLSL ----\n"); 1873 TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120); 1874 TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 1875 TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 1876 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1877 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1878 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1879 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 1880 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1881 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1882 TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 1883 TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 1884 TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 1885 TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 1886 TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 1887 1888 printf("---- VQDMLSL (by scalar) ----\n"); 1889 TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120); 1890 TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120); 1891 TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120); 1892 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1893 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 1894 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 1895 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12); 1896 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1897 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 1898 TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120); 1899 TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 1900 TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 1901 TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31); 1902 TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30); 1903 1904 printf("---- VQDMLAL ----\n"); 1905 TESTINSN_bin_q("vqdmlal.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120); 1906 TESTINSN_bin_q("vqdmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 1907 TESTINSN_bin_q("vqdmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 1908 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1909 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1910 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 1911 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 1912 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1913 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1914 TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 1915 TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 1916 TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 1917 TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 1918 TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 1919 1920 printf("---- VQDMLAL (by scalar) ----\n"); 1921 TESTINSN_bin_q("vqdmlal.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120); 1922 TESTINSN_bin_q("vqdmlal.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120); 1923 TESTINSN_bin_q("vqdmlal.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120); 1924 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1925 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 1926 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 1927 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12); 1928 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1929 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 1930 TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120); 1931 TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 1932 TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 1933 TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31); 1934 TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30); 1935 1936 printf("---- VQDMULH ----\n"); 1937 TESTINSN_bin_q("vqdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 1938 TESTINSN_bin_q("vqdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120); 1939 TESTINSN_bin_q("vqdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 1940 TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 1941 TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 1942 TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2); 1943 TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12); 1944 TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 1945 TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 1946 TESTINSN_bin_q("vqdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120); 1947 TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 1948 TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 1949 TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31); 1950 TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30); 1951 1952 printf("---- VQDMULH (by scalar) ----\n"); 1953 TESTINSN_bin_q("vqdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120); 1954 TESTINSN_bin_q("vqdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120); 1955 TESTINSN_bin_q("vqdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120); 1956 TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 1957 TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1958 TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 1959 TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12); 1960 TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 1961 TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 1962 TESTINSN_bin_q("vqdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120); 1963 TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31); 1964 TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 1965 TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31); 1966 TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30); 1967 1968 printf("---- VSHL (immediate) ----\n"); 1969 TESTINSN_un("vshl.i64 q0, q1, #1", q0, q1, i32, 24); 1970 TESTINSN_un("vshl.i64 q5, q2, #1", q5, q2, i32, (1 << 30)); 1971 TESTINSN_un("vshl.i64 q9, q12, #2", q9, q12, i32, (1 << 31) + 2); 1972 TESTINSN_un("vshl.i64 q11, q2, #12", q11, q2, i32, -1); 1973 TESTINSN_un("vshl.i64 q15, q12, #63", q15, q12, i32, 5); 1974 TESTINSN_un("vshl.i64 q5, q12, #62", q5, q12, i32, (1 << 31) + 1); 1975 TESTINSN_un("vshl.i32 q0, q1, #1", q0, q1, i32, 24); 1976 TESTINSN_un("vshl.i32 q5, q2, #1", q5, q2, i32, (1 << 30)); 1977 TESTINSN_un("vshl.i32 q9, q12, #2", q9, q12, i32, (1 << 31) + 2); 1978 TESTINSN_un("vshl.i32 q11, q2, #12", q11, q2, i32, -1); 1979 TESTINSN_un("vshl.i32 q15, q12, #20", q15, q12, i32, 5); 1980 TESTINSN_un("vshl.i32 q5, q12, #30", q5, q12, i32, (1 << 31) + 1); 1981 TESTINSN_un("vshl.i16 q0, q1, #1", q0, q1, i16, 24); 1982 TESTINSN_un("vshl.i16 q5, q2, #1", q5, q2, i32, (1 << 30)); 1983 TESTINSN_un("vshl.i16 q9, q12, #2", q9, q12, i32, (1 << 31) + 2); 1984 TESTINSN_un("vshl.i16 q11, q2, #12", q11, q2, i16, -1); 1985 TESTINSN_un("vshl.i16 q15, q12, #3", q15, q12, i16, 5); 1986 TESTINSN_un("vshl.i16 q5, q12, #14", q5, q12, i32, (1 << 31) + 1); 1987 TESTINSN_un("vshl.i8 q0, q1, #1", q0, q1, i8, 24); 1988 TESTINSN_un("vshl.i8 q5, q2, #1", q5, q2, i32, (1 << 30)); 1989 TESTINSN_un("vshl.i8 q9, q12, #2", q9, q12, i32, (1 << 31) + 2); 1990 TESTINSN_un("vshl.i8 q11, q2, #7", q11, q2, i8, -1); 1991 TESTINSN_un("vshl.i8 q15, q12, #3", q15, q12, i8, 5); 1992 TESTINSN_un("vshl.i8 q5, q12, #6", q5, q12, i32, (1 << 31) + 1); 1993 1994 printf("---- VNEG ----\n"); 1995 TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0x73); 1996 TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0x73); 1997 TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0x73); 1998 TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0xfe); 1999 TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0xef); 2000 TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0xde); 2001 TESTINSN_un("vneg.s32 q0, q1", q0, q1, i16, 0xfe0a); 2002 TESTINSN_un("vneg.s16 q15, q4", q15, q4, i16, 0xef0b); 2003 TESTINSN_un("vneg.s8 q8, q7", q8, q7, i16, 0xde0c); 2004 2005 printf("---- VQNEG ----\n"); 2006 TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0x73); 2007 TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 1 << 31); 2008 TESTINSN_un_q("vqneg.s16 q0, q1", q0, q1, i32, 1 << 31); 2009 TESTINSN_un_q("vqneg.s8 q0, q1", q0, q1, i32, 1 << 31); 2010 TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0x73); 2011 TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0x73); 2012 TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0xfe); 2013 TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0xef); 2014 TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0xde); 2015 TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i16, 0xfe0a); 2016 TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i16, 0xef0b); 2017 TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i16, 0xde0c); 2018 2019 printf("---- VREV ----\n"); 2020 TESTINSN_un("vrev64.8 q0, q1", q0, q1, i32, 0xaabbccdd); 2021 TESTINSN_un("vrev64.16 q10, q15", q10, q15, i32, 0xaabbccdd); 2022 TESTINSN_un("vrev64.32 q1, q14", q1, q14, i32, 0xaabbccdd); 2023 TESTINSN_un("vrev32.8 q0, q1", q0, q1, i32, 0xaabbccdd); 2024 TESTINSN_un("vrev32.16 q10, q15", q10, q15, i32, 0xaabbccdd); 2025 TESTINSN_un("vrev16.8 q0, q1", q0, q1, i32, 0xaabbccdd); 2026 2027 printf("---- VSHLL ----\n"); 2028 TESTINSN_un("vshll.s32 q0, d1, #1", q0, d1, i32, 24); 2029 TESTINSN_un("vshll.s32 q5, d2, #1", q5, d2, i32, (1 << 30)); 2030 TESTINSN_un("vshll.s32 q9, d12, #2", q9, d12, i32, (1 << 31) + 2); 2031 TESTINSN_un("vshll.u32 q11, d2, #12", q11, d2, i32, -1); 2032 TESTINSN_un("vshll.u32 q15, d12, #20", q15, d12, i32, 5); 2033 TESTINSN_un("vshll.u32 q5, d22, #30", q5, d22, i32, (1 << 31) + 1); 2034 TESTINSN_un("vshll.s16 q0, d1, #1", q0, d1, i16, 24); 2035 TESTINSN_un("vshll.s16 q5, d2, #1", q5, d2, i32, (1 << 30)); 2036 TESTINSN_un("vshll.s16 q9, d12, #2", q9, d12, i32, (1 << 31) + 2); 2037 TESTINSN_un("vshll.u16 q11, d2, #12", q11, d2, i16, -1); 2038 TESTINSN_un("vshll.u16 q15, d22, #3", q15, d22, i16, 5); 2039 TESTINSN_un("vshll.u16 q5, d12, #14", q5, d12, i32, (1 << 31) + 1); 2040 TESTINSN_un("vshll.s8 q0, d1, #1", q0, d1, i8, 24); 2041 TESTINSN_un("vshll.s8 q5, d2, #1", q5, d2, i32, (1 << 30)); 2042 TESTINSN_un("vshll.s8 q9, d12, #2", q9, d12, i32, (1 << 31) + 2); 2043 TESTINSN_un("vshll.u8 q11, d2, #7", q11, d2, i8, -1); 2044 TESTINSN_un("vshll.u8 q15, d19, #3", q15, d19, i8, 5); 2045 TESTINSN_un("vshll.u8 q5, d12, #6", q5, d12, i32, (1 << 31) + 1); 2046 2047 printf("---- VSHLL (max shift) ----\n"); 2048 TESTINSN_un("vshll.i32 q0, d1, #32", q0, d1, i32, 24); 2049 TESTINSN_un("vshll.i32 q5, d2, #32", q5, d2, i32, (1 << 30)); 2050 TESTINSN_un("vshll.i32 q11, d2, #32", q11, d2, i32, -1); 2051 TESTINSN_un("vshll.i32 q15, d12, #32", q15, d12, i32, 5); 2052 TESTINSN_un("vshll.i16 q0, d1, #16", q0, d1, i16, 24); 2053 TESTINSN_un("vshll.i16 q5, d2, #16", q5, d2, i32, (1 << 30)); 2054 TESTINSN_un("vshll.i16 q11, d2, #16", q11, d2, i16, -1); 2055 TESTINSN_un("vshll.i16 q15, d22, #16", q15, d22, i16, 5); 2056 TESTINSN_un("vshll.i8 q0, d1, #8", q0, d1, i8, 24); 2057 TESTINSN_un("vshll.i8 q5, d2, #8", q5, d2, i32, (1 << 30)); 2058 TESTINSN_un("vshll.i8 q11, d2, #8", q11, d2, i8, -1); 2059 TESTINSN_un("vshll.i8 q15, d19, #8", q15, d19, i8, 5); 2060 2061 printf("---- VMULL ----\n"); 2062 TESTINSN_bin("vmull.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2063 TESTINSN_bin("vmull.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2064 TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2065 TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2066 TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2067 TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2068 TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2069 TESTINSN_bin("vmull.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2070 TESTINSN_bin("vmull.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2071 TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2072 TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2073 TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2074 TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2075 TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2076 TESTINSN_bin("vmull.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2077 TESTINSN_bin("vmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2078 TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2079 TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2080 TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2081 TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2082 TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2083 TESTINSN_bin("vmull.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2084 TESTINSN_bin("vmull.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2085 TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2086 TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2087 TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2088 TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2089 TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2090 TESTINSN_bin("vmull.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 2091 TESTINSN_bin("vmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 2092 TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2093 TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 2094 TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2095 TESTINSN_bin("vmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 2096 TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2097 TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 2098 TESTINSN_bin("vmull.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 2099 TESTINSN_bin("vmull.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 2100 TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2101 TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 2102 TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2103 TESTINSN_bin("vmull.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 2104 TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2105 TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 2106 TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x1a4b0c, d12, i32, 0xd1e2f0); 2107 TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2108 TESTINSN_bin("vmull.p8 q4, d15, d26", q4, d15, i32, (1 << 14) - 0xabcd, d26, i32, (1 << 13) + 0xaa2); 2109 TESTINSN_bin("vmull.p8 q14, d5, d6", q14, d5, i32, (1 << 28) + 0xefe, d6, i32, (1 << 13) + 0x2bbc2d); 2110 TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2111 TESTINSN_bin("vmull.p8 q10, d27, d31", q10, d27, i32, 1 << 31, d31, i32, 1 << 30); 2112 TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2113 TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2114 TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2115 2116 printf("---- VMLAL ----\n"); 2117 TESTINSN_bin("vmlal.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2118 TESTINSN_bin("vmlal.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2119 TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2120 TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2121 TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2122 TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2123 TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2124 TESTINSN_bin("vmlal.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2125 TESTINSN_bin("vmlal.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2126 TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2127 TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2128 TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2129 TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2130 TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2131 TESTINSN_bin("vmlal.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2132 TESTINSN_bin("vmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2133 TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2134 TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2135 TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2136 TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2137 TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2138 TESTINSN_bin("vmlal.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2139 TESTINSN_bin("vmlal.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2140 TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2141 TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2142 TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2143 TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2144 TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2145 TESTINSN_bin("vmlal.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 2146 TESTINSN_bin("vmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 2147 TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2148 TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 2149 TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2150 TESTINSN_bin("vmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 2151 TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2152 TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 2153 TESTINSN_bin("vmlal.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 2154 TESTINSN_bin("vmlal.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 2155 TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2156 TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 2157 TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2158 TESTINSN_bin("vmlal.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 2159 TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2160 TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 2161 2162 printf("---- VMLSL ----\n"); 2163 TESTINSN_bin("vmlsl.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2164 TESTINSN_bin("vmlsl.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2165 TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2166 TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2167 TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2168 TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2169 TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2170 TESTINSN_bin("vmlsl.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2171 TESTINSN_bin("vmlsl.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2172 TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2173 TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2174 TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2175 TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2176 TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2177 TESTINSN_bin("vmlsl.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2178 TESTINSN_bin("vmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2179 TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2180 TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2181 TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2182 TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2183 TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2184 TESTINSN_bin("vmlsl.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 2185 TESTINSN_bin("vmlsl.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 2186 TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2187 TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 2188 TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 2189 TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2190 TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 2191 TESTINSN_bin("vmlsl.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 2192 TESTINSN_bin("vmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 2193 TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2194 TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 2195 TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2196 TESTINSN_bin("vmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 2197 TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2198 TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 2199 TESTINSN_bin("vmlsl.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 2200 TESTINSN_bin("vmlsl.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 2201 TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2202 TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 2203 TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2204 TESTINSN_bin("vmlsl.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 2205 TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 2206 TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 2207 2208 printf("---- VQRDMULH ----\n"); 2209 TESTINSN_bin_q("vqrdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 2210 TESTINSN_bin_q("vqrdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120); 2211 TESTINSN_bin_q("vqrdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 2212 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 2213 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 2214 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2); 2215 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12); 2216 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 2217 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 2218 TESTINSN_bin_q("vqrdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120); 2219 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 2220 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1); 2221 TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 2222 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31); 2223 TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30); 2224 2225 printf("---- VQRDMULH (by scalar) ----\n"); 2226 TESTINSN_bin_q("vqrdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120); 2227 TESTINSN_bin_q("vqrdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120); 2228 TESTINSN_bin_q("vqrdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120); 2229 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 2230 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2231 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 2232 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12); 2233 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 2234 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 2235 TESTINSN_bin_q("vqrdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120); 2236 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31); 2237 TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1); 2238 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31); 2239 TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30); 2240 2241 printf("---- VADD (fp) ----\n"); 2242 TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2243 TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2244 TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2245 TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2246 TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2247 TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2248 TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2249 TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2250 TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2251 TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2252 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2253 TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2254 TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2255 TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2256 TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2257 TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2258 TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2259 TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2260 TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2261 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2262 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2263 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2264 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2265 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2266 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2267 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2268 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2269 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2270 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2271 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2272 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2273 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2274 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2275 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2276 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2277 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2278 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2279 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2280 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2281 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2282 2283 printf("---- VSUB (fp) ----\n"); 2284 TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2285 TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2286 TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2287 TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2288 TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2289 TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(24.89), q5, i32, f2u(1346)); 2290 TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2291 TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2292 TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2293 TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2294 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2295 TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2296 TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2297 TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2298 TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2299 TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2300 TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2301 TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2302 TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2303 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2304 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2305 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2306 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2307 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2308 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2309 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2310 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2311 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2312 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2313 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2314 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2315 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2316 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2317 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2318 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2319 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2320 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2321 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2322 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2323 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2324 2325 printf("---- VABD (fp) ----\n"); 2326 TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2327 TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2328 TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2329 TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2330 TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2331 TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2332 TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2333 TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2334 TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2335 TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2336 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2337 TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2338 TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2339 TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2340 TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2341 TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2342 TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2343 TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2344 TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2345 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2346 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2347 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2348 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2349 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2350 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2351 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2352 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2353 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2354 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2355 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2356 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2357 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2358 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2359 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2360 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2361 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2362 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2363 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2364 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2365 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2366 2367 printf("---- VMUL (fp) ----\n"); 2368 TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2369 TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2370 TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2371 TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2372 TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2373 TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2374 TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2375 TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2376 TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2377 TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2378 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2379 TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2380 TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2381 TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2382 TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2383 TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2384 TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2385 TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2386 TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2387 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2388 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2389 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2390 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2391 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2392 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2393 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2394 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2395 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2396 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2397 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2398 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2399 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2400 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2401 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2402 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2403 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2404 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2405 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2406 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2407 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2408 2409 printf("---- VMUL (fp by scalar) ----\n"); 2410 TESTINSN_bin("vmul.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120)); 2411 TESTINSN_bin("vmul.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120)); 2412 TESTINSN_bin("vmul.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 2413 TESTINSN_bin("vmul.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 2414 TESTINSN_bin("vmul.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 2415 TESTINSN_bin("vmul.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 2416 TESTINSN_bin("vmul.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11)); 2417 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN)); 2418 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0)); 2419 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0)); 2420 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 2421 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 2422 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN)); 2423 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0)); 2424 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0)); 2425 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 2426 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 2427 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 2428 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 2429 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 2430 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 2431 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 2432 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 2433 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 2434 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 2435 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 2436 TESTINSN_bin("vmul.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 2437 2438 printf("---- VMLA (fp) ----\n"); 2439 TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2440 TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2441 TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2442 TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2443 TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2444 TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2445 TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2446 TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2447 TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2448 TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2449 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2450 TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2451 TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2452 TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2453 TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2454 TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2455 TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2456 TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2457 TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2458 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2459 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2460 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2461 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2462 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2463 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2464 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2465 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2466 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2467 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2468 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2469 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2470 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2471 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2472 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2473 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2474 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2475 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2476 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2477 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2478 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2479 2480 printf("---- VMLA (fp by scalar) ----\n"); 2481 TESTINSN_bin_f("vmla.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120)); 2482 TESTINSN_bin_f("vmla.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120)); 2483 TESTINSN_bin_f("vmla.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 2484 TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 2485 TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 2486 TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 2487 TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11)); 2488 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN)); 2489 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0)); 2490 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0)); 2491 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 2492 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 2493 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN)); 2494 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0)); 2495 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0)); 2496 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 2497 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 2498 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 2499 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 2500 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 2501 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 2502 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 2503 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 2504 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 2505 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 2506 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 2507 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 2508 2509 printf("---- VMLS (fp) ----\n"); 2510 TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2511 TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2512 TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2513 TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2514 TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2515 TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2516 TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2517 TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2518 TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2519 TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2520 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2521 TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2522 TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2523 TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2524 TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2525 TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2526 TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2527 TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2528 TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2529 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2530 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2531 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2532 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2533 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2534 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2535 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2536 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2537 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2538 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2539 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2540 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2541 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2542 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2543 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2544 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2545 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2546 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2547 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2548 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2549 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2550 2551 printf("---- VMLS (fp by scalar) ----\n"); 2552 TESTINSN_bin_f("vmls.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120)); 2553 TESTINSN_bin_f("vmls.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120)); 2554 TESTINSN_bin_f("vmls.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 2555 TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 2556 TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 2557 TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 2558 TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11)); 2559 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN)); 2560 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0)); 2561 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0)); 2562 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 2563 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 2564 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN)); 2565 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0)); 2566 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0)); 2567 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 2568 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 2569 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 2570 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 2571 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 2572 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 2573 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 2574 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 2575 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 2576 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 2577 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 2578 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 2579 2580 printf("---- VCVT (integer <-> fp) ----\n"); 2581 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(3.2)); 2582 TESTINSN_un("vcvt.u32.f32 q10, q11", q10, q11, i32, f2u(3e22)); 2583 TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(3e9)); 2584 TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 2585 TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 2586 TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 2587 TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 2588 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(3.2)); 2589 TESTINSN_un("vcvt.s32.f32 q10, q11", q10, q11, i32, f2u(3e22)); 2590 TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(3e9)); 2591 TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 2592 TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 2593 TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 2594 TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 2595 TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, 7); 2596 TESTINSN_un("vcvt.f32.u32 q10, q11", q10, q11, i32, 1 << 31); 2597 TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) + 1); 2598 TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) - 1); 2599 TESTINSN_un("vcvt.f32.u32 q0, q14", q0, q14, i32, 0x30a0bcef); 2600 TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, 7); 2601 TESTINSN_un("vcvt.f32.s32 q10, q11", q10, q11, i32, 1 << 31); 2602 TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) + 1); 2603 TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) - 1); 2604 TESTINSN_un("vcvt.f32.s32 q0, q14", q0, q14, i32, 0x30a0bcef); 2605 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(NAN)); 2606 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(0.0)); 2607 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 2608 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 2609 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(NAN)); 2610 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(0.0)); 2611 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 2612 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 2613 2614 printf("---- VCVT (fixed <-> fp) ----\n"); 2615 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(3.2)); 2616 TESTINSN_un("vcvt.u32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22)); 2617 TESTINSN_un("vcvt.u32.f32 q15, q4, #32", q15, q4, i32, f2u(3e9)); 2618 TESTINSN_un("vcvt.u32.f32 q15, q4, #7", q15, q4, i32, f2u(-0.5)); 2619 TESTINSN_un("vcvt.u32.f32 q15, q4, #4", q15, q4, i32, f2u(-7.1)); 2620 TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 2621 TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 2622 TESTINSN_un("vcvt.s32.f32 q0, q1, #5", q0, q1, i32, f2u(3.2)); 2623 TESTINSN_un("vcvt.s32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22)); 2624 TESTINSN_un("vcvt.s32.f32 q15, q4, #8", q15, q4, i32, f2u(3e9)); 2625 TESTINSN_un("vcvt.s32.f32 q15, q4, #2", q15, q4, i32, f2u(-0.5)); 2626 TESTINSN_un("vcvt.s32.f32 q15, q4, #1", q15, q4, i32, f2u(-7.1)); 2627 TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 2628 TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 2629 TESTINSN_un("vcvt.f32.u32 q0, q1, #5", q0, q1, i32, 7); 2630 TESTINSN_un("vcvt.f32.u32 q10, q11, #9", q10, q11, i32, 1 << 31); 2631 TESTINSN_un("vcvt.f32.u32 q0, q1, #4", q0, q1, i32, (1U << 31) + 1); 2632 TESTINSN_un("vcvt.f32.u32 q0, q1, #6", q0, q1, i32, (1U << 31) - 1); 2633 TESTINSN_un("vcvt.f32.u32 q0, q14, #5", q0, q14, i32, 0x30a0bcef); 2634 TESTINSN_un("vcvt.f32.s32 q0, q1, #12", q0, q1, i32, 7); 2635 TESTINSN_un("vcvt.f32.s32 q10, q11, #8", q10, q11, i32, 1 << 31); 2636 TESTINSN_un("vcvt.f32.s32 q0, q1, #2", q0, q1, i32, (1U << 31) + 1); 2637 TESTINSN_un("vcvt.f32.s32 q0, q1, #1", q0, q1, i32, (1U << 31) - 1); 2638 TESTINSN_un("vcvt.f32.s32 q0, q14, #6", q0, q14, i32, 0x30a0bcef); 2639 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN)); 2640 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0)); 2641 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY)); 2642 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY)); 2643 TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN)); 2644 TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0)); 2645 TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY)); 2646 TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY)); 2647 2648 printf("---- VMAX (fp) ----\n"); 2649 TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2650 TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2651 TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2652 TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2653 TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2654 TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2655 TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2656 TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2657 TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2658 TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2659 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2660 TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2661 TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2662 TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2663 TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2664 TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2665 TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2666 TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2667 TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2668 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2669 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 2670 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 2671 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 2672 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 2673 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 2674 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 2675 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2676 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2677 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2678 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2679 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2680 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2681 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2682 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2683 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2684 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2685 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2686 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2687 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2688 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2689 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2690 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2691 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2692 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2693 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2694 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2695 2696 printf("---- VMIN (fp) ----\n"); 2697 TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2698 TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2699 TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2700 TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2701 TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2702 TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2703 TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2704 TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2705 TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2706 TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2707 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2708 TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2709 TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2710 TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2711 TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2712 TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2713 TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2714 TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2715 TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2716 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2717 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 2718 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 2719 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 2720 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 2721 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 2722 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 2723 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2724 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2725 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2726 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2727 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2728 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2729 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2730 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2731 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2732 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2733 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2734 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2735 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2736 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2737 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2738 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2739 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2740 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2741 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2742 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2743 2744 printf("---- VRECPE ----\n"); 2745 TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2)); 2746 TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22)); 2747 TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9)); 2748 TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-0.5)); 2749 TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-7.1)); 2750 TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 2751 TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 2752 TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2)); 2753 TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22)); 2754 TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9)); 2755 TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 2756 TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 2757 TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 2758 TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 2759 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7); 2760 TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31); 2761 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 2762 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 2763 TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 2764 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7); 2765 TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31); 2766 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 2767 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 2768 TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 2769 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN)); 2770 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0)); 2771 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 2772 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 2773 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN)); 2774 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0)); 2775 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 2776 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 2777 2778 printf("---- VRECPS ----\n"); 2779 TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2780 TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2781 TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2782 TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2783 TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2784 TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2785 TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2786 TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2787 TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2788 TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2789 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2790 TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2791 TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2792 TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2793 TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2794 TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2795 TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2796 TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2797 TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2798 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2799 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2800 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2801 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2802 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2803 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2804 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2805 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2806 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2807 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2808 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2809 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2810 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2811 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2812 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2813 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2814 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2815 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2816 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2817 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2818 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2819 2820 printf("---- VABS (fp) ----\n"); 2821 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2)); 2822 TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22)); 2823 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9)); 2824 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 2825 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 2826 TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 2827 TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 2828 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2)); 2829 TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22)); 2830 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9)); 2831 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 2832 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 2833 TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 2834 TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 2835 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7); 2836 TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31); 2837 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 2838 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 2839 TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 2840 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7); 2841 TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31); 2842 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 2843 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 2844 TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 2845 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN)); 2846 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0)); 2847 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 2848 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 2849 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN)); 2850 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0)); 2851 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 2852 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 2853 2854 printf("---- VCGT (fp) ----\n"); 2855 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 2856 TESTINSN_bin("vcgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 2857 TESTINSN_bin("vcgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 2858 TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2859 TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2860 TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2861 TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2862 TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2863 TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2864 TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2865 TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2866 TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2867 TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2868 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2869 TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2870 TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2871 TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2872 TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2873 TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2874 TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2875 TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2876 TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2877 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2878 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 2879 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 2880 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 2881 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 2882 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 2883 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 2884 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2885 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2886 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2887 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2888 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2889 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2890 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2891 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2892 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2893 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2894 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2895 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2896 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2897 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2898 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2899 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2900 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2901 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2902 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2903 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2904 2905 printf("---- VCGE (fp) ----\n"); 2906 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 2907 TESTINSN_bin("vcge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 2908 TESTINSN_bin("vcge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 2909 TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2910 TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2911 TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2912 TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2913 TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2914 TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2915 TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2916 TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2917 TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2918 TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2919 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2920 TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2921 TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2922 TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2923 TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2924 TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2925 TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2926 TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2927 TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2928 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2929 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 2930 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 2931 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 2932 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 2933 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 2934 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 2935 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2936 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2937 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2938 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2939 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2940 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2941 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2942 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2943 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2944 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2945 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2946 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2947 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2948 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 2949 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 2950 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 2951 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 2952 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 2953 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 2954 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 2955 2956 printf("---- VACGT (fp) ----\n"); 2957 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 2958 TESTINSN_bin("vacgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 2959 TESTINSN_bin("vacgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 2960 TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 2961 TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 2962 TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 2963 TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 2964 TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 2965 TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 2966 TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 2967 TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 2968 TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 2969 TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 2970 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 2971 TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 2972 TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 2973 TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 2974 TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 2975 TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 2976 TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 2977 TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 2978 TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 2979 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 2980 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 2981 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 2982 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 2983 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 2984 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 2985 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 2986 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 2987 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 2988 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 2989 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 2990 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 2991 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 2992 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 2993 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 2994 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 2995 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 2996 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 2997 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 2998 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 2999 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 3000 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 3001 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 3002 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 3003 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 3004 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 3005 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 3006 3007 printf("---- VACGE (fp) ----\n"); 3008 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 3009 TESTINSN_bin("vacge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 3010 TESTINSN_bin("vacge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 3011 TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 3012 TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 3013 TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 3014 TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 3015 TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 3016 TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 3017 TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 3018 TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 3019 TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 3020 TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 3021 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 3022 TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 3023 TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 3024 TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 3025 TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 3026 TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 3027 TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 3028 TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 3029 TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 3030 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 3031 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 3032 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 3033 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 3034 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 3035 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 3036 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 3037 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 3038 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 3039 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 3040 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 3041 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 3042 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 3043 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 3044 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 3045 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 3046 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 3047 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 3048 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 3049 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 3050 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 3051 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 3052 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 3053 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 3054 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 3055 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 3056 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 3057 3058 printf("---- VCEQ (fp) ----\n"); 3059 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 3060 TESTINSN_bin("vceq.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 3061 TESTINSN_bin("vceq.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 3062 TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 3063 TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 3064 TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 3065 TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 3066 TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 3067 TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 3068 TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 3069 TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 3070 TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 3071 TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 3072 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 3073 TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 3074 TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 3075 TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 3076 TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 3077 TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 3078 TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 3079 TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 3080 TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 3081 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 3082 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 3083 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 3084 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 3085 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 3086 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 3087 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 3088 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 3089 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 3090 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 3091 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 3092 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 3093 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 3094 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 3095 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 3096 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 3097 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 3098 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 3099 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 3100 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 3101 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 3102 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 3103 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 3104 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 3105 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 3106 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 3107 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 3108 3109 printf("---- VCEQ (fp) #0 ----\n"); 3110 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 3111 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x1); 3112 TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 3113 TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 3114 TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 3115 TESTINSN_un("vceq.f32 q10, q15, #0", q10, q15, i32, 0x0); 3116 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 3117 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 3118 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 3119 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 3120 3121 printf("---- VCGT (fp) #0 ----\n"); 3122 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 3123 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x1); 3124 TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 3125 TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 3126 TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 3127 TESTINSN_un("vcgt.f32 q10, q15, #0", q10, q15, i32, 0x0); 3128 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 3129 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 3130 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 3131 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 3132 3133 printf("---- VCLT (fp) #0 ----\n"); 3134 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 3135 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x1); 3136 TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 3137 TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 3138 TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 3139 TESTINSN_un("vclt.f32 q10, q15, #0", q10, q15, i32, 0x0); 3140 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 3141 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 3142 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 3143 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 3144 3145 printf("---- VCGE (fp) #0 ----\n"); 3146 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 3147 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x1); 3148 TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 3149 TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 3150 TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 3151 TESTINSN_un("vcge.f32 q10, q15, #0", q10, q15, i32, 0x0); 3152 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 3153 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 3154 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 3155 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 3156 3157 printf("---- VCLE (fp) #0 ----\n"); 3158 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 3159 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x1); 3160 TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 3161 TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 3162 TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 3163 TESTINSN_un("vcle.f32 q10, q15, #0", q10, q15, i32, 0x0); 3164 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 3165 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 3166 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 3167 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 3168 3169 printf("---- VNEG (fp) ----\n"); 3170 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x01000000); 3171 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x1); 3172 TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, 1 << 31); 3173 TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(23.04)); 3174 TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(-23.04)); 3175 TESTINSN_un("vneg.f32 q10, q15", q10, q15, i32, 0x0); 3176 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(NAN)); 3177 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(0.0)); 3178 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 3179 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 3180 3181 printf("---- VRSQRTS ----\n"); 3182 TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 3183 TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 3184 TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 3185 TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 3186 TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 3187 TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 3188 TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 3189 TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 3190 TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 3191 TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 3192 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 3193 TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 3194 TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 3195 TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 3196 TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 3197 TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 3198 TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 3199 TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 3200 TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 3201 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 3202 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 3203 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 3204 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 3205 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 3206 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 3207 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 3208 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 3209 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 3210 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 3211 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 3212 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 3213 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 3214 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 3215 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 3216 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 3217 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 3218 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 3219 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 3220 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 3221 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 3222 3223 printf("---- VRSQRTE (fp) ----\n"); 3224 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2)); 3225 TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22)); 3226 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9)); 3227 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 3228 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 3229 TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 3230 TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 3231 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2)); 3232 TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22)); 3233 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9)); 3234 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 3235 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 3236 TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 3237 TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 3238 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7); 3239 TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31); 3240 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 3241 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 3242 TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 3243 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7); 3244 TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31); 3245 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 3246 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 3247 TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 3248 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(NAN)); 3249 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(0.0)); 3250 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 3251 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 3252 3253 return 0; 3254} 3255 3256/* How to compile: 3257 3258 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ 3259 -marm -o neon128-a neon128.c 3260 3261 or 3262 3263 gcc -O -g -Wall -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp \ 3264 -mthumb -o neon128-t neon128.c 3265 3266*/ 3267 3268#include <stdio.h> 3269#include <math.h> 3270 3271#ifndef __thumb__ 3272// ARM 3273#define MOVE_to_FPSCR_from_R4 \ 3274 ".word 0xEEE14A10 @ vmsr FPSCR, r4\n\t" 3275#define MOVE_to_R4_from_FPSCR \ 3276 ".word 0xEEF14A10 @ vmrs r4, FPSCR\n\t" 3277#endif 3278 3279#ifdef __thumb__ 3280// Thumb 3281#define MOVE_to_FPSCR_from_R4 \ 3282 ".word 0x4A10EEE1 @ vmsr FPSCR, r4\n\t" 3283#define MOVE_to_R4_from_FPSCR \ 3284 ".word 0x4A10EEF1 @ vmrs r4, FPSCR\n\t" 3285#endif 3286 3287static inline unsigned int f2u(float x) { 3288 union { 3289 float f; 3290 unsigned int u; 3291 } cvt; 3292 cvt.f = x; 3293 return cvt.u; 3294} 3295 3296/* test macros to generate and output the result of a single instruction */ 3297 3298#define TESTINSN_imm(instruction, QD, imm) \ 3299{ \ 3300 unsigned int out[4]; \ 3301\ 3302 __asm__ volatile( \ 3303 "vmov.i8 " #QD ", #0x55" "\n\t" \ 3304 instruction ", #" #imm "\n\t" \ 3305 "vstmia %0, {" #QD "}\n\t" \ 3306 : \ 3307 : "r" (out) \ 3308 : #QD, "memory" \ 3309 ); \ 3310 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x\n", \ 3311 instruction, out[3], out[2], out[1], out[0]); \ 3312} 3313 3314#define TESTINSN_un(instruction, QD, QM, QMtype, QMval) \ 3315{ \ 3316 unsigned int out[4]; \ 3317\ 3318 __asm__ volatile( \ 3319 "vmov.i8 " #QD ", #0x55" "\n\t" \ 3320 "vdup." #QMtype " " #QM ", %1\n\t" \ 3321 instruction "\n\t" \ 3322 "vstmia %0, {" #QD "}\n\t" \ 3323 : \ 3324 : "r" (out), "r" (QMval) \ 3325 : #QD, #QM, "memory" \ 3326 ); \ 3327 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x\n", \ 3328 instruction, out[3], out[2], out[1], out[0], QMval); \ 3329} 3330 3331#define TESTINSN_un_q(instruction, QD, QM, QMtype, QMval) \ 3332{ \ 3333 unsigned int out[4]; \ 3334 unsigned int fpscr; \ 3335\ 3336 __asm__ volatile( \ 3337 "vmov.i8 " #QD ", #0x55" "\n\t" \ 3338 "mov r4, #0\n\t" \ 3339 MOVE_to_FPSCR_from_R4 \ 3340 "vdup." #QMtype " " #QM ", %2\n\t" \ 3341 instruction "\n\t" \ 3342 "vstmia %1, {" #QD "}\n\t" \ 3343 MOVE_to_R4_from_FPSCR \ 3344 "mov %0, r4" \ 3345 : "=r" (fpscr) \ 3346 : "r" (out), "r" (QMval) \ 3347 : #QD, #QM, "memory", "r4" \ 3348 ); \ 3349 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 3350 " fpscr: %08x\n", \ 3351 instruction, out[3], out[2], out[1], out[0], QMval, fpscr); \ 3352} 3353 3354#define TESTINSN_bin(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 3355{ \ 3356 unsigned int out[4]; \ 3357\ 3358 __asm__ volatile( \ 3359 "vmov.i8 " #QD ", #0x55" "\n\t" \ 3360 "vdup." #QMtype " " #QM ", %1\n\t" \ 3361 "vdup." #QNtype " " #QN ", %2\n\t" \ 3362 instruction "\n\t" \ 3363 "vstmia %0, {" #QD "}\n\t" \ 3364 : \ 3365 : "r" (out), "r" (QMval), "r" (QNval) \ 3366 : #QD, #QM, #QN, "memory" \ 3367 ); \ 3368 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 3369 " Qn (" #QNtype ")0x%08x\n", \ 3370 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ 3371} 3372 3373#define TESTINSN_bin_f(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 3374{ \ 3375 unsigned int out[4]; \ 3376\ 3377 __asm__ volatile( \ 3378 "vdup.i32 " #QD ", %3\n\t" \ 3379 "vdup." #QMtype " " #QM ", %1\n\t" \ 3380 "vdup." #QNtype " " #QN ", %2\n\t" \ 3381 instruction "\n\t" \ 3382 "vstmia %0, {" #QD "}\n\t" \ 3383 : \ 3384 : "r" (out), "r" (QMval), "r" (QNval), "r" (0x3f800000) \ 3385 : #QD, #QM, #QN, "memory" \ 3386 ); \ 3387 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 3388 " Qn (" #QNtype ")0x%08x\n", \ 3389 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ 3390} 3391 3392#define TESTINSN_bin_q(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 3393{ \ 3394 unsigned int out[4]; \ 3395 unsigned int fpscr; \ 3396\ 3397 __asm__ volatile( \ 3398 "vmov.i8 " #QD ", #0x55" "\n\t" \ 3399 "mov r4, #0\n\t" \ 3400 MOVE_to_FPSCR_from_R4 \ 3401 "vdup." #QMtype " " #QM ", %2\n\t" \ 3402 "vdup." #QNtype " " #QN ", %3\n\t" \ 3403 instruction "\n\t" \ 3404 "vstmia %1, {" #QD "}\n\t" \ 3405 MOVE_to_R4_from_FPSCR \ 3406 "mov %0, r4" \ 3407 : "=r" (fpscr) \ 3408 : "r" (out), "r" (QMval), "r" (QNval) \ 3409 : #QD, #QM, #QN, "memory", "r4" \ 3410 ); \ 3411 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 3412 " Qn (" #QNtype ")0x%08x fpscr: %08x\n", \ 3413 instruction, out[3], out[2], out[1], out[0], QMval, QNval, fpscr); \ 3414} 3415 3416#define TESTINSN_dual(instruction, QM, QMtype, QMval, QN, QNtype, QNval) \ 3417{ \ 3418 unsigned int out1[4]; \ 3419 unsigned int out2[4]; \ 3420\ 3421 __asm__ volatile( \ 3422 "vdup." #QMtype " " #QM ", %2\n\t" \ 3423 "vdup." #QNtype " " #QN ", %3\n\t" \ 3424 instruction "\n\t" \ 3425 "vstmia %0, {" #QM "}\n\t" \ 3426 "vstmia %1, {" #QN "}\n\t" \ 3427 : \ 3428 : "r" (out1), "r" (out2), "r" (QMval), "r" (QNval) \ 3429 : #QM, #QN, "memory" \ 3430 ); \ 3431 printf("%s :: Qm 0x%08x 0x%08x 0x%08x 0x%08x Qn 0x%08x 0x%08x 0x%08x 0x%08x" \ 3432 " Qm (" #QMtype ")0x%08x Qn (" #QNtype ")0x%08x\n", \ 3433 instruction, out1[3], out1[2], out1[1], out1[0], \ 3434 out2[3], out2[2], out2[1], out2[0], QMval, QNval); \ 3435} 3436 3437// Ditto TESTING_bin(), but in QD all zeros 3438#define TESTINSN_bin_0s(instruction, QD, QM, QMtype, QMval, QN, QNtype, QNval) \ 3439{ \ 3440 unsigned int out[4]; \ 3441\ 3442 __asm__ volatile( \ 3443 "vmov.i8 " #QD ", #0x00" "\n\t" \ 3444 "vdup." #QMtype " " #QM ", %1\n\t" \ 3445 "vdup." #QNtype " " #QN ", %2\n\t" \ 3446 instruction "\n\t" \ 3447 "vstmia %0, {" #QD "}\n\t" \ 3448 : \ 3449 : "r" (out), "r" (QMval), "r" (QNval) \ 3450 : #QD, #QM, #QN, "memory" \ 3451 ); \ 3452 printf("%s :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x" \ 3453 " Qn (" #QNtype ")0x%08x\n", \ 3454 instruction, out[3], out[2], out[1], out[0], QMval, QNval); \ 3455} 3456 3457#if 0 3458#define TESTINSN_2reg_shift(instruction, QD, QM, QMtype, QMval, imm) \ 3459{ \ 3460 unsigned int out[4]; \ 3461\ 3462 __asm__ volatile( \ 3463 "vmov.i8 " #QD ", #0x55" "\n\t" \ 3464 "vdup." #QMtype " " #QM ", %1\n\t" \ 3465 instruction ", #" #imm "\n\t" \ 3466 "vstmia %0, {" #QD "}\n\t" \ 3467 : \ 3468 : "r" (out), "r" (QMval) \ 3469 : #QD, #QM, "memory" \ 3470 ); \ 3471 printf("%s, #" #imm " :: Qd 0x%08x 0x%08x 0x%08x 0x%08x Qm (" #QMtype ")0x%08x", \ 3472 instruction, out[3], out[2], out[1], out[0], QMval); \ 3473} 3474#endif 3475 3476int main(int argc, char **argv) 3477{ 3478 printf("----- VMOV (immediate) -----\n"); 3479 TESTINSN_imm("vmov.i32 q0", q0, 0x7); 3480 TESTINSN_imm("vmov.i16 q1", q1, 0x7); 3481 TESTINSN_imm("vmov.i8 q2", q2, 0x7); 3482 TESTINSN_imm("vmov.i32 q5", q5, 0x700); 3483 TESTINSN_imm("vmov.i16 q7", q7, 0x700); 3484 TESTINSN_imm("vmov.i32 q10", q10, 0x70000); 3485 TESTINSN_imm("vmov.i32 q12", q12, 0x7000000); 3486 TESTINSN_imm("vmov.i32 q13", q13, 0x7FF); 3487 TESTINSN_imm("vmov.i32 q14", q14, 0x7FFFF); 3488 TESTINSN_imm("vmov.i64 q15", q15, 0xFF0000FF00FFFF00); 3489 3490 printf("----- VMVN (immediate) -----\n"); 3491 TESTINSN_imm("vmvn.i32 q0", q0, 0x7); 3492 TESTINSN_imm("vmvn.i16 q1", q1, 0x7); 3493 TESTINSN_imm("vmvn.i8 q2", q2, 0x7); 3494 TESTINSN_imm("vmvn.i32 q5", q5, 0x700); 3495 TESTINSN_imm("vmvn.i16 q7", q7, 0x700); 3496 TESTINSN_imm("vmvn.i32 q10", q10, 0x70000); 3497 TESTINSN_imm("vmvn.i32 q13", q13, 0x7000000); 3498 TESTINSN_imm("vmvn.i32 q11", q11, 0x7FF); 3499 TESTINSN_imm("vmvn.i32 q14", q14, 0x7FFFF); 3500 TESTINSN_imm("vmvn.i64 q15", q15, 0xFF0000FF00FFFF00); 3501 3502 printf("----- VORR (immediate) -----\n"); 3503 TESTINSN_imm("vorr.i32 q0", q0, 0x7); 3504 TESTINSN_imm("vorr.i16 q2", q2, 0x7); 3505 TESTINSN_imm("vorr.i32 q8", q8, 0x700); 3506 TESTINSN_imm("vorr.i16 q6", q6, 0x700); 3507 TESTINSN_imm("vorr.i32 q14", q14, 0x70000); 3508 TESTINSN_imm("vorr.i32 q15", q15, 0x7000000); 3509 3510 printf("----- VBIC (immediate) -----\n"); 3511 TESTINSN_imm("vbic.i32 q0", q0, 0x7); 3512 TESTINSN_imm("vbic.i16 q3", q3, 0x7); 3513 TESTINSN_imm("vbic.i32 q5", q5, 0x700); 3514 TESTINSN_imm("vbic.i16 q8", q8, 0x700); 3515 TESTINSN_imm("vbic.i32 q10", q10, 0x70000); 3516 TESTINSN_imm("vbic.i32 q15", q15, 0x7000000); 3517 3518 printf("---- VMVN (register) ----\n"); 3519 TESTINSN_un("vmvn q0, q1", q0, q1, i32, 24); 3520 TESTINSN_un("vmvn q10, q15", q10, q15, i32, 24); 3521 TESTINSN_un("vmvn q0, q14", q0, q14, i32, 24); 3522 3523 printf("---- VMOV (register) ----\n"); 3524 TESTINSN_un("vmov q0, q1", q0, q1, i32, 24); 3525 TESTINSN_un("vmov q10, q15", q10, q15, i32, 24); 3526 TESTINSN_un("vmov q0, q14", q0, q14, i32, 24); 3527 3528 printf("---- VDUP (ARM core register) (tested indirectly) ----\n"); 3529 TESTINSN_un("vmov q0, q1", q0, q1, i8, 7); 3530 TESTINSN_un("vmov q10, q11", q10, q11, i16, 7); 3531 TESTINSN_un("vmov q0, q15", q0, q15, i32, 7); 3532 3533 printf("---- VADD ----\n"); 3534 TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3535 TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3536 TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3537 TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3538 TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3539 TESTINSN_bin("vadd.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3540 TESTINSN_bin("vadd.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3541 TESTINSN_bin("vadd.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3542 TESTINSN_bin("vadd.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3543 TESTINSN_bin("vadd.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3544 TESTINSN_bin("vadd.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120); 3545 3546 printf("---- VSUB ----\n"); 3547 TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3548 TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3549 TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3550 TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3551 TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3552 TESTINSN_bin("vsub.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3553 TESTINSN_bin("vsub.i16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3554 TESTINSN_bin("vsub.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3555 TESTINSN_bin("vsub.i64 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3556 TESTINSN_bin("vsub.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3557 TESTINSN_bin("vsub.i64 q13, q14, q15", q13, q14, i32, 140, q15, i32, 120); 3558 3559 printf("---- VAND ----\n"); 3560 TESTINSN_bin("vand q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 3561 TESTINSN_bin("vand q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 3562 TESTINSN_bin("vand q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 3563 TESTINSN_bin("vand q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 3564 3565 printf("---- VBIC ----\n"); 3566 TESTINSN_bin("vbic q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 3567 TESTINSN_bin("vbic q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 3568 TESTINSN_bin("vbic q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 3569 TESTINSN_bin("vbic q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 3570 3571 printf("---- VORR ----\n"); 3572 TESTINSN_bin("vorr q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 3573 TESTINSN_bin("vorr q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 3574 TESTINSN_bin("vorr q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 3575 TESTINSN_bin("vorr q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 3576 3577 printf("---- VORN ----\n"); 3578 TESTINSN_bin("vorn q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 3579 TESTINSN_bin("vorn q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 3580 TESTINSN_bin("vorn q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 3581 TESTINSN_bin("vorn q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 3582 3583 printf("---- VEOR ----\n"); 3584 TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 3585 TESTINSN_bin("veor q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 3586 TESTINSN_bin("veor q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 3587 TESTINSN_bin("veor q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 3588 TESTINSN_bin("veor q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 3589 TESTINSN_bin("veor q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 3590 TESTINSN_bin("veor q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 3591 TESTINSN_bin("veor q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 3592 3593 printf("---- VBSL ----\n"); 3594 TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 3595 TESTINSN_bin("vbsl q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 3596 TESTINSN_bin("vbsl q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 3597 TESTINSN_bin("vbsl q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 3598 TESTINSN_bin("vbsl q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 3599 TESTINSN_bin("vbsl q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 3600 TESTINSN_bin("vbsl q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 3601 TESTINSN_bin("vbsl q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 3602 3603 printf("---- VBIT ----\n"); 3604 TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 3605 TESTINSN_bin("vbit q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 3606 TESTINSN_bin("vbit q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 3607 TESTINSN_bin("vbit q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 3608 TESTINSN_bin("vbit q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 3609 TESTINSN_bin("vbit q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 3610 TESTINSN_bin("vbit q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 3611 TESTINSN_bin("vbit q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 3612 3613 printf("---- VBIF ----\n"); 3614 TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x77); 3615 TESTINSN_bin("vbif q4, q6, q5", q4, q6, i8, 0xff, q5, i16, 0x57); 3616 TESTINSN_bin("vbif q10, q11, q12", q10, q11, i8, 0xfe, q12, i8, 0xed); 3617 TESTINSN_bin("vbif q15, q15, q15", q15, q15, i8, 0xff, q15, i8, 0xff); 3618 TESTINSN_bin("vbif q0, q1, q2", q0, q1, i8, 0x24, q2, i16, 0x73); 3619 TESTINSN_bin("vbif q7, q3, q0", q7, q3, i8, 0x24, q0, i16, 0xff); 3620 TESTINSN_bin("vbif q4, q4, q4", q4, q4, i16, 0xff, q4, i16, 0xff); 3621 TESTINSN_bin("vbif q2, q3, q15", q2, q3, i32, 0x24, q15, i32, 0x1f); 3622 3623 printf("---- VEXT ----\n"); 3624 TESTINSN_bin("vext.8 q0, q1, q2, #0", q0, q1, i8, 0x77, q2, i8, 0xff); 3625 TESTINSN_bin("vext.8 q0, q1, q2, #1", q0, q1, i8, 0x77, q2, i8, 0xff); 3626 TESTINSN_bin("vext.8 q0, q1, q2, #9", q0, q1, i8, 0x77, q2, i8, 0xff); 3627 TESTINSN_bin("vext.8 q0, q1, q2, #15", q0, q1, i8, 0x77, q2, i8, 0xff); 3628 TESTINSN_bin("vext.8 q10, q11, q12, #4", q10, q11, i8, 0x77, q12, i8, 0xff); 3629 TESTINSN_bin("vext.8 q0, q5, q15, #12", q0, q5, i8, 0x77, q15, i8, 0xff); 3630 3631 printf("---- VHADD ----\n"); 3632 TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3633 TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3634 TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3635 TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3636 TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121); 3637 TESTINSN_bin("vhadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3638 TESTINSN_bin("vhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3639 TESTINSN_bin("vhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3640 TESTINSN_bin("vhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3641 TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3642 TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3643 TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3644 TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3645 TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i8, 141, q2, i8, 121); 3646 TESTINSN_bin("vhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3647 TESTINSN_bin("vhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3648 TESTINSN_bin("vhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3649 TESTINSN_bin("vhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3650 3651 printf("---- VHSUB ----\n"); 3652 TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3653 TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3654 TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3655 TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3656 TESTINSN_bin("vhsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3657 TESTINSN_bin("vhsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3658 TESTINSN_bin("vhsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3659 TESTINSN_bin("vhsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3660 TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3661 TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3662 TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3663 TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3664 TESTINSN_bin("vhsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3665 TESTINSN_bin("vhsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3666 TESTINSN_bin("vhsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3667 TESTINSN_bin("vhsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3668 3669 printf("---- VQADD ----\n"); 3670 TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3671 TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3672 TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3673 TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3674 TESTINSN_bin_q("vqadd.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3675 TESTINSN_bin_q("vqadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3676 TESTINSN_bin_q("vqadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3677 TESTINSN_bin_q("vqadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3678 TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3679 TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3680 TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3681 TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3682 TESTINSN_bin_q("vqadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3683 TESTINSN_bin_q("vqadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3684 TESTINSN_bin_q("vqadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3685 TESTINSN_bin_q("vqadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3686 3687 printf("---- VQSUB ----\n"); 3688 TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3689 TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3690 TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3691 TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3692 TESTINSN_bin_q("vqsub.s8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3693 TESTINSN_bin_q("vqsub.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3694 TESTINSN_bin_q("vqsub.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3695 TESTINSN_bin_q("vqsub.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3696 TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 3697 TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3698 TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3699 TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3700 TESTINSN_bin_q("vqsub.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3701 TESTINSN_bin_q("vqsub.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3702 TESTINSN_bin_q("vqsub.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3703 TESTINSN_bin_q("vqsub.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3704 3705 printf("---- VRHADD ----\n"); 3706 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 3707 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 3708 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3709 TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3710 TESTINSN_bin("vrhadd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3711 TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 3712 TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3713 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3714 TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 3715 TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3716 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3717 TESTINSN_bin("vrhadd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 3718 TESTINSN_bin("vrhadd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 3719 TESTINSN_bin("vrhadd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 3720 TESTINSN_bin("vrhadd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3721 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 3722 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3723 TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3724 TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3725 TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3726 TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3727 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 3728 TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3729 TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3730 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3731 TESTINSN_bin("vrhadd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 3732 TESTINSN_bin("vrhadd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 3733 TESTINSN_bin("vrhadd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 3734 TESTINSN_bin("vrhadd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3735 3736 printf("---- VCGT ----\n"); 3737 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 3738 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 3739 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3740 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3741 TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3742 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3743 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3744 TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3745 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 3746 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 3747 TESTINSN_bin("vcgt.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 3748 TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2); 3749 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3750 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3751 TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 3752 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3753 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3754 TESTINSN_bin("vcgt.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2); 3755 TESTINSN_bin("vcgt.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3756 TESTINSN_bin("vcgt.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3757 TESTINSN_bin("vcgt.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3758 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 3759 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3760 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3761 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3762 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3763 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3764 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3765 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 3766 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 3767 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 3768 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3769 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3770 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3771 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3772 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3773 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3774 TESTINSN_bin("vcgt.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3775 TESTINSN_bin("vcgt.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3776 TESTINSN_bin("vcgt.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3777 TESTINSN_bin("vcgt.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3778 3779 printf("---- VCGE ----\n"); 3780 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 3781 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 3782 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3783 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3784 TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3785 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3786 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3787 TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3788 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 3789 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 3790 TESTINSN_bin("vcge.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 140); 3791 TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 3, q5, i32, (1 << 31) + 2); 3792 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3793 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3794 TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 3795 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3796 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3797 TESTINSN_bin("vcge.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 2, q5, i32, (1 << 31) + 2); 3798 TESTINSN_bin("vcge.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3799 TESTINSN_bin("vcge.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3800 TESTINSN_bin("vcge.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3801 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 3802 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3803 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3804 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 3805 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3806 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3807 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 3808 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 3809 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 3810 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 3811 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3812 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3813 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 3, q2, i32, (1 << 31) + 2); 3814 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3815 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3816 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 3817 TESTINSN_bin("vcge.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3818 TESTINSN_bin("vcge.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3819 TESTINSN_bin("vcge.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 2, q2, i32, (1 << 31) + 2); 3820 TESTINSN_bin("vcge.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3821 3822 printf("---- VSHL (register) ----\n"); 3823 TESTINSN_bin("vshl.s8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1); 3824 TESTINSN_bin("vshl.s8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8); 3825 TESTINSN_bin("vshl.s8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4); 3826 TESTINSN_bin("vshl.s16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2); 3827 TESTINSN_bin("vshl.s16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1); 3828 TESTINSN_bin("vshl.s16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11); 3829 TESTINSN_bin("vshl.s32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2); 3830 TESTINSN_bin("vshl.s32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12); 3831 TESTINSN_bin("vshl.s32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21); 3832 TESTINSN_bin("vshl.s64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20); 3833 TESTINSN_bin("vshl.s64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4); 3834 TESTINSN_bin("vshl.s64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30); 3835 TESTINSN_bin("vshl.u8 q0, q1, q2", q0, q1, i32, 24, q2, i32, 1); 3836 TESTINSN_bin("vshl.u8 q8, q1, q12", q8, q1, i32, 24, q12, i32, 8); 3837 TESTINSN_bin("vshl.u8 q10, q11, q7", q10, q11, i32, 24, q7, i32, 4); 3838 TESTINSN_bin("vshl.u16 q3, q8, q11", q3, q8, i32, 14, q11, i32, 2); 3839 TESTINSN_bin("vshl.u16 q5, q12, q14", q5, q12, i32, (1 << 30), q14, i32, 1); 3840 TESTINSN_bin("vshl.u16 q15, q2, q1", q15, q2, i32, (1 << 30), q1, i32, 11); 3841 TESTINSN_bin("vshl.u32 q9, q12, q15", q9, q12, i32, (1 << 31) + 2, q15, i32, 2); 3842 TESTINSN_bin("vshl.u32 q11, q2, q0", q11, q2, i32, -1, q0, i32, 12); 3843 TESTINSN_bin("vshl.u32 q5, q2, q3", q5, q2, i32, (1 << 30), q3, i32, 21); 3844 TESTINSN_bin("vshl.u64 q15, q12, q4", q15, q12, i32, 5, q4, i32, 20); 3845 TESTINSN_bin("vshl.u64 q8, q2, q4", q8, q2, i32, 15, q4, i32, 4); 3846 TESTINSN_bin("vshl.u64 q5, q12, q4", q5, q12, i32, (1 << 31) + 1, q4, i32, 30); 3847 3848 printf("---- VQSHL (register) ----\n"); 3849 TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 3850 TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 3851 TESTINSN_bin_q("vqshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 3852 TESTINSN_bin_q("vqshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 3853 TESTINSN_bin_q("vqshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 3854 TESTINSN_bin_q("vqshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 3855 TESTINSN_bin_q("vqshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 3856 TESTINSN_bin_q("vqshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 3857 TESTINSN_bin_q("vqshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 3858 TESTINSN_bin_q("vqshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 3859 TESTINSN_bin_q("vqshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 3860 TESTINSN_bin_q("vqshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 3861 TESTINSN_bin_q("vqshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 3862 TESTINSN_bin_q("vqshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 3863 TESTINSN_bin_q("vqshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 3864 TESTINSN_bin_q("vqshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 3865 TESTINSN_bin_q("vqshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 3866 TESTINSN_bin_q("vqshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 3867 TESTINSN_bin_q("vqshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 3868 TESTINSN_bin_q("vqshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 3869 TESTINSN_bin_q("vqshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 3870 TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 3871 TESTINSN_bin_q("vqshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 3872 TESTINSN_bin_q("vqshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3873 TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 3874 TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 3875 TESTINSN_bin_q("vqshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 3876 TESTINSN_bin_q("vqshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 3877 TESTINSN_bin_q("vqshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 3878 TESTINSN_bin_q("vqshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 3879 TESTINSN_bin_q("vqshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 3880 TESTINSN_bin_q("vqshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 3881 TESTINSN_bin_q("vqshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 3882 TESTINSN_bin_q("vqshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 3883 TESTINSN_bin_q("vqshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 3884 TESTINSN_bin_q("vqshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 3885 TESTINSN_bin_q("vqshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 3886 TESTINSN_bin_q("vqshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 3887 TESTINSN_bin_q("vqshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 3888 TESTINSN_bin_q("vqshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 3889 TESTINSN_bin_q("vqshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 3890 TESTINSN_bin_q("vqshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 3891 TESTINSN_bin_q("vqshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 3892 TESTINSN_bin_q("vqshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 3893 TESTINSN_bin_q("vqshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 3894 TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 3895 TESTINSN_bin_q("vqshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 3896 TESTINSN_bin_q("vqshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 3897 3898 printf("---- VQSHL / VQSHLU (immediate) ----\n"); 3899 TESTINSN_un_q("vqshl.s64 q0, q1, #1", q0, q1, i32, 1); 3900 TESTINSN_un_q("vqshl.s64 q15, q14, #1", q15, q14, i32, -127); 3901 TESTINSN_un_q("vqshl.s64 q5, q4, #0", q5, q4, i32, -127); 3902 TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, 16); 3903 TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, 16); 3904 TESTINSN_un_q("vqshl.s64 q5, q4, #59", q5, q4, i32, 16); 3905 TESTINSN_un_q("vqshl.s64 q5, q4, #58", q5, q4, i32, 16); 3906 TESTINSN_un_q("vqshl.s64 q5, q4, #17", q5, q4, i32, 16); 3907 TESTINSN_un_q("vqshl.s64 q5, q4, #63", q5, q4, i32, -1); 3908 TESTINSN_un_q("vqshl.s64 q5, q4, #60", q5, q4, i32, -1); 3909 TESTINSN_un_q("vqshl.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 3910 TESTINSN_un_q("vqshl.s32 q10, q11, #1", q10, q11, i32, 1); 3911 TESTINSN_un_q("vqshl.s32 q15, q14, #1", q15, q14, i32, -127); 3912 TESTINSN_un_q("vqshl.s32 q5, q4, #0", q5, q4, i32, -127); 3913 TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, 16); 3914 TESTINSN_un_q("vqshl.s32 q5, q4, #28", q5, q4, i32, 16); 3915 TESTINSN_un_q("vqshl.s32 q5, q4, #27", q5, q4, i32, 16); 3916 TESTINSN_un_q("vqshl.s32 q5, q4, #26", q5, q4, i32, 16); 3917 TESTINSN_un_q("vqshl.s32 q5, q4, #17", q5, q4, i32, 16); 3918 TESTINSN_un_q("vqshl.s32 q5, q4, #31", q5, q4, i32, -1); 3919 TESTINSN_un_q("vqshl.s32 q5, q4, #29", q5, q4, i32, -1); 3920 TESTINSN_un_q("vqshl.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 3921 TESTINSN_un_q("vqshl.s16 q9, q8, #1", q9, q8, i32, 1); 3922 TESTINSN_un_q("vqshl.s16 q15, q14, #1", q15, q14, i32, -127); 3923 TESTINSN_un_q("vqshl.s16 q5, q4, #0", q5, q4, i32, -127); 3924 TESTINSN_un_q("vqshl.s16 q9, q8, #15", q9, q8, i32, 16); 3925 TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, 16); 3926 TESTINSN_un_q("vqshl.s16 q5, q4, #11", q5, q4, i32, 16); 3927 TESTINSN_un_q("vqshl.s16 q5, q4, #10", q5, q4, i32, 16); 3928 TESTINSN_un_q("vqshl.s16 q5, q4, #4", q5, q4, i32, 16); 3929 TESTINSN_un_q("vqshl.s16 q5, q4, #15", q5, q4, i32, -1); 3930 TESTINSN_un_q("vqshl.s16 q5, q4, #12", q5, q4, i32, -1); 3931 TESTINSN_un_q("vqshl.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 3932 TESTINSN_un_q("vqshl.s8 q0, q1, #1", q0, q1, i32, 1); 3933 TESTINSN_un_q("vqshl.s8 q15, q14, #1", q15, q14, i32, -127); 3934 TESTINSN_un_q("vqshl.s8 q5, q4, #0", q5, q4, i32, -127); 3935 TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, 16); 3936 TESTINSN_un_q("vqshl.s8 q5, q4, #4", q5, q4, i32, 16); 3937 TESTINSN_un_q("vqshl.s8 q5, q4, #3", q5, q4, i32, 16); 3938 TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, 16); 3939 TESTINSN_un_q("vqshl.s8 q5, q4, #1", q5, q4, i32, 16); 3940 TESTINSN_un_q("vqshl.s8 q5, q4, #7", q5, q4, i32, -1); 3941 TESTINSN_un_q("vqshl.s8 q5, q4, #5", q5, q4, i32, -1); 3942 TESTINSN_un_q("vqshl.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2); 3943 TESTINSN_un_q("vqshl.u64 q0, q1, #1", q0, q1, i32, 1); 3944 TESTINSN_un_q("vqshl.u64 q15, q14, #1", q15, q14, i32, -127); 3945 TESTINSN_un_q("vqshl.u64 q5, q4, #0", q5, q4, i32, -127); 3946 TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, 16); 3947 TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, 16); 3948 TESTINSN_un_q("vqshl.u64 q5, q4, #59", q5, q4, i32, 16); 3949 TESTINSN_un_q("vqshl.u64 q5, q4, #58", q5, q4, i32, 16); 3950 TESTINSN_un_q("vqshl.u64 q5, q4, #17", q5, q4, i32, 16); 3951 TESTINSN_un_q("vqshl.u64 q5, q4, #63", q5, q4, i32, -1); 3952 TESTINSN_un_q("vqshl.u64 q5, q4, #60", q5, q4, i32, -1); 3953 TESTINSN_un_q("vqshl.u64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 3954 TESTINSN_un_q("vqshl.u32 q10, q11, #1", q10, q11, i32, 1); 3955 TESTINSN_un_q("vqshl.u32 q15, q14, #1", q15, q14, i32, -127); 3956 TESTINSN_un_q("vqshl.u32 q5, q4, #0", q5, q4, i32, -127); 3957 TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, 16); 3958 TESTINSN_un_q("vqshl.u32 q5, q4, #28", q5, q4, i32, 16); 3959 TESTINSN_un_q("vqshl.u32 q5, q4, #27", q5, q4, i32, 16); 3960 TESTINSN_un_q("vqshl.u32 q5, q4, #26", q5, q4, i32, 16); 3961 TESTINSN_un_q("vqshl.u32 q5, q4, #17", q5, q4, i32, 16); 3962 TESTINSN_un_q("vqshl.u32 q5, q4, #31", q5, q4, i32, -1); 3963 TESTINSN_un_q("vqshl.u32 q5, q4, #29", q5, q4, i32, -1); 3964 TESTINSN_un_q("vqshl.u32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 3965 TESTINSN_un_q("vqshl.u16 q9, q8, #1", q9, q8, i32, 1); 3966 TESTINSN_un_q("vqshl.u16 q15, q14, #1", q15, q14, i32, -127); 3967 TESTINSN_un_q("vqshl.u16 q5, q4, #0", q5, q4, i32, -127); 3968 TESTINSN_un_q("vqshl.u16 q9, q8, #15", q9, q8, i32, 16); 3969 TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, 16); 3970 TESTINSN_un_q("vqshl.u16 q5, q4, #11", q5, q4, i32, 16); 3971 TESTINSN_un_q("vqshl.u16 q5, q4, #10", q5, q4, i32, 16); 3972 TESTINSN_un_q("vqshl.u16 q5, q4, #4", q5, q4, i32, 16); 3973 TESTINSN_un_q("vqshl.u16 q5, q4, #15", q5, q4, i32, -1); 3974 TESTINSN_un_q("vqshl.u16 q5, q4, #12", q5, q4, i32, -1); 3975 TESTINSN_un_q("vqshl.u16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 3976 TESTINSN_un_q("vqshl.u8 q0, q1, #1", q0, q1, i32, 1); 3977 TESTINSN_un_q("vqshl.u8 q15, q14, #1", q15, q14, i32, -127); 3978 TESTINSN_un_q("vqshl.u8 q5, q4, #0", q5, q4, i32, -127); 3979 TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, 16); 3980 TESTINSN_un_q("vqshl.u8 q5, q4, #4", q5, q4, i32, 16); 3981 TESTINSN_un_q("vqshl.u8 q5, q4, #3", q5, q4, i32, 16); 3982 TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, 16); 3983 TESTINSN_un_q("vqshl.u8 q5, q4, #1", q5, q4, i32, 16); 3984 TESTINSN_un_q("vqshl.u8 q5, q4, #7", q5, q4, i32, -1); 3985 TESTINSN_un_q("vqshl.u8 q5, q4, #5", q5, q4, i32, -1); 3986 TESTINSN_un_q("vqshl.u8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2); 3987 TESTINSN_un_q("vqshlu.s64 q0, q1, #1", q0, q1, i32, 1); 3988 TESTINSN_un_q("vqshlu.s64 q15, q14, #1", q15, q14, i32, -127); 3989 TESTINSN_un_q("vqshlu.s64 q5, q4, #0", q5, q4, i32, -127); 3990 TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, 16); 3991 TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, 16); 3992 TESTINSN_un_q("vqshlu.s64 q5, q4, #59", q5, q4, i32, 16); 3993 TESTINSN_un_q("vqshlu.s64 q5, q4, #58", q5, q4, i32, 16); 3994 TESTINSN_un_q("vqshlu.s64 q5, q4, #17", q5, q4, i32, 16); 3995 TESTINSN_un_q("vqshlu.s64 q5, q4, #63", q5, q4, i32, -1); 3996 TESTINSN_un_q("vqshlu.s64 q5, q4, #60", q5, q4, i32, -1); 3997 TESTINSN_un_q("vqshlu.s64 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 3998 TESTINSN_un_q("vqshlu.s32 q10, q11, #1", q10, q11, i32, 1); 3999 TESTINSN_un_q("vqshlu.s32 q15, q14, #1", q15, q14, i32, -127); 4000 TESTINSN_un_q("vqshlu.s32 q5, q4, #0", q5, q4, i32, -127); 4001 TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, 16); 4002 TESTINSN_un_q("vqshlu.s32 q5, q4, #28", q5, q4, i32, 16); 4003 TESTINSN_un_q("vqshlu.s32 q5, q4, #27", q5, q4, i32, 16); 4004 TESTINSN_un_q("vqshlu.s32 q5, q4, #26", q5, q4, i32, 16); 4005 TESTINSN_un_q("vqshlu.s32 q5, q4, #17", q5, q4, i32, 16); 4006 TESTINSN_un_q("vqshlu.s32 q5, q4, #31", q5, q4, i32, -1); 4007 TESTINSN_un_q("vqshlu.s32 q5, q4, #29", q5, q4, i32, -1); 4008 TESTINSN_un_q("vqshlu.s32 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 4009 TESTINSN_un_q("vqshlu.s16 q9, q8, #1", q9, q8, i32, 1); 4010 TESTINSN_un_q("vqshlu.s16 q15, q14, #1", q15, q14, i32, -127); 4011 TESTINSN_un_q("vqshlu.s16 q5, q4, #0", q5, q4, i32, -127); 4012 TESTINSN_un_q("vqshlu.s16 q9, q8, #15", q9, q8, i32, 16); 4013 TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, 16); 4014 TESTINSN_un_q("vqshlu.s16 q5, q4, #11", q5, q4, i32, 16); 4015 TESTINSN_un_q("vqshlu.s16 q5, q4, #10", q5, q4, i32, 16); 4016 TESTINSN_un_q("vqshlu.s16 q5, q4, #4", q5, q4, i32, 16); 4017 TESTINSN_un_q("vqshlu.s16 q5, q4, #15", q5, q4, i32, -1); 4018 TESTINSN_un_q("vqshlu.s16 q5, q4, #12", q5, q4, i32, -1); 4019 TESTINSN_un_q("vqshlu.s16 q5, q4, #7", q5, q4, i32, (1 << 31) + 2); 4020 TESTINSN_un_q("vqshlu.s8 q0, q1, #1", q0, q1, i32, 1); 4021 TESTINSN_un_q("vqshlu.s8 q15, q14, #1", q15, q14, i32, -127); 4022 TESTINSN_un_q("vqshlu.s8 q5, q4, #0", q5, q4, i32, -127); 4023 TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, 16); 4024 TESTINSN_un_q("vqshlu.s8 q5, q4, #4", q5, q4, i32, 16); 4025 TESTINSN_un_q("vqshlu.s8 q5, q4, #3", q5, q4, i32, 16); 4026 TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, 16); 4027 TESTINSN_un_q("vqshlu.s8 q5, q4, #1", q5, q4, i32, 16); 4028 TESTINSN_un_q("vqshlu.s8 q5, q4, #7", q5, q4, i32, -1); 4029 TESTINSN_un_q("vqshlu.s8 q5, q4, #5", q5, q4, i32, -1); 4030 TESTINSN_un_q("vqshlu.s8 q5, q4, #2", q5, q4, i32, (1 << 31) + 2); 4031 4032 printf("---- VQRSHL (register) ----\n"); 4033 TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 4034 TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 4035 TESTINSN_bin_q("vqrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 4036 TESTINSN_bin_q("vqrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 4037 TESTINSN_bin_q("vqrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 4038 TESTINSN_bin_q("vqrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 4039 TESTINSN_bin_q("vqrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 4040 TESTINSN_bin_q("vqrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 4041 TESTINSN_bin_q("vqrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 4042 TESTINSN_bin_q("vqrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 4043 TESTINSN_bin_q("vqrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 4044 TESTINSN_bin_q("vqrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 4045 TESTINSN_bin_q("vqrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 4046 TESTINSN_bin_q("vqrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 4047 TESTINSN_bin_q("vqrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 4048 TESTINSN_bin_q("vqrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 4049 TESTINSN_bin_q("vqrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 4050 TESTINSN_bin_q("vqrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 4051 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4052 TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4053 TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4054 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4055 TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4056 TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4057 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4058 TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4059 TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4060 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4061 TESTINSN_bin_q("vqrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4062 TESTINSN_bin_q("vqrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4063 TESTINSN_bin_q("vqrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 4064 TESTINSN_bin_q("vqrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 4065 TESTINSN_bin_q("vqrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 4066 TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 4067 TESTINSN_bin_q("vqrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 4068 TESTINSN_bin_q("vqrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4069 TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 4070 TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 4071 TESTINSN_bin_q("vqrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 4072 TESTINSN_bin_q("vqrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 4073 TESTINSN_bin_q("vqrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 4074 TESTINSN_bin_q("vqrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 4075 TESTINSN_bin_q("vqrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 4076 TESTINSN_bin_q("vqrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 4077 TESTINSN_bin_q("vqrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 4078 TESTINSN_bin_q("vqrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 4079 TESTINSN_bin_q("vqrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 4080 TESTINSN_bin_q("vqrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 4081 TESTINSN_bin_q("vqrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 4082 TESTINSN_bin_q("vqrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 4083 TESTINSN_bin_q("vqrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 4084 TESTINSN_bin_q("vqrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 4085 TESTINSN_bin_q("vqrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 4086 TESTINSN_bin_q("vqrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 4087 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 4088 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4089 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4090 TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4091 TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4092 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4093 TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4094 TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4095 TESTINSN_bin_q("vqrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4096 TESTINSN_bin_q("vqrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4097 TESTINSN_bin_q("vqrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4098 TESTINSN_bin_q("vqrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 4099 TESTINSN_bin_q("vqrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 4100 TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 4101 TESTINSN_bin_q("vqrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 4102 TESTINSN_bin_q("vqrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4103 4104 printf("---- VRSHL (register) ----\n"); 4105 TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 4106 TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 4107 TESTINSN_bin("vrshl.s64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 4108 TESTINSN_bin("vrshl.s64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 4109 TESTINSN_bin("vrshl.s64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 4110 TESTINSN_bin("vrshl.s64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 4111 TESTINSN_bin("vrshl.s32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 4112 TESTINSN_bin("vrshl.s32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 4113 TESTINSN_bin("vrshl.s32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 4114 TESTINSN_bin("vrshl.s32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 4115 TESTINSN_bin("vrshl.s32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 4116 TESTINSN_bin("vrshl.s32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 4117 TESTINSN_bin("vrshl.s16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 4118 TESTINSN_bin("vrshl.s16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 4119 TESTINSN_bin("vrshl.s16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 4120 TESTINSN_bin("vrshl.s16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 4121 TESTINSN_bin("vrshl.s16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 4122 TESTINSN_bin("vrshl.s16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 4123 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4124 TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4125 TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4126 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4127 TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4128 TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4129 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4130 TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4131 TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4132 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4133 TESTINSN_bin("vrshl.s16 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4134 TESTINSN_bin("vrshl.s32 q2, q7, q11", q2, q7, i32, -1, q11, i32, 0); 4135 TESTINSN_bin("vrshl.s8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 4136 TESTINSN_bin("vrshl.s8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 4137 TESTINSN_bin("vrshl.s8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 4138 TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 4139 TESTINSN_bin("vrshl.s8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 4140 TESTINSN_bin("vrshl.s8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4141 TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 1, q2, i32, 1); 4142 TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, 1); 4143 TESTINSN_bin("vrshl.u64 q3, q4, q5", q3, q4, i32, -127, q5, i32, -3); 4144 TESTINSN_bin("vrshl.u64 q0, q1, q2", q0, q1, i32, 16, q2, i32, 14); 4145 TESTINSN_bin("vrshl.u64 q13, q14, q15", q13, q14, i32, -17, q15, i32, -26); 4146 TESTINSN_bin("vrshl.u64 q7, q8, q2", q7, q8, i32, 24, q2, i32, -60); 4147 TESTINSN_bin("vrshl.u32 q3, q4, q15", q3, q4, i32, 127, q15, i32, -30); 4148 TESTINSN_bin("vrshl.u32 q2, q8, q4", q2, q8, i32, -11, q4, i32, -4); 4149 TESTINSN_bin("vrshl.u32 q12, q11, q13", q12, q11, i32, -120, q13, i32, -9); 4150 TESTINSN_bin("vrshl.u32 q0, q1, q2", q0, q1, i32, 34, q2, i32, -7); 4151 TESTINSN_bin("vrshl.u32 q9, q10, q11", q9, q10, i32, (1 << 31) + 8, q11, i32, -1); 4152 TESTINSN_bin("vrshl.u32 q13, q3, q5", q13, q3, i32, (1 << 27), q5, i32, 3); 4153 TESTINSN_bin("vrshl.u16 q11, q10, q2", q11, q10, i32, (1 << 31), q2, i32, -31); 4154 TESTINSN_bin("vrshl.u16 q3, q14, q7", q3, q14, i32, (1 << 31), q7, i32, -3); 4155 TESTINSN_bin("vrshl.u16 q0, q11, q2", q0, q11, i32, (1 << 31) + 256, q2, i32, -1); 4156 TESTINSN_bin("vrshl.u16 q1, q2, q3", q1, q2, i32, (1 << 31) + 256, q3, i32, -31); 4157 TESTINSN_bin("vrshl.u16 q3, q4, q5", q3, q4, i32, (1 << 31) + (1 << 29), q5, i32, -13); 4158 TESTINSN_bin("vrshl.u16 q0, q15, q2", q0, q15, i32, 1, q2, i32, 30); 4159 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, 40); 4160 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4161 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4162 TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4163 TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, 0xf, q11, i32, -1); 4164 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4165 TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4166 TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -1, q11, i32, -1); 4167 TESTINSN_bin("vrshl.u8 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4168 TESTINSN_bin("vrshl.u16 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4169 TESTINSN_bin("vrshl.u32 q2, q7, q11", q2, q7, i32, -2, q11, i32, -1); 4170 TESTINSN_bin("vrshl.u8 q13, q1, q2", q13, q1, i32, -4, q2, i32, 30); 4171 TESTINSN_bin("vrshl.u8 q3, q7, q5", q3, q7, i32, (1 << 31) + 11, q5, i32, 3); 4172 TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, (1 << 16), q12, i32, 16); 4173 TESTINSN_bin("vrshl.u8 q6, q7, q8", q6, q7, i32, (1 << 30), q8, i32, 2); 4174 TESTINSN_bin("vrshl.u8 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4175 4176 printf("---- VMAX (integer) ----\n"); 4177 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 4178 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121); 4179 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 4180 TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4181 TESTINSN_bin("vmax.s8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 4182 TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 4183 TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4184 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4185 TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 4186 TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4187 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4188 TESTINSN_bin("vmax.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 4189 TESTINSN_bin("vmax.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4190 TESTINSN_bin("vmax.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4191 TESTINSN_bin("vmax.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4192 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 4193 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120); 4194 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 4195 TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4196 TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 4197 TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4198 TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4199 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4200 TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4201 TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4202 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4203 TESTINSN_bin("vmax.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4204 TESTINSN_bin("vmax.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4205 TESTINSN_bin("vmax.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4206 TESTINSN_bin("vmax.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4207 4208 printf("---- VMIN (integer) ----\n"); 4209 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 4210 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 121); 4211 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4212 TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 4213 TESTINSN_bin("vmin.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 4214 TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 4215 TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4216 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4217 TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 4218 TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4219 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4220 TESTINSN_bin("vmin.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 4221 TESTINSN_bin("vmin.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4222 TESTINSN_bin("vmin.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4223 TESTINSN_bin("vmin.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4224 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 4225 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 250, q2, i32, 120); 4226 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4227 TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, 120, q2, i32, 120); 4228 TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 140); 4229 TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4230 TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4231 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4232 TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4233 TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4234 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4235 TESTINSN_bin("vmin.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4236 TESTINSN_bin("vmin.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4237 TESTINSN_bin("vmin.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4238 TESTINSN_bin("vmin.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4239 4240 printf("---- VABD ----\n"); 4241 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 4242 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 4243 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120); 4244 TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4245 TESTINSN_bin("vabd.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4246 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 4247 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2); 4248 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200); 4249 TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4250 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4251 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 4252 TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4253 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4254 TESTINSN_bin("vabd.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 4255 TESTINSN_bin("vabd.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4256 TESTINSN_bin("vabd.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4257 TESTINSN_bin("vabd.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4258 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 4259 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4260 TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, -140, q2, i32, 120); 4261 TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4262 TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2); 4263 TESTINSN_bin("vabd.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200); 4264 TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4265 TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4266 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4267 TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4268 TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4269 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4270 TESTINSN_bin("vabd.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4271 TESTINSN_bin("vabd.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4272 TESTINSN_bin("vabd.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4273 TESTINSN_bin("vabd.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4274 4275 printf("---- VABA ----\n"); 4276 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 4277 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 121); 4278 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4279 TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4280 TESTINSN_bin("vaba.s8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4281 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 2); 4282 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2); 4283 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200); 4284 TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4285 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4286 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, (1 << 31) + 3); 4287 TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4288 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4289 TESTINSN_bin("vaba.s8 q5, q7, q5", q5, q7, i32, (1 << 31) + 4, q5, i32, (1 << 31) + 2); 4290 TESTINSN_bin("vaba.s16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4291 TESTINSN_bin("vaba.s32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4292 TESTINSN_bin("vaba.s32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4293 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 25, q2, i32, 120); 4294 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4295 TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4296 TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4297 TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, -255, q5, i32, (1 << 31) + 2); 4298 TESTINSN_bin("vaba.u8 q5, q7, q5", q5, q7, i32, (1 << 31) + 1, q5, i32, -200); 4299 TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4300 TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4301 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4302 TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4303 TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4304 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 3); 4305 TESTINSN_bin("vaba.u8 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4306 TESTINSN_bin("vaba.u16 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4307 TESTINSN_bin("vaba.u32 q0, q1, q2", q0, q1, i32, (1 << 31) + 4, q2, i32, (1 << 31) + 2); 4308 TESTINSN_bin("vaba.u32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4309 4310 printf("---- VABAL ----\n"); 4311 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120); 4312 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121); 4313 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4314 TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4315 TESTINSN_bin("vabal.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4316 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 4317 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2); 4318 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200); 4319 TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4320 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4321 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 4322 TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4323 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4324 TESTINSN_bin("vabal.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 4325 TESTINSN_bin("vabal.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4326 TESTINSN_bin("vabal.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4327 TESTINSN_bin("vabal.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120); 4328 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120); 4329 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4330 TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4331 TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4332 TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2); 4333 TESTINSN_bin("vabal.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200); 4334 TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4335 TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4336 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4337 TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4338 TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4339 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4340 TESTINSN_bin("vabal.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4341 TESTINSN_bin("vabal.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4342 TESTINSN_bin("vabal.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4343 TESTINSN_bin("vabal.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120); 4344 4345 printf("---- VABDL ----\n"); 4346 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120); 4347 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 121); 4348 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4349 TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4350 TESTINSN_bin("vabdl.s8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4351 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 2); 4352 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2); 4353 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200); 4354 TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4355 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4356 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, (1 << 31) + 3); 4357 TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4358 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4359 TESTINSN_bin("vabdl.s8 q5, d7, d5", q5, d7, i32, (1 << 31) + 4, d5, i32, (1 << 31) + 2); 4360 TESTINSN_bin("vabdl.s16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4361 TESTINSN_bin("vabdl.s32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4362 TESTINSN_bin("vabdl.s32 q10, d31, d12", q10, d31, i32, 24, d12, i32, 120); 4363 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 25, d2, i32, 120); 4364 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4365 TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4366 TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, 140, d2, i32, 120); 4367 TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, -255, d5, i32, (1 << 31) + 2); 4368 TESTINSN_bin("vabdl.u8 q5, d7, d5", q5, d7, i32, (1 << 31) + 1, d5, i32, -200); 4369 TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4370 TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4371 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 2); 4372 TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4373 TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4374 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 1, d2, i32, (1 << 31) + 3); 4375 TESTINSN_bin("vabdl.u8 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4376 TESTINSN_bin("vabdl.u16 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4377 TESTINSN_bin("vabdl.u32 q0, d1, d2", q0, d1, i32, (1 << 31) + 4, d2, i32, (1 << 31) + 2); 4378 TESTINSN_bin("vabdl.u32 q10, d11, d12", q10, d11, i32, 24, d12, i32, 120); 4379 4380 printf("---- VTST ----\n"); 4381 TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 4382 TESTINSN_bin("vtst.32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120); 4383 TESTINSN_bin("vtst.16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120); 4384 TESTINSN_bin("vtst.8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120); 4385 TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4386 TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1); 4387 TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4388 TESTINSN_bin("vtst.8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2); 4389 TESTINSN_bin("vtst.16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1); 4390 TESTINSN_bin("vtst.32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2); 4391 TESTINSN_bin("vtst.32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4392 4393 printf("---- VCEQ ----\n"); 4394 TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 4395 TESTINSN_bin("vceq.i32 q3, q4, q5", q3, q4, i32, 140, q5, i32, 120); 4396 TESTINSN_bin("vceq.i16 q6, q7, q8", q6, q7, i32, 120, q8, i32, 120); 4397 TESTINSN_bin("vceq.i8 q9, q10, q12", q9, q10, i32, 140, q12, i32, 120); 4398 TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4399 TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, (1 << 14) + 1, q2, i32, (1 << 14) + 1); 4400 TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, (1 << 31) + 2); 4401 TESTINSN_bin("vceq.i8 q0, q1, q2", q0, q1, i32, (1 << 31) + 1, q2, i32, 2); 4402 TESTINSN_bin("vceq.i16 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 14) + 1); 4403 TESTINSN_bin("vceq.i32 q0, q1, q2", q0, q1, i32, 1, q2, i32, (1 << 31) + 2); 4404 TESTINSN_bin("vceq.i32 q10, q11, q12", q10, q11, i32, 24, q12, i32, 120); 4405 4406 printf("---- VMLA ----\n"); 4407 TESTINSN_bin("vmla.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120); 4408 TESTINSN_bin("vmla.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, 120); 4409 TESTINSN_bin("vmla.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 4410 TESTINSN_bin("vmla.i16 q7, q1, q2", q7, q1, i32, 0x140, q2, i32, 0x120); 4411 TESTINSN_bin("vmla.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, -120); 4412 TESTINSN_bin("vmla.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 4413 TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 4414 TESTINSN_bin("vmla.i16 q14, q5, q9", q14, q5, i32, (1 << 14) + 1, q9, i32, (1 << 13) + 2); 4415 TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 4416 TESTINSN_bin("vmla.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 4417 TESTINSN_bin("vmla.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 4418 TESTINSN_bin("vmla.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 4419 TESTINSN_bin("vmla.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, -120); 4420 4421 printf("---- VMLS ----\n"); 4422 TESTINSN_bin("vmls.i32 q0, q1, q2", q0, q1, i32, -24, q2, i32, 120); 4423 TESTINSN_bin("vmls.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120); 4424 TESTINSN_bin("vmls.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 4425 TESTINSN_bin("vmls.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4426 TESTINSN_bin("vmls.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 4427 TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 4428 TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 4429 TESTINSN_bin("vmls.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 4430 TESTINSN_bin("vmls.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 4431 TESTINSN_bin("vmls.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 4432 TESTINSN_bin("vmls.i32 q10, q11, q15", q10, q11, i32, -24, q15, i32, 120); 4433 4434 printf("---- VMUL ----\n"); 4435 TESTINSN_bin("vmul.i32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 4436 TESTINSN_bin("vmul.i32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120); 4437 TESTINSN_bin("vmul.i16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 4438 TESTINSN_bin("vmul.i8 q0, q1, q2", q0, q1, i32, 140, q2, i32, 120); 4439 TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 4440 TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 4441 TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 4442 TESTINSN_bin("vmul.i8 q10, q11, q12", q10, q11, i32, (1 << 25) + 0xfeb2, q12, i32, (1 << 13) + 0xdf); 4443 TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2); 4444 TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12); 4445 TESTINSN_bin("vmul.i8 q10, q13, q12", q10, q13, i32, (1 << 5) + 1, q12, i32, (1 << 3) + 2); 4446 TESTINSN_bin("vmul.i16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 4447 TESTINSN_bin("vmul.i32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 4448 TESTINSN_bin("vmul.i32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120); 4449 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 3, q2, i32, 3); 4450 TESTINSN_bin("vmul.p8 q0, q1, q2", q0, q1, i32, 12, q2, i8, 0x0f); 4451 4452 printf("---- VMUL (by scalar) ----\n"); 4453 TESTINSN_bin("vmul.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 4454 TESTINSN_bin("vmul.i32 q15, q8, d7[1]", q15, q8, i32, 140, d4, i32, -120); 4455 TESTINSN_bin("vmul.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120); 4456 TESTINSN_bin("vmul.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4457 TESTINSN_bin("vmul.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4458 TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4459 TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 4460 TESTINSN_bin("vmul.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4461 TESTINSN_bin("vmul.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4462 4463 printf("---- VMLA (by scalar) ----\n"); 4464 TESTINSN_bin("vmla.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 4465 TESTINSN_bin("vmla.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120); 4466 TESTINSN_bin("vmla.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120); 4467 TESTINSN_bin("vmla.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4468 TESTINSN_bin("vmla.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4469 TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4470 TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 4471 TESTINSN_bin("vmla.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4472 TESTINSN_bin("vmla.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4473 4474 printf("---- VMLS (by scalar) ----\n"); 4475 TESTINSN_bin("vmls.i32 q0, q1, d4[0]", q0, q1, i32, 24, d4, i32, 120); 4476 TESTINSN_bin("vmls.i32 q15, q8, d7[1]", q15, q8, i32, 140, d7, i32, -120); 4477 TESTINSN_bin("vmls.i16 q10, q9, d7[3]", q10, q9, i32, 0x140, d7, i32, 0x120); 4478 TESTINSN_bin("vmls.i16 q4, q5, d6[2]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4479 TESTINSN_bin("vmls.i32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4480 TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4481 TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 4482 TESTINSN_bin("vmls.i16 q4, q5, d6[0]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4483 TESTINSN_bin("vmls.i32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4484 4485 printf("---- VMULL (by scalar) ----\n"); 4486 TESTINSN_bin("vmull.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120); 4487 TESTINSN_bin("vmull.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120); 4488 TESTINSN_bin("vmull.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 4489 TESTINSN_bin("vmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4490 TESTINSN_bin("vmull.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4491 TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4492 TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 4493 TESTINSN_bin("vmull.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4494 TESTINSN_bin("vmull.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4495 TESTINSN_bin("vmull.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120); 4496 TESTINSN_bin("vmull.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120); 4497 TESTINSN_bin("vmull.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 4498 TESTINSN_bin("vmull.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4499 TESTINSN_bin("vmull.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4500 TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4501 TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 4502 TESTINSN_bin("vmull.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4503 TESTINSN_bin("vmull.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4504 4505 printf("---- VMLAL (by scalar) ----\n"); 4506 TESTINSN_bin("vmlal.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120); 4507 TESTINSN_bin("vmlal.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120); 4508 TESTINSN_bin("vmlal.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 4509 TESTINSN_bin("vmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4510 TESTINSN_bin("vmlal.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4511 TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4512 TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 4513 TESTINSN_bin("vmlal.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4514 TESTINSN_bin("vmlal.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4515 TESTINSN_bin("vmlal.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120); 4516 TESTINSN_bin("vmlal.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120); 4517 TESTINSN_bin("vmlal.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 4518 TESTINSN_bin("vmlal.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4519 TESTINSN_bin("vmlal.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4520 TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4521 TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 4522 TESTINSN_bin("vmlal.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4523 TESTINSN_bin("vmlal.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4524 4525 printf("---- VMLSL (by scalar) ----\n"); 4526 TESTINSN_bin("vmlsl.s32 q0, d2, d4[0]", q0, d2, i32, 24, d4, i32, 120); 4527 TESTINSN_bin("vmlsl.s32 q15, d8, d7[1]", q15, d8, i32, 140, d7, i32, -120); 4528 TESTINSN_bin("vmlsl.s16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 4529 TESTINSN_bin("vmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4530 TESTINSN_bin("vmlsl.s32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4531 TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4532 TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 4533 TESTINSN_bin("vmlsl.s16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4534 TESTINSN_bin("vmlsl.s32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4535 TESTINSN_bin("vmlsl.u32 q0, d1, d4[0]", q0, d1, i32, 24, d4, i32, 120); 4536 TESTINSN_bin("vmlsl.u32 q15, d8, d7[1]", q15, d8, i32, 140, d4, i32, -120); 4537 TESTINSN_bin("vmlsl.u16 q10, d31, d7[3]", q10, d31, i32, 0x140, d7, i32, 0x120); 4538 TESTINSN_bin("vmlsl.u16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4539 TESTINSN_bin("vmlsl.u32 q4, d7, d15[1]", q4, d7, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 4540 TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4541 TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31), d1, i16, 12); 4542 TESTINSN_bin("vmlsl.u16 q4, d5, d6[0]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4543 TESTINSN_bin("vmlsl.u32 q7, d7, d1[1]", q7, d7, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 4544 4545 printf("---- VRSHR ----\n"); 4546 TESTINSN_un("vrshr.s8 q0, q1, #0", q0, q1, i32, -1); 4547 TESTINSN_un("vrshr.s8 q0, q1, #1", q0, q1, i32, -1); 4548 TESTINSN_un("vrshr.s16 q3, q4, #2", q3, q4, i32, -0x7c); 4549 TESTINSN_un("vrshr.s32 q2, q5, #31", q2, q5, i32, -1); 4550 TESTINSN_un("vrshr.s8 q6, q7, #7", q6, q7, i32, 0xffff); 4551 TESTINSN_un("vrshr.s16 q8, q9, #12", q8, q9, i32, -10); 4552 TESTINSN_un("vrshr.s32 q10, q11, #5", q10, q11, i32, 10234); 4553 TESTINSN_un("vrshr.u8 q12, q13, #1", q12, q13, i32, -1); 4554 TESTINSN_un("vrshr.u16 q14, q15, #11", q14, q15, i32, -1); 4555 TESTINSN_un("vrshr.u32 q10, q11, #9", q10, q11, i32, 1000); 4556 TESTINSN_un("vrshr.u8 q7, q13, #7", q7, q13, i32, -1); 4557 TESTINSN_un("vrshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf); 4558 TESTINSN_un("vrshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0); 4559 TESTINSN_un("vrshr.u64 q0, q1, #42", q0, q1, i32, -1); 4560 TESTINSN_un("vrshr.s64 q6, q7, #12", q6, q7, i32, 0xfac); 4561 TESTINSN_un("vrshr.u64 q8, q4, #9", q8, q4, i32, 13560); 4562 TESTINSN_un("vrshr.s64 q9, q12, #11", q9, q12, i32, 98710); 4563 4564 printf("---- VRSRA ----\n"); 4565 TESTINSN_un("vrsra.s8 q0, q1, #1", q0, q1, i32, -1); 4566 TESTINSN_un("vrsra.s16 q3, q4, #2", q3, q4, i32, -0x7c); 4567 TESTINSN_un("vrsra.s32 q2, q5, #31", q2, q5, i32, -1); 4568 TESTINSN_un("vrsra.s8 q6, q7, #7", q6, q7, i32, 0xffff); 4569 TESTINSN_un("vrsra.s16 q8, q9, #12", q8, q9, i32, -10); 4570 TESTINSN_un("vrsra.s32 q10, q11, #5", q10, q11, i32, 10234); 4571 TESTINSN_un("vrsra.u8 q12, q13, #1", q12, q13, i32, -1); 4572 TESTINSN_un("vrsra.u16 q14, q15, #11", q14, q15, i32, -1); 4573 TESTINSN_un("vrsra.u32 q10, q11, #9", q10, q11, i32, 1000); 4574 TESTINSN_un("vrsra.u8 q7, q13, #7", q7, q13, i32, -1); 4575 TESTINSN_un("vrsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf); 4576 TESTINSN_un("vrsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0); 4577 TESTINSN_un("vrsra.u64 q0, q1, #42", q0, q1, i32, -1); 4578 TESTINSN_un("vrsra.s64 q6, q7, #12", q6, q7, i32, 0xfac); 4579 TESTINSN_un("vrsra.u64 q8, q4, #9", q8, q4, i32, 13560); 4580 TESTINSN_un("vrsra.s64 q9, q12, #11", q9, q12, i32, 98710); 4581 4582 printf("---- VSHR ----\n"); 4583 TESTINSN_un("vshr.s8 q0, q1, #0", q0, q1, i32, -1); 4584 TESTINSN_un("vshr.s8 q0, q1, #1", q0, q1, i32, -1); 4585 TESTINSN_un("vshr.s16 q3, q4, #2", q3, q4, i32, -0x7c); 4586 TESTINSN_un("vshr.s32 q2, q5, #31", q2, q5, i32, -1); 4587 TESTINSN_un("vshr.s8 q6, q7, #7", q6, q7, i32, 0xffff); 4588 TESTINSN_un("vshr.s16 q8, q9, #12", q8, q9, i32, -10); 4589 TESTINSN_un("vshr.s32 q10, q11, #5", q10, q11, i32, 10234); 4590 TESTINSN_un("vshr.u8 q12, q13, #1", q12, q13, i32, -1); 4591 TESTINSN_un("vshr.u16 q14, q15, #11", q14, q15, i32, -1); 4592 TESTINSN_un("vshr.u32 q10, q11, #9", q10, q11, i32, 1000); 4593 TESTINSN_un("vshr.u8 q7, q13, #7", q7, q13, i32, -1); 4594 TESTINSN_un("vshr.u16 q8, q1, #5", q8, q1, i32, 0xabcf); 4595 TESTINSN_un("vshr.u32 q12, q3, #15", q12, q3, i32, -0x1b0); 4596 TESTINSN_un("vshr.u64 q0, q1, #42", q0, q1, i32, -1); 4597 TESTINSN_un("vshr.s64 q6, q7, #12", q6, q7, i32, 0xfac); 4598 TESTINSN_un("vshr.u64 q8, q4, #9", q8, q4, i32, 13560); 4599 TESTINSN_un("vshr.s64 q9, q12, #11", q9, q12, i32, 98710); 4600 4601 printf("---- VSRA ----\n"); 4602 TESTINSN_un("vsra.s8 q0, q1, #1", q0, q1, i32, -1); 4603 TESTINSN_un("vsra.s16 q3, q4, #2", q3, q4, i32, -0x7c); 4604 TESTINSN_un("vsra.s32 q2, q5, #31", q2, q5, i32, -1); 4605 TESTINSN_un("vsra.s8 q6, q7, #7", q6, q7, i32, 0xffff); 4606 TESTINSN_un("vsra.s16 q8, q9, #12", q8, q9, i32, -10); 4607 TESTINSN_un("vsra.s32 q10, q11, #5", q10, q11, i32, 10234); 4608 TESTINSN_un("vsra.u8 q12, q13, #1", q12, q13, i32, -1); 4609 TESTINSN_un("vsra.u16 q14, q15, #11", q14, q15, i32, -1); 4610 TESTINSN_un("vsra.u32 q10, q11, #9", q10, q11, i32, 1000); 4611 TESTINSN_un("vsra.u8 q7, q13, #7", q7, q13, i32, -1); 4612 TESTINSN_un("vsra.u16 q8, q1, #5", q8, q1, i32, 0xabcf); 4613 TESTINSN_un("vsra.u32 q12, q3, #15", q12, q3, i32, -0x1b0); 4614 TESTINSN_un("vsra.u64 q0, q1, #42", q0, q1, i32, -1); 4615 TESTINSN_un("vsra.s64 q6, q7, #12", q6, q7, i32, 0xfac); 4616 TESTINSN_un("vsra.u64 q8, q4, #9", q8, q4, i32, 13560); 4617 TESTINSN_un("vsra.s64 q9, q12, #11", q9, q12, i32, 98710); 4618 4619 printf("---- VSRI ----\n"); 4620 TESTINSN_un("vsri.16 q0, q1, #1", q0, q1, i32, -1); 4621 TESTINSN_un("vsri.16 q3, q4, #2", q3, q4, i32, -0x7c); 4622 TESTINSN_un("vsri.32 q2, q5, #31", q2, q5, i32, -1); 4623 TESTINSN_un("vsri.8 q6, q7, #7", q6, q7, i32, 0xffff); 4624 TESTINSN_un("vsri.16 q8, q9, #12", q8, q9, i32, -10); 4625 TESTINSN_un("vsri.32 q10, q11, #5", q10, q11, i32, 10234); 4626 TESTINSN_un("vsri.8 q12, q13, #1", q12, q13, i32, -1); 4627 TESTINSN_un("vsri.16 q14, q15, #11", q14, q15, i32, -1); 4628 TESTINSN_un("vsri.32 q10, q11, #9", q10, q11, i32, 1000); 4629 TESTINSN_un("vsri.8 q7, q13, #7", q7, q13, i32, -1); 4630 TESTINSN_un("vsri.16 q8, q1, #5", q8, q1, i32, 0xabcf); 4631 TESTINSN_un("vsri.32 q12, q3, #15", q12, q3, i32, -0x1b0); 4632 TESTINSN_un("vsri.64 q0, q1, #42", q0, q1, i32, -1); 4633 TESTINSN_un("vsri.64 q6, q7, #12", q6, q7, i32, 0xfac); 4634 TESTINSN_un("vsri.64 q8, q4, #9", q8, q4, i32, 13560); 4635 TESTINSN_un("vsri.64 q9, q12, #11", q9, q12, i32, 98710); 4636 4637 printf("---- VMOVL ----\n"); 4638 TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i32, 0x42); 4639 TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i32, 0x42); 4640 TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i32, 0x42); 4641 TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i32, 0x42); 4642 TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i32, 0x42); 4643 TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i32, 0x42); 4644 TESTINSN_un("vmovl.u32 q0, d2", q0, d2, i8, 0xed); 4645 TESTINSN_un("vmovl.u16 q15, d2", q15, d2, i8, 0xed); 4646 TESTINSN_un("vmovl.u8 q3, d31", q0, d31, i8, 0xed); 4647 TESTINSN_un("vmovl.s32 q0, d2", q0, d2, i8, 0xed); 4648 TESTINSN_un("vmovl.s16 q15, d2", q15, d2, i8, 0xed); 4649 TESTINSN_un("vmovl.s8 q3, d31", q0, d31, i8, 0xed); 4650 4651 printf("---- VABS ----\n"); 4652 TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0x73); 4653 TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0x73); 4654 TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0x73); 4655 TESTINSN_un("vabs.s32 q0, q1", q0, q1, i32, 0xfe); 4656 TESTINSN_un("vabs.s16 q15, q4", q15, q4, i32, 0xef); 4657 TESTINSN_un("vabs.s8 q8, q7", q8, q7, i32, 0xde); 4658 TESTINSN_un("vabs.s32 q0, q1", q0, q1, i16, 0xfe0a); 4659 TESTINSN_un("vabs.s16 q15, q4", q15, q4, i16, 0xef0b); 4660 TESTINSN_un("vabs.s8 q8, q7", q8, q7, i16, 0xde0c); 4661 4662 printf("---- VQABS ----\n"); 4663 TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0x73); 4664 TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 1 << 31); 4665 TESTINSN_un_q("vqabs.s16 q0, q1", q0, q1, i32, 1 << 31); 4666 TESTINSN_un_q("vqabs.s8 q0, q1", q0, q1, i32, 1 << 31); 4667 TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0x73); 4668 TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0x73); 4669 TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i32, 0xfe); 4670 TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i32, 0xef); 4671 TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i32, 0xde); 4672 TESTINSN_un_q("vqabs.s32 q0, q1", q0, q1, i16, 0xfe0a); 4673 TESTINSN_un_q("vqabs.s16 q15, q4", q15, q4, i16, 0xef0b); 4674 TESTINSN_un_q("vqabs.s8 q8, q7", q8, q7, i16, 0xde0c); 4675 4676 printf("---- VADDW ----\n"); 4677 TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 4678 TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12); 4679 TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12); 4680 TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 4681 TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 4682 TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 4683 TESTINSN_bin("vaddw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 4684 TESTINSN_bin("vaddw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2); 4685 TESTINSN_bin("vaddw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2); 4686 TESTINSN_bin("vaddw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 4687 TESTINSN_bin("vaddw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 4688 TESTINSN_bin("vaddw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 4689 4690 printf("---- VADDL ----\n"); 4691 TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 4692 TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12); 4693 TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12); 4694 TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 4695 TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 4696 TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 4697 TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 4698 TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2); 4699 TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2); 4700 TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 4701 TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 4702 TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 4703 TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 4704 TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12); 4705 TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12); 4706 TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 4707 TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 4708 TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 4709 TESTINSN_bin("vaddl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 4710 TESTINSN_bin("vaddl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2); 4711 TESTINSN_bin("vaddl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2); 4712 TESTINSN_bin("vaddl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 4713 TESTINSN_bin("vaddl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 4714 TESTINSN_bin("vaddl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 4715 4716 printf("---- VSUBW ----\n"); 4717 TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 4718 TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0x12); 4719 TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0x12); 4720 TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 4721 TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 4722 TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0x12); 4723 TESTINSN_bin("vsubw.s32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 4724 TESTINSN_bin("vsubw.s16 q15, q14, d4", q15, q14, i32, 0x73, d4, i8, 0xe2); 4725 TESTINSN_bin("vsubw.s8 q0, q1, d31", q0, q1, i32, 0x73, d31, i8, 0xe2); 4726 TESTINSN_bin("vsubw.u32 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 4727 TESTINSN_bin("vsubw.u16 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 4728 TESTINSN_bin("vsubw.u8 q0, q1, d4", q0, q1, i32, 0x73, d4, i8, 0xe2); 4729 4730 printf("---- VSUBL ----\n"); 4731 TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 4732 TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0x12); 4733 TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0x12); 4734 TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 4735 TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 4736 TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0x12); 4737 TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 4738 TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i32, 0x73, d4, i8, 0xe2); 4739 TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i32, 0x73, d31, i8, 0xe2); 4740 TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 4741 TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 4742 TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i32, 0x73, d4, i8, 0xe2); 4743 TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 4744 TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0x12); 4745 TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x99, d31, i8, 0x12); 4746 TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 4747 TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 4748 TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0x12); 4749 TESTINSN_bin("vsubl.s32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 4750 TESTINSN_bin("vsubl.s16 q15, d14, d4", q15, d14, i8, 0x93, d4, i8, 0xe2); 4751 TESTINSN_bin("vsubl.s8 q0, d2, d31", q0, d2, i8, 0x93, d31, i8, 0xe2); 4752 TESTINSN_bin("vsubl.u32 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 4753 TESTINSN_bin("vsubl.u16 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 4754 TESTINSN_bin("vsubl.u8 q0, d2, d4", q0, d2, i8, 0x93, d4, i8, 0xe2); 4755 4756 printf("---- VCEQ #0 ----\n"); 4757 TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x21); 4758 TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x21); 4759 TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x21); 4760 TESTINSN_un("vceq.i32 q0, q1, #0", q0, q1, i32, 0x0); 4761 TESTINSN_un("vceq.i16 q2, q1, #0", q2, q1, i32, 0x0); 4762 TESTINSN_un("vceq.i8 q10, q11, #0", q10, q11, i32, 0x0); 4763 4764 printf("---- VCGT #0 ----\n"); 4765 TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x21); 4766 TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x21); 4767 TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x21); 4768 TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i32, 0x0); 4769 TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i32, 0x0); 4770 TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i32, 0x0); 4771 TESTINSN_un("vcgt.s32 q0, q1, #0", q0, q1, i8, 0xef); 4772 TESTINSN_un("vcgt.s16 q2, q1, #0", q2, q1, i8, 0xed); 4773 TESTINSN_un("vcgt.s8 q10, q11, #0", q10, q11, i8, 0xae); 4774 4775 printf("---- VCGE #0 ----\n"); 4776 TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x21); 4777 TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x21); 4778 TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x21); 4779 TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0x0); 4780 TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0x0); 4781 TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0x0); 4782 TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i8, 0xef); 4783 TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i8, 0xed); 4784 TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i8, 0xae); 4785 TESTINSN_un("vcge.s32 q0, q1, #0", q0, q1, i32, 0xef); 4786 TESTINSN_un("vcge.s16 q2, q1, #0", q2, q1, i32, 0xed); 4787 TESTINSN_un("vcge.s8 q10, q11, #0", q10, q11, i32, 0xae); 4788 4789 printf("---- VCLE #0 ----\n"); 4790 TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x21); 4791 TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x21); 4792 TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x21); 4793 TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i32, 0x0); 4794 TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i32, 0x0); 4795 TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i32, 0x0); 4796 TESTINSN_un("vcle.s32 q0, q1, #0", q0, q1, i8, 0xef); 4797 TESTINSN_un("vcle.s16 q2, q1, #0", q2, q1, i8, 0xed); 4798 TESTINSN_un("vcle.s8 q10, q11, #0", q10, q11, i8, 0xae); 4799 4800 printf("---- VCLT #0 ----\n"); 4801 TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x21); 4802 TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x21); 4803 TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x21); 4804 TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0x0); 4805 TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0x0); 4806 TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0x0); 4807 TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i8, 0xef); 4808 TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i8, 0xed); 4809 TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i8, 0xae); 4810 TESTINSN_un("vclt.s32 q0, q1, #0", q0, q1, i32, 0xef); 4811 TESTINSN_un("vclt.s16 q2, q1, #0", q2, q1, i32, 0xed); 4812 TESTINSN_un("vclt.s8 q10, q11, #0", q10, q11, i32, 0xae); 4813 4814 printf("---- VCNT ----\n"); 4815 TESTINSN_un("vcnt.8 q0, q1", q0, q1, i32, 0xac3d25eb); 4816 TESTINSN_un("vcnt.8 q11, q14", q11, q14, i32, 0xac3d25eb); 4817 TESTINSN_un("vcnt.8 q6, q2", q6, q2, i32, 0xad0eb); 4818 4819 printf("---- VCLS ----\n"); 4820 TESTINSN_un("vcls.s8 q0, q1", q0, q1, i32, 0x21); 4821 TESTINSN_un("vcls.s8 q10, q15", q10, q15, i8, 0x82); 4822 TESTINSN_un("vcls.s16 q0, q1", q0, q1, i32, 0x21); 4823 TESTINSN_un("vcls.s16 q15, q10", q15, q10, i8, 0x82); 4824 TESTINSN_un("vcls.s32 q6, q1", q6, q1, i32, 0x21); 4825 TESTINSN_un("vcls.s32 q10, q5", q10, q5, i8, 0x82); 4826 TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0xff); 4827 TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0xff); 4828 TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0xff); 4829 TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0xffef); 4830 TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0xffef); 4831 TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0xffef); 4832 TESTINSN_un("vcls.s8 q2, q4", q2, q4, i8, 0x00); 4833 TESTINSN_un("vcls.s16 q2, q4", q2, q4, i8, 0x00); 4834 TESTINSN_un("vcls.s32 q2, q4", q2, q4, i8, 0x00); 4835 TESTINSN_un("vcls.s8 q2, q4", q2, q4, i16, 0x00ef); 4836 TESTINSN_un("vcls.s16 q2, q4", q2, q4, i16, 0x00ef); 4837 TESTINSN_un("vcls.s32 q2, q4", q2, q4, i16, 0x00ef); 4838 4839 printf("---- VCLZ ----\n"); 4840 TESTINSN_un("vclz.i8 q0, q1", q0, q1, i32, 0x21); 4841 TESTINSN_un("vclz.i8 q10, q15", q10, q15, i8, 0x82); 4842 TESTINSN_un("vclz.i16 q0, q1", q0, q1, i32, 0x21); 4843 TESTINSN_un("vclz.i16 q15, q10", q15, q10, i8, 0x82); 4844 TESTINSN_un("vclz.i32 q6, q1", q6, q1, i32, 0x21); 4845 TESTINSN_un("vclz.i32 q10, q5", q10, q5, i8, 0x82); 4846 TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0xff); 4847 TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0xff); 4848 TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0xff); 4849 TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0xffef); 4850 TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0xffef); 4851 TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0xffef); 4852 TESTINSN_un("vclz.i8 q2, q4", q2, q4, i8, 0x00); 4853 TESTINSN_un("vclz.i16 q2, q4", q2, q4, i8, 0x00); 4854 TESTINSN_un("vclz.i32 q2, q4", q2, q4, i8, 0x00); 4855 TESTINSN_un("vclz.i8 q2, q4", q2, q4, i16, 0x00ef); 4856 TESTINSN_un("vclz.i16 q2, q4", q2, q4, i16, 0x00ef); 4857 TESTINSN_un("vclz.i32 q2, q4", q2, q4, i16, 0x00ef); 4858 4859 printf("---- VSLI ----\n"); 4860 TESTINSN_un("vsli.16 q0, q1, #1", q0, q1, i32, -1); 4861 TESTINSN_un("vsli.16 q3, q4, #2", q3, q4, i32, -0x7c); 4862 TESTINSN_un("vsli.32 q2, q5, #31", q2, q5, i32, -1); 4863 TESTINSN_un("vsli.8 q6, q7, #7", q6, q7, i32, 0xffff); 4864 TESTINSN_un("vsli.16 q8, q9, #12", q8, q9, i32, -10); 4865 TESTINSN_un("vsli.32 q10, q11, #5", q10, q11, i32, 10234); 4866 TESTINSN_un("vsli.8 q12, q13, #1", q12, q13, i32, -1); 4867 TESTINSN_un("vsli.16 q14, q15, #11", q14, q15, i32, -1); 4868 TESTINSN_un("vsli.32 q10, q11, #9", q10, q11, i32, 1000); 4869 TESTINSN_un("vsli.8 q7, q13, #7", q7, q13, i32, -1); 4870 TESTINSN_un("vsli.16 q8, q1, #1", q8, q1, i32, 0xabcf); 4871 TESTINSN_un("vsli.32 q12, q3, #15", q12, q3, i32, -0x1b0); 4872 TESTINSN_un("vsli.64 q0, q1, #42", q0, q1, i32, -1); 4873 TESTINSN_un("vsli.64 q6, q7, #12", q6, q7, i32, 0xfac); 4874 TESTINSN_un("vsli.64 q8, q4, #9", q8, q4, i32, 13560); 4875 TESTINSN_un("vsli.64 q9, q12, #11", q9, q12, i32, 98710); 4876 4877 printf("---- VPADDL ----\n"); 4878 TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 24); 4879 TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, 140); 4880 TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, 140); 4881 TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, 140); 4882 TESTINSN_un("vpaddl.u8 q0, q1", q0, q1, i32, (1 << 31) + 1); 4883 TESTINSN_un("vpaddl.u16 q0, q1", q0, q1, i32, (1 << 31) + 1); 4884 TESTINSN_un("vpaddl.u32 q0, q1", q0, q1, i32, (1 << 31) + 1); 4885 TESTINSN_un("vpaddl.u32 q10, q11", q10, q11, i32, 24); 4886 TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 24); 4887 TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, 140); 4888 TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, 140); 4889 TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, 140); 4890 TESTINSN_un("vpaddl.s8 q0, q1", q0, q1, i32, (1 << 31) + 1); 4891 TESTINSN_un("vpaddl.s16 q0, q1", q0, q1, i32, (1 << 31) + 1); 4892 TESTINSN_un("vpaddl.s32 q0, q1", q0, q1, i32, (1 << 31) + 1); 4893 TESTINSN_un("vpaddl.s32 q10, q11", q10, q11, i32, 24); 4894 4895 printf("---- VPADAL ----\n"); 4896 TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 24); 4897 TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, 140); 4898 TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, 140); 4899 TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i8, 140); 4900 TESTINSN_un("vpadal.u8 q0, q1", q0, q1, i32, (1 << 31) + 1); 4901 TESTINSN_un("vpadal.u16 q0, q1", q0, q1, i32, (1 << 31) + 1); 4902 TESTINSN_un("vpadal.u32 q0, q1", q0, q1, i32, (1 << 31) + 1); 4903 TESTINSN_un("vpadal.u32 q10, q11", q10, q11, i32, 24); 4904 TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 24); 4905 TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, 140); 4906 TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, 140); 4907 TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i8, 140); 4908 TESTINSN_un("vpadal.s8 q0, q1", q0, q1, i32, (1 << 31) + 1); 4909 TESTINSN_un("vpadal.s16 q0, q1", q0, q1, i32, (1 << 31) + 1); 4910 TESTINSN_un("vpadal.s32 q0, q1", q0, q1, i32, (1 << 31) + 1); 4911 TESTINSN_un("vpadal.s32 q10, q11", q10, q11, i32, 24); 4912 4913 printf("---- VZIP ----\n"); 4914 TESTINSN_dual("vzip.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34); 4915 TESTINSN_dual("vzip.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34); 4916 TESTINSN_dual("vzip.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34); 4917 TESTINSN_dual("vzip.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 4918 TESTINSN_dual("vzip.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 4919 TESTINSN_dual("vzip.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d); 4920 4921 printf("---- VUZP ----\n"); 4922 TESTINSN_dual("vuzp.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34); 4923 TESTINSN_dual("vuzp.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34); 4924 TESTINSN_dual("vuzp.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34); 4925 TESTINSN_dual("vuzp.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 4926 TESTINSN_dual("vuzp.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 4927 TESTINSN_dual("vuzp.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d); 4928 4929 printf("---- VTRN ----\n"); 4930 TESTINSN_dual("vtrn.32 q0, q1", q0, i8, 0x12, q1, i8, 0x34); 4931 TESTINSN_dual("vtrn.16 q1, q0", q0, i8, 0x12, q1, i8, 0x34); 4932 TESTINSN_dual("vtrn.8 q10, q11", q10, i8, 0x12, q11, i8, 0x34); 4933 TESTINSN_dual("vtrn.32 q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 4934 TESTINSN_dual("vtrn.16 q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 4935 TESTINSN_dual("vtrn.8 q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d); 4936 4937 printf("---- VSWP ----\n"); 4938 TESTINSN_dual("vswp q0, q1", q0, i8, 0x12, q1, i8, 0x34); 4939 TESTINSN_dual("vswp q1, q0", q0, i8, 0x12, q1, i8, 0x34); 4940 TESTINSN_dual("vswp q10, q11", q10, i8, 0x12, q11, i8, 0x34); 4941 TESTINSN_dual("vswp q0, q1", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 4942 TESTINSN_dual("vswp q1, q0", q0, i32, 0x12345678, q1, i32, 0x0a0b0c0d); 4943 TESTINSN_dual("vswp q10, q11", q10, i32, 0x12345678, q11, i32, 0x0a0b0c0d); 4944 4945 printf("---- VDUP ----\n"); 4946 TESTINSN_un("vdup.8 q2, d2[0]", q2, d2, i32, 0xabc4657); 4947 TESTINSN_un("vdup.8 q3, d3[2]", q3, d3, i32, 0x7a1b3); 4948 TESTINSN_un("vdup.8 q1, d0[7]", q1, d0, i32, 0x713aaa); 4949 TESTINSN_un("vdup.8 q0, d4[3]", q0, d4, i32, 0xaa713); 4950 TESTINSN_un("vdup.8 q4, d28[4]", q4, d28, i32, 0x7b1c3); 4951 TESTINSN_un("vdup.16 q7, d19[3]", q7, d19, i32, 0x713ffff); 4952 TESTINSN_un("vdup.16 q15, d31[0]", q15, d31, i32, 0x7f00fa); 4953 TESTINSN_un("vdup.16 q6, d2[0]", q6, d2, i32, 0xffabcde); 4954 TESTINSN_un("vdup.16 q8, d22[3]", q8, d22, i32, 0x713); 4955 TESTINSN_un("vdup.16 q9, d2[0]", q9, d2, i32, 0x713); 4956 TESTINSN_un("vdup.32 q10, d17[1]", q10, d17, i32, 0x713); 4957 TESTINSN_un("vdup.32 q15, d11[0]", q15, d11, i32, 0x3); 4958 TESTINSN_un("vdup.32 q10, d29[1]", q10, d29, i32, 0xf00000aa); 4959 TESTINSN_un("vdup.32 q12, d0[1]", q12, d0, i32, 0xf); 4960 TESTINSN_un("vdup.32 q13, d13[0]", q13, d13, i32, -1); 4961 4962 printf("---- VQDMULL ----\n"); 4963 TESTINSN_bin_q("vqdmull.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120); 4964 TESTINSN_bin_q("vqdmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 4965 TESTINSN_bin_q("vqdmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 4966 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4967 TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 4968 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 4969 TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 4970 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4971 TESTINSN_bin_q("vqdmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 4972 TESTINSN_bin_q("vqdmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 4973 TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 4974 TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 4975 TESTINSN_bin_q("vqdmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 4976 TESTINSN_bin_q("vqdmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 4977 4978 printf("---- VQDMULL (by scalar) ----\n"); 4979 TESTINSN_bin_q("vqdmull.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120); 4980 TESTINSN_bin_q("vqdmull.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120); 4981 TESTINSN_bin_q("vqdmull.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120); 4982 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4983 TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 4984 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 4985 TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12); 4986 TESTINSN_bin_q("vqdmull.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 4987 TESTINSN_bin_q("vqdmull.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 4988 TESTINSN_bin_q("vqdmull.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120); 4989 TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 4990 TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 4991 TESTINSN_bin_q("vqdmull.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31); 4992 TESTINSN_bin_q("vqdmull.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30); 4993 4994 printf("---- VQDMLSL ----\n"); 4995 TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120); 4996 TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 4997 TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 4998 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 4999 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5000 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 5001 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 5002 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5003 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5004 TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 5005 TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5006 TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5007 TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 5008 TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5009 5010 printf("---- VQDMLSL (by scalar) ----\n"); 5011 TESTINSN_bin_q("vqdmlsl.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120); 5012 TESTINSN_bin_q("vqdmlsl.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120); 5013 TESTINSN_bin_q("vqdmlsl.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120); 5014 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5015 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 5016 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 5017 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12); 5018 TESTINSN_bin_q("vqdmlsl.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5019 TESTINSN_bin_q("vqdmlsl.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 5020 TESTINSN_bin_q("vqdmlsl.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120); 5021 TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 5022 TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 5023 TESTINSN_bin_q("vqdmlsl.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31); 5024 TESTINSN_bin_q("vqdmlsl.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30); 5025 5026 printf("---- VQDMLAL ----\n"); 5027 TESTINSN_bin_q("vqdmlal.s32 q0, d1, d2", q0, d1, i32, 24, d2, i32, 120); 5028 TESTINSN_bin_q("vqdmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 5029 TESTINSN_bin_q("vqdmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5030 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5031 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5032 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 2); 5033 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 5034 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5035 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5036 TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 5037 TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5038 TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5039 TESTINSN_bin_q("vqdmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 5040 TESTINSN_bin_q("vqdmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5041 5042 printf("---- VQDMLAL (by scalar) ----\n"); 5043 TESTINSN_bin_q("vqdmlal.s32 q0, d1, d7[0]", q0, d1, i32, 24, d7, i32, 120); 5044 TESTINSN_bin_q("vqdmlal.s32 q6, d7, d6[0]", q6, d7, i32, 140, d6, i32, -120); 5045 TESTINSN_bin_q("vqdmlal.s16 q9, d11, d7[2]", q9, d11, i32, 0x140, d7, i32, 0x120); 5046 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5047 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 5048 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[1]", q4, d5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 5049 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[0]", q7, d8, i32, (1 << 31), d3, i32, 12); 5050 TESTINSN_bin_q("vqdmlal.s16 q4, d5, d6[2]", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5051 TESTINSN_bin_q("vqdmlal.s32 q7, d8, d3[1]", q7, d8, i32, (1 << 31) + 1, d3, i32, (1 << 31) + 2); 5052 TESTINSN_bin_q("vqdmlal.s32 q10, d11, d15[1]", q10, d11, i32, 24, d15, i32, 120); 5053 TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[0]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 5054 TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[1]", q10, d30, i32, 1 << 31, d1, i32, 1 << 31); 5055 TESTINSN_bin_q("vqdmlal.s32 q10, d30, d1[1]", q10, d30, i32, 1 << 30, d1, i32, 1 << 31); 5056 TESTINSN_bin_q("vqdmlal.s16 q10, d30, d1[3]", q10, d30, i32, 1 << 31, d1, i32, 1 << 30); 5057 5058 printf("---- VQDMULH ----\n"); 5059 TESTINSN_bin_q("vqdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 5060 TESTINSN_bin_q("vqdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120); 5061 TESTINSN_bin_q("vqdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 5062 TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 5063 TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 5064 TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2); 5065 TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12); 5066 TESTINSN_bin_q("vqdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 5067 TESTINSN_bin_q("vqdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 5068 TESTINSN_bin_q("vqdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120); 5069 TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 5070 TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 5071 TESTINSN_bin_q("vqdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31); 5072 TESTINSN_bin_q("vqdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30); 5073 5074 printf("---- VQDMULH (by scalar) ----\n"); 5075 TESTINSN_bin_q("vqdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120); 5076 TESTINSN_bin_q("vqdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120); 5077 TESTINSN_bin_q("vqdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120); 5078 TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5079 TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5080 TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 5081 TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12); 5082 TESTINSN_bin_q("vqdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5083 TESTINSN_bin_q("vqdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5084 TESTINSN_bin_q("vqdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120); 5085 TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31); 5086 TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 5087 TESTINSN_bin_q("vqdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31); 5088 TESTINSN_bin_q("vqdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30); 5089 5090 printf("---- VSHL (immediate) ----\n"); 5091 TESTINSN_un("vshl.i64 q0, q1, #1", q0, q1, i32, 24); 5092 TESTINSN_un("vshl.i64 q5, q2, #1", q5, q2, i32, (1 << 30)); 5093 TESTINSN_un("vshl.i64 q9, q12, #2", q9, q12, i32, (1 << 31) + 2); 5094 TESTINSN_un("vshl.i64 q11, q2, #12", q11, q2, i32, -1); 5095 TESTINSN_un("vshl.i64 q15, q12, #63", q15, q12, i32, 5); 5096 TESTINSN_un("vshl.i64 q5, q12, #62", q5, q12, i32, (1 << 31) + 1); 5097 TESTINSN_un("vshl.i32 q0, q1, #1", q0, q1, i32, 24); 5098 TESTINSN_un("vshl.i32 q5, q2, #1", q5, q2, i32, (1 << 30)); 5099 TESTINSN_un("vshl.i32 q9, q12, #2", q9, q12, i32, (1 << 31) + 2); 5100 TESTINSN_un("vshl.i32 q11, q2, #12", q11, q2, i32, -1); 5101 TESTINSN_un("vshl.i32 q15, q12, #20", q15, q12, i32, 5); 5102 TESTINSN_un("vshl.i32 q5, q12, #30", q5, q12, i32, (1 << 31) + 1); 5103 TESTINSN_un("vshl.i16 q0, q1, #1", q0, q1, i16, 24); 5104 TESTINSN_un("vshl.i16 q5, q2, #1", q5, q2, i32, (1 << 30)); 5105 TESTINSN_un("vshl.i16 q9, q12, #2", q9, q12, i32, (1 << 31) + 2); 5106 TESTINSN_un("vshl.i16 q11, q2, #12", q11, q2, i16, -1); 5107 TESTINSN_un("vshl.i16 q15, q12, #3", q15, q12, i16, 5); 5108 TESTINSN_un("vshl.i16 q5, q12, #14", q5, q12, i32, (1 << 31) + 1); 5109 TESTINSN_un("vshl.i8 q0, q1, #1", q0, q1, i8, 24); 5110 TESTINSN_un("vshl.i8 q5, q2, #1", q5, q2, i32, (1 << 30)); 5111 TESTINSN_un("vshl.i8 q9, q12, #2", q9, q12, i32, (1 << 31) + 2); 5112 TESTINSN_un("vshl.i8 q11, q2, #7", q11, q2, i8, -1); 5113 TESTINSN_un("vshl.i8 q15, q12, #3", q15, q12, i8, 5); 5114 TESTINSN_un("vshl.i8 q5, q12, #6", q5, q12, i32, (1 << 31) + 1); 5115 5116 printf("---- VNEG ----\n"); 5117 TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0x73); 5118 TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0x73); 5119 TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0x73); 5120 TESTINSN_un("vneg.s32 q0, q1", q0, q1, i32, 0xfe); 5121 TESTINSN_un("vneg.s16 q15, q4", q15, q4, i32, 0xef); 5122 TESTINSN_un("vneg.s8 q8, q7", q8, q7, i32, 0xde); 5123 TESTINSN_un("vneg.s32 q0, q1", q0, q1, i16, 0xfe0a); 5124 TESTINSN_un("vneg.s16 q15, q4", q15, q4, i16, 0xef0b); 5125 TESTINSN_un("vneg.s8 q8, q7", q8, q7, i16, 0xde0c); 5126 5127 printf("---- VQNEG ----\n"); 5128 TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0x73); 5129 TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 1 << 31); 5130 TESTINSN_un_q("vqneg.s16 q0, q1", q0, q1, i32, 1 << 31); 5131 TESTINSN_un_q("vqneg.s8 q0, q1", q0, q1, i32, 1 << 31); 5132 TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0x73); 5133 TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0x73); 5134 TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i32, 0xfe); 5135 TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i32, 0xef); 5136 TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i32, 0xde); 5137 TESTINSN_un_q("vqneg.s32 q0, q1", q0, q1, i16, 0xfe0a); 5138 TESTINSN_un_q("vqneg.s16 q15, q4", q15, q4, i16, 0xef0b); 5139 TESTINSN_un_q("vqneg.s8 q8, q7", q8, q7, i16, 0xde0c); 5140 5141 printf("---- VREV ----\n"); 5142 TESTINSN_un("vrev64.8 q0, q1", q0, q1, i32, 0xaabbccdd); 5143 TESTINSN_un("vrev64.16 q10, q15", q10, q15, i32, 0xaabbccdd); 5144 TESTINSN_un("vrev64.32 q1, q14", q1, q14, i32, 0xaabbccdd); 5145 TESTINSN_un("vrev32.8 q0, q1", q0, q1, i32, 0xaabbccdd); 5146 TESTINSN_un("vrev32.16 q10, q15", q10, q15, i32, 0xaabbccdd); 5147 TESTINSN_un("vrev16.8 q0, q1", q0, q1, i32, 0xaabbccdd); 5148 5149 printf("---- VSHLL ----\n"); 5150 TESTINSN_un("vshll.s32 q0, d1, #1", q0, d1, i32, 24); 5151 TESTINSN_un("vshll.s32 q5, d2, #1", q5, d2, i32, (1 << 30)); 5152 TESTINSN_un("vshll.s32 q9, d12, #2", q9, d12, i32, (1 << 31) + 2); 5153 TESTINSN_un("vshll.u32 q11, d2, #12", q11, d2, i32, -1); 5154 TESTINSN_un("vshll.u32 q15, d12, #20", q15, d12, i32, 5); 5155 TESTINSN_un("vshll.u32 q5, d22, #30", q5, d22, i32, (1 << 31) + 1); 5156 TESTINSN_un("vshll.s16 q0, d1, #1", q0, d1, i16, 24); 5157 TESTINSN_un("vshll.s16 q5, d2, #1", q5, d2, i32, (1 << 30)); 5158 TESTINSN_un("vshll.s16 q9, d12, #2", q9, d12, i32, (1 << 31) + 2); 5159 TESTINSN_un("vshll.u16 q11, d2, #12", q11, d2, i16, -1); 5160 TESTINSN_un("vshll.u16 q15, d22, #3", q15, d22, i16, 5); 5161 TESTINSN_un("vshll.u16 q5, d12, #14", q5, d12, i32, (1 << 31) + 1); 5162 TESTINSN_un("vshll.s8 q0, d1, #1", q0, d1, i8, 24); 5163 TESTINSN_un("vshll.s8 q5, d2, #1", q5, d2, i32, (1 << 30)); 5164 TESTINSN_un("vshll.s8 q9, d12, #2", q9, d12, i32, (1 << 31) + 2); 5165 TESTINSN_un("vshll.u8 q11, d2, #7", q11, d2, i8, -1); 5166 TESTINSN_un("vshll.u8 q15, d19, #3", q15, d19, i8, 5); 5167 TESTINSN_un("vshll.u8 q5, d12, #6", q5, d12, i32, (1 << 31) + 1); 5168 5169 printf("---- VSHLL (max shift) ----\n"); 5170 TESTINSN_un("vshll.i32 q0, d1, #32", q0, d1, i32, 24); 5171 TESTINSN_un("vshll.i32 q5, d2, #32", q5, d2, i32, (1 << 30)); 5172 TESTINSN_un("vshll.i32 q11, d2, #32", q11, d2, i32, -1); 5173 TESTINSN_un("vshll.i32 q15, d12, #32", q15, d12, i32, 5); 5174 TESTINSN_un("vshll.i16 q0, d1, #16", q0, d1, i16, 24); 5175 TESTINSN_un("vshll.i16 q5, d2, #16", q5, d2, i32, (1 << 30)); 5176 TESTINSN_un("vshll.i16 q11, d2, #16", q11, d2, i16, -1); 5177 TESTINSN_un("vshll.i16 q15, d22, #16", q15, d22, i16, 5); 5178 TESTINSN_un("vshll.i8 q0, d1, #8", q0, d1, i8, 24); 5179 TESTINSN_un("vshll.i8 q5, d2, #8", q5, d2, i32, (1 << 30)); 5180 TESTINSN_un("vshll.i8 q11, d2, #8", q11, d2, i8, -1); 5181 TESTINSN_un("vshll.i8 q15, d19, #8", q15, d19, i8, 5); 5182 5183 printf("---- VMULL ----\n"); 5184 TESTINSN_bin("vmull.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5185 TESTINSN_bin("vmull.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5186 TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5187 TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5188 TESTINSN_bin("vmull.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5189 TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5190 TESTINSN_bin("vmull.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5191 TESTINSN_bin("vmull.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5192 TESTINSN_bin("vmull.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5193 TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5194 TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5195 TESTINSN_bin("vmull.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5196 TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5197 TESTINSN_bin("vmull.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5198 TESTINSN_bin("vmull.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5199 TESTINSN_bin("vmull.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5200 TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5201 TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5202 TESTINSN_bin("vmull.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5203 TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5204 TESTINSN_bin("vmull.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5205 TESTINSN_bin("vmull.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5206 TESTINSN_bin("vmull.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5207 TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5208 TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5209 TESTINSN_bin("vmull.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5210 TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5211 TESTINSN_bin("vmull.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5212 TESTINSN_bin("vmull.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 5213 TESTINSN_bin("vmull.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 5214 TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5215 TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 5216 TESTINSN_bin("vmull.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5217 TESTINSN_bin("vmull.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 5218 TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5219 TESTINSN_bin("vmull.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 5220 TESTINSN_bin("vmull.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 5221 TESTINSN_bin("vmull.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 5222 TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5223 TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 5224 TESTINSN_bin("vmull.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5225 TESTINSN_bin("vmull.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 5226 TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5227 TESTINSN_bin("vmull.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 5228 TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x1a4b0c, d12, i32, 0xd1e2f0); 5229 TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5230 TESTINSN_bin("vmull.p8 q4, d15, d26", q4, d15, i32, (1 << 14) - 0xabcd, d26, i32, (1 << 13) + 0xaa2); 5231 TESTINSN_bin("vmull.p8 q14, d5, d6", q14, d5, i32, (1 << 28) + 0xefe, d6, i32, (1 << 13) + 0x2bbc2d); 5232 TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5233 TESTINSN_bin("vmull.p8 q10, d27, d31", q10, d27, i32, 1 << 31, d31, i32, 1 << 30); 5234 TESTINSN_bin("vmull.p8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5235 TESTINSN_bin("vmull.p8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5236 TESTINSN_bin("vmull.p8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5237 5238 printf("---- VMLAL ----\n"); 5239 TESTINSN_bin("vmlal.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5240 TESTINSN_bin("vmlal.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5241 TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5242 TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5243 TESTINSN_bin("vmlal.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5244 TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5245 TESTINSN_bin("vmlal.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5246 TESTINSN_bin("vmlal.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5247 TESTINSN_bin("vmlal.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5248 TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5249 TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5250 TESTINSN_bin("vmlal.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5251 TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5252 TESTINSN_bin("vmlal.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5253 TESTINSN_bin("vmlal.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5254 TESTINSN_bin("vmlal.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5255 TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5256 TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5257 TESTINSN_bin("vmlal.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5258 TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5259 TESTINSN_bin("vmlal.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5260 TESTINSN_bin("vmlal.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5261 TESTINSN_bin("vmlal.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5262 TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5263 TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5264 TESTINSN_bin("vmlal.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5265 TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5266 TESTINSN_bin("vmlal.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5267 TESTINSN_bin("vmlal.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 5268 TESTINSN_bin("vmlal.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 5269 TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5270 TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 5271 TESTINSN_bin("vmlal.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5272 TESTINSN_bin("vmlal.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 5273 TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5274 TESTINSN_bin("vmlal.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 5275 TESTINSN_bin("vmlal.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 5276 TESTINSN_bin("vmlal.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 5277 TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5278 TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 5279 TESTINSN_bin("vmlal.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5280 TESTINSN_bin("vmlal.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 5281 TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5282 TESTINSN_bin("vmlal.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 5283 5284 printf("---- VMLSL ----\n"); 5285 TESTINSN_bin("vmlsl.s8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5286 TESTINSN_bin("vmlsl.s8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5287 TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5288 TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5289 TESTINSN_bin("vmlsl.s8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5290 TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5291 TESTINSN_bin("vmlsl.s8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5292 TESTINSN_bin("vmlsl.u8 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5293 TESTINSN_bin("vmlsl.u8 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5294 TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5295 TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5296 TESTINSN_bin("vmlsl.u8 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5297 TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5298 TESTINSN_bin("vmlsl.u8 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5299 TESTINSN_bin("vmlsl.s16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5300 TESTINSN_bin("vmlsl.s16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5301 TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5302 TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5303 TESTINSN_bin("vmlsl.s16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5304 TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5305 TESTINSN_bin("vmlsl.s16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5306 TESTINSN_bin("vmlsl.u16 q0, d1, d12", q0, d1, i32, 0xabcd4, d12, i32, 0xcefab1); 5307 TESTINSN_bin("vmlsl.u16 q9, d11, d12", q9, d11, i32, 0x140, d12, i32, 0x120); 5308 TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5309 TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 14) - 0xabcd, d6, i32, (1 << 13) + 0xaa2); 5310 TESTINSN_bin("vmlsl.u16 q4, d5, d6", q4, d5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 0x2bbc2d); 5311 TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5312 TESTINSN_bin("vmlsl.u16 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 30); 5313 TESTINSN_bin("vmlsl.s32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 5314 TESTINSN_bin("vmlsl.s32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 5315 TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5316 TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 5317 TESTINSN_bin("vmlsl.s32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5318 TESTINSN_bin("vmlsl.s32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 5319 TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5320 TESTINSN_bin("vmlsl.s32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 5321 TESTINSN_bin("vmlsl.u32 q0, d1, d2", q0, d1, i32, 0xaabbcc4, d2, i32, 0x1b2c0a); 5322 TESTINSN_bin("vmlsl.u32 q6, d7, d8", q6, d7, i32, 140, d8, i32, -120); 5323 TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5324 TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31), d9, i32, 12); 5325 TESTINSN_bin("vmlsl.u32 q7, d8, d9", q7, d8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5326 TESTINSN_bin("vmlsl.u32 q10, d11, d15", q10, d11, i32, 24, d15, i32, 120); 5327 TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 31, d31, i32, 1 << 31); 5328 TESTINSN_bin("vmlsl.u32 q10, d30, d31", q10, d30, i32, 1 << 30, d31, i32, 1 << 31); 5329 5330 printf("---- VQRDMULH ----\n"); 5331 TESTINSN_bin_q("vqrdmulh.s32 q0, q1, q2", q0, q1, i32, 24, q2, i32, 120); 5332 TESTINSN_bin_q("vqrdmulh.s32 q6, q7, q8", q6, q7, i32, 140, q8, i32, -120); 5333 TESTINSN_bin_q("vqrdmulh.s16 q9, q11, q12", q9, q11, i32, 0x140, q12, i32, 0x120); 5334 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) + 1, q6, i32, (1 << 13) + 2); 5335 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 5336 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 14) - 0xabcd, q6, i32, (1 << 13) + 2); 5337 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31), q9, i32, 12); 5338 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, q6", q4, q5, i32, (1 << 28) + 0xfe, q6, i32, (1 << 13) + 2); 5339 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, q9", q7, q8, i32, (1 << 31) + 1, q9, i32, (1 << 31) + 2); 5340 TESTINSN_bin_q("vqrdmulh.s32 q10, q11, q15", q10, q11, i32, 24, q15, i32, 120); 5341 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 5342 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1); 5343 TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 31); 5344 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, q15", q10, q14, i32, 1 << 30, q15, i32, 1 << 31); 5345 TESTINSN_bin_q("vqrdmulh.s16 q10, q14, q15", q10, q14, i32, 1 << 31, q15, i32, 1 << 30); 5346 5347 printf("---- VQRDMULH (by scalar) ----\n"); 5348 TESTINSN_bin_q("vqrdmulh.s32 q0, q1, d6[0]", q0, q1, i32, 24, d6, i32, 120); 5349 TESTINSN_bin_q("vqrdmulh.s32 q6, q7, d1[1]", q6, q7, i32, 140, d1, i32, -120); 5350 TESTINSN_bin_q("vqrdmulh.s16 q9, q11, d7[0]", q9, q11, i32, 0x140, d7, i32, 0x120); 5351 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[0]", q4, q5, i32, (1 << 14) + 1, d6, i32, (1 << 13) + 2); 5352 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[1]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5353 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[1]", q4, q5, i32, (1 << 14) - 0xabcd, d6, i16, (1 << 13) + 2); 5354 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31), d9, i32, 12); 5355 TESTINSN_bin_q("vqrdmulh.s16 q4, q5, d6[2]", q4, q5, i32, (1 << 28) + 0xfe, d6, i32, (1 << 13) + 2); 5356 TESTINSN_bin_q("vqrdmulh.s32 q7, q8, d9[0]", q7, q8, i32, (1 << 31) + 1, d9, i32, (1 << 31) + 2); 5357 TESTINSN_bin_q("vqrdmulh.s32 q10, q11, d15[0]", q10, q11, i32, 24, d15, i32, 120); 5358 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 31); 5359 TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[3]", q10, q14, i32, 1 << 31, q15, i32, (1 << 31) + 1); 5360 TESTINSN_bin_q("vqrdmulh.s32 q10, q14, d15[1]", q10, q14, i32, 1 << 30, d15, i32, 1 << 31); 5361 TESTINSN_bin_q("vqrdmulh.s16 q10, q14, d7[1]", q10, q14, i32, 1 << 31, d7, i32, 1 << 30); 5362 5363 printf("---- VADD (fp) ----\n"); 5364 TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5365 TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5366 TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5367 TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5368 TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5369 TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5370 TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5371 TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5372 TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5373 TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5374 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5375 TESTINSN_bin("vadd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5376 TESTINSN_bin("vadd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5377 TESTINSN_bin("vadd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5378 TESTINSN_bin("vadd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5379 TESTINSN_bin("vadd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5380 TESTINSN_bin("vadd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5381 TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5382 TESTINSN_bin("vadd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5383 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5384 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5385 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5386 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5387 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5388 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5389 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5390 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5391 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5392 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5393 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5394 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5395 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5396 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5397 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5398 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5399 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5400 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5401 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5402 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5403 TESTINSN_bin("vadd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5404 5405 printf("---- VSUB (fp) ----\n"); 5406 TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5407 TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5408 TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5409 TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5410 TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5411 TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(24.89), q5, i32, f2u(1346)); 5412 TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5413 TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5414 TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5415 TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5416 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5417 TESTINSN_bin("vsub.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5418 TESTINSN_bin("vsub.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5419 TESTINSN_bin("vsub.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5420 TESTINSN_bin("vsub.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5421 TESTINSN_bin("vsub.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5422 TESTINSN_bin("vsub.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5423 TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5424 TESTINSN_bin("vsub.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5425 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5426 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5427 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5428 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5429 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5430 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5431 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5432 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5433 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5434 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5435 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5436 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5437 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5438 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5439 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5440 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5441 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5442 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5443 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5444 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5445 TESTINSN_bin("vsub.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5446 5447 printf("---- VABD (fp) ----\n"); 5448 TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5449 TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5450 TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5451 TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5452 TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5453 TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5454 TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5455 TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5456 TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5457 TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5458 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5459 TESTINSN_bin("vabd.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5460 TESTINSN_bin("vabd.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5461 TESTINSN_bin("vabd.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5462 TESTINSN_bin("vabd.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5463 TESTINSN_bin("vabd.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5464 TESTINSN_bin("vabd.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5465 TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5466 TESTINSN_bin("vabd.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5467 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5468 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5469 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5470 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5471 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5472 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5473 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5474 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5475 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5476 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5477 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5478 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5479 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5480 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5481 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5482 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5483 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5484 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5485 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5486 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5487 TESTINSN_bin("vabd.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5488 5489 printf("---- VMUL (fp) ----\n"); 5490 TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5491 TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5492 TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5493 TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5494 TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5495 TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5496 TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5497 TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5498 TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5499 TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5500 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5501 TESTINSN_bin("vmul.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5502 TESTINSN_bin("vmul.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5503 TESTINSN_bin("vmul.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5504 TESTINSN_bin("vmul.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5505 TESTINSN_bin("vmul.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5506 TESTINSN_bin("vmul.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5507 TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5508 TESTINSN_bin("vmul.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5509 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5510 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5511 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5512 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5513 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5514 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5515 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5516 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5517 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5518 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5519 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5520 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5521 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5522 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5523 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5524 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5525 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5526 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5527 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5528 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5529 TESTINSN_bin("vmul.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5530 5531 printf("---- VMLA (fp) ----\n"); 5532 TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5533 TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5534 TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5535 TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5536 TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5537 TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5538 TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5539 TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5540 TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5541 TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5542 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5543 TESTINSN_bin_f("vmla.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5544 TESTINSN_bin_f("vmla.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5545 TESTINSN_bin_f("vmla.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5546 TESTINSN_bin_f("vmla.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5547 TESTINSN_bin_f("vmla.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5548 TESTINSN_bin_f("vmla.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5549 TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5550 TESTINSN_bin_f("vmla.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5551 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5552 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5553 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5554 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5555 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5556 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5557 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5558 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5559 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5560 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5561 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5562 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5563 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5564 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5565 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5566 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5567 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5568 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5569 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5570 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5571 TESTINSN_bin_f("vmla.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5572 5573 printf("---- VMLA (fp by scalar) ----\n"); 5574 TESTINSN_bin_f("vmla.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120)); 5575 TESTINSN_bin_f("vmla.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120)); 5576 TESTINSN_bin_f("vmla.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 5577 TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 5578 TESTINSN_bin_f("vmla.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 5579 TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 5580 TESTINSN_bin_f("vmla.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11)); 5581 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN)); 5582 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0)); 5583 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0)); 5584 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 5585 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 5586 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN)); 5587 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0)); 5588 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0)); 5589 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 5590 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 5591 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 5592 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 5593 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 5594 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 5595 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 5596 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 5597 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 5598 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 5599 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 5600 TESTINSN_bin_f("vmla.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 5601 5602 printf("---- VMLS (fp) ----\n"); 5603 TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5604 TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5605 TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5606 TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5607 TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5608 TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5609 TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5610 TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5611 TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5612 TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5613 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5614 TESTINSN_bin_f("vmls.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5615 TESTINSN_bin_f("vmls.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5616 TESTINSN_bin_f("vmls.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5617 TESTINSN_bin_f("vmls.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5618 TESTINSN_bin_f("vmls.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5619 TESTINSN_bin_f("vmls.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5620 TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5621 TESTINSN_bin_f("vmls.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5622 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5623 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5624 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5625 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5626 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5627 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5628 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5629 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5630 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5631 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5632 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5633 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5634 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5635 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5636 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5637 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5638 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5639 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5640 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5641 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5642 TESTINSN_bin_f("vmls.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5643 5644 printf("---- VMLS (fp by scalar) ----\n"); 5645 TESTINSN_bin_f("vmls.f32 q0, q1, d4[0]", q0, q1, i32, f2u(24), d4, i32, f2u(120)); 5646 TESTINSN_bin_f("vmls.f32 q15, q8, d7[1]", q15, q8, i32, f2u(140), d7, i32, f2u(-120)); 5647 TESTINSN_bin_f("vmls.f32 q4, q8, d15[1]", q4, q8, i32, (1 << 31) + 1, d15, i32, (1 << 31) + 2); 5648 TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31), d1, i16, 12); 5649 TESTINSN_bin_f("vmls.f32 q7, q8, d1[1]", q7, q8, i32, (1 << 31) + 1, d1, i32, (1 << 31) + 2); 5650 TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e22), d1, i32, f2u(1e-19)); 5651 TESTINSN_bin_f("vmls.f32 q7, q8, d1[0]", q7, q8, i32, f2u(1e12), d1, i32, f2u(1e11)); 5652 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(NAN)); 5653 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(1.0)); 5654 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(0.0)); 5655 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(INFINITY)); 5656 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(NAN), d2, i32, f2u(-INFINITY)); 5657 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(NAN)); 5658 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(1.0)); 5659 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(0.0)); 5660 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(INFINITY)); 5661 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(0.0), d2, i32, f2u(-INFINITY)); 5662 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(NAN)); 5663 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(1.0)); 5664 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(0.0)); 5665 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(INFINITY)); 5666 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(INFINITY), d2, i32, f2u(-INFINITY)); 5667 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(NAN)); 5668 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(1.0)); 5669 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(0.0)); 5670 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(INFINITY)); 5671 TESTINSN_bin_f("vmls.f32 q0, q1, d2[0]", q0, q1, i32, f2u(-INFINITY), d2, i32, f2u(-INFINITY)); 5672 5673 printf("---- VCVT (integer <-> fp) ----\n"); 5674 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(3.2)); 5675 TESTINSN_un("vcvt.u32.f32 q10, q11", q10, q11, i32, f2u(3e22)); 5676 TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(3e9)); 5677 TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 5678 TESTINSN_un("vcvt.u32.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 5679 TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 5680 TESTINSN_un("vcvt.u32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 5681 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(3.2)); 5682 TESTINSN_un("vcvt.s32.f32 q10, q11", q10, q11, i32, f2u(3e22)); 5683 TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(3e9)); 5684 TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 5685 TESTINSN_un("vcvt.s32.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 5686 TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 5687 TESTINSN_un("vcvt.s32.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 5688 TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, 7); 5689 TESTINSN_un("vcvt.f32.u32 q10, q11", q10, q11, i32, 1 << 31); 5690 TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) + 1); 5691 TESTINSN_un("vcvt.f32.u32 q0, q1", q0, q1, i32, (1U << 31) - 1); 5692 TESTINSN_un("vcvt.f32.u32 q0, q14", q0, q14, i32, 0x30a0bcef); 5693 TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, 7); 5694 TESTINSN_un("vcvt.f32.s32 q10, q11", q10, q11, i32, 1 << 31); 5695 TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) + 1); 5696 TESTINSN_un("vcvt.f32.s32 q0, q1", q0, q1, i32, (1U << 31) - 1); 5697 TESTINSN_un("vcvt.f32.s32 q0, q14", q0, q14, i32, 0x30a0bcef); 5698 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(NAN)); 5699 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(0.0)); 5700 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 5701 TESTINSN_un("vcvt.u32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 5702 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(NAN)); 5703 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(0.0)); 5704 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 5705 TESTINSN_un("vcvt.s32.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 5706 5707 printf("---- VCVT (fixed <-> fp) ----\n"); 5708 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(3.2)); 5709 TESTINSN_un("vcvt.u32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22)); 5710 TESTINSN_un("vcvt.u32.f32 q15, q4, #32", q15, q4, i32, f2u(3e9)); 5711 TESTINSN_un("vcvt.u32.f32 q15, q4, #7", q15, q4, i32, f2u(-0.5)); 5712 TESTINSN_un("vcvt.u32.f32 q15, q4, #4", q15, q4, i32, f2u(-7.1)); 5713 TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 5714 TESTINSN_un("vcvt.u32.f32 q12, q8, #3", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 5715 TESTINSN_un("vcvt.s32.f32 q0, q1, #5", q0, q1, i32, f2u(3.2)); 5716 TESTINSN_un("vcvt.s32.f32 q10, q11, #1", q10, q11, i32, f2u(3e22)); 5717 TESTINSN_un("vcvt.s32.f32 q15, q4, #8", q15, q4, i32, f2u(3e9)); 5718 TESTINSN_un("vcvt.s32.f32 q15, q4, #2", q15, q4, i32, f2u(-0.5)); 5719 TESTINSN_un("vcvt.s32.f32 q15, q4, #1", q15, q4, i32, f2u(-7.1)); 5720 TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 5721 TESTINSN_un("vcvt.s32.f32 q12, q8, #2", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 5722 TESTINSN_un("vcvt.f32.u32 q0, q1, #5", q0, q1, i32, 7); 5723 TESTINSN_un("vcvt.f32.u32 q10, q11, #9", q10, q11, i32, 1 << 31); 5724 TESTINSN_un("vcvt.f32.u32 q0, q1, #4", q0, q1, i32, (1U << 31) + 1); 5725 TESTINSN_un("vcvt.f32.u32 q0, q1, #6", q0, q1, i32, (1U << 31) - 1); 5726 TESTINSN_un("vcvt.f32.u32 q0, q14, #5", q0, q14, i32, 0x30a0bcef); 5727 TESTINSN_un("vcvt.f32.s32 q0, q1, #12", q0, q1, i32, 7); 5728 TESTINSN_un("vcvt.f32.s32 q10, q11, #8", q10, q11, i32, 1 << 31); 5729 TESTINSN_un("vcvt.f32.s32 q0, q1, #2", q0, q1, i32, (1U << 31) + 1); 5730 TESTINSN_un("vcvt.f32.s32 q0, q1, #1", q0, q1, i32, (1U << 31) - 1); 5731 TESTINSN_un("vcvt.f32.s32 q0, q14, #6", q0, q14, i32, 0x30a0bcef); 5732 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN)); 5733 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0)); 5734 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY)); 5735 TESTINSN_un("vcvt.u32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY)); 5736 TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(NAN)); 5737 TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(0.0)); 5738 TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(INFINITY)); 5739 TESTINSN_un("vcvt.s32.f32 q0, q1, #3", q0, q1, i32, f2u(-INFINITY)); 5740 5741 printf("---- VMAX (fp) ----\n"); 5742 TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5743 TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5744 TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5745 TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5746 TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5747 TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5748 TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5749 TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5750 TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5751 TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5752 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5753 TESTINSN_bin("vmax.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5754 TESTINSN_bin("vmax.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5755 TESTINSN_bin("vmax.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5756 TESTINSN_bin("vmax.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5757 TESTINSN_bin("vmax.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5758 TESTINSN_bin("vmax.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5759 TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5760 TESTINSN_bin("vmax.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5761 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5762 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 5763 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 5764 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 5765 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 5766 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 5767 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 5768 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5769 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5770 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5771 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5772 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5773 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5774 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5775 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5776 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5777 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5778 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5779 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5780 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5781 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5782 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5783 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5784 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5785 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5786 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5787 TESTINSN_bin("vmax.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5788 5789 printf("---- VMIN (fp) ----\n"); 5790 TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5791 TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5792 TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5793 TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5794 TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5795 TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5796 TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5797 TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5798 TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5799 TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5800 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5801 TESTINSN_bin("vmin.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5802 TESTINSN_bin("vmin.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5803 TESTINSN_bin("vmin.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5804 TESTINSN_bin("vmin.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5805 TESTINSN_bin("vmin.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5806 TESTINSN_bin("vmin.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5807 TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5808 TESTINSN_bin("vmin.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5809 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5810 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 5811 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 5812 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 5813 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 5814 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 5815 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 5816 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5817 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5818 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5819 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5820 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5821 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5822 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5823 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5824 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5825 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5826 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5827 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5828 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5829 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5830 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5831 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5832 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5833 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5834 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5835 TESTINSN_bin("vmin.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5836 5837 printf("---- VRECPE ----\n"); 5838 TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2)); 5839 TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22)); 5840 TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9)); 5841 TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-0.5)); 5842 TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(-7.1)); 5843 TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 5844 TESTINSN_un("vrecpe.u32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 5845 TESTINSN_un("vrecpe.u32 q0, q1", q0, q1, i32, f2u(3.2)); 5846 TESTINSN_un("vrecpe.u32 q10, q11", q10, q11, i32, f2u(3e22)); 5847 TESTINSN_un("vrecpe.u32 q15, q4", q15, q4, i32, f2u(3e9)); 5848 TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 5849 TESTINSN_un("vrecpe.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 5850 TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 5851 TESTINSN_un("vrecpe.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 5852 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7); 5853 TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31); 5854 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 5855 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 5856 TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 5857 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, 7); 5858 TESTINSN_un("vrecpe.f32 q10, q11", q10, q11, i32, 1 << 31); 5859 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 5860 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 5861 TESTINSN_un("vrecpe.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 5862 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN)); 5863 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0)); 5864 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 5865 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 5866 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(NAN)); 5867 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(0.0)); 5868 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 5869 TESTINSN_un("vrecpe.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 5870 5871 printf("---- VRECPS ----\n"); 5872 TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5873 TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5874 TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5875 TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5876 TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5877 TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5878 TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5879 TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5880 TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5881 TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5882 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5883 TESTINSN_bin("vrecps.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5884 TESTINSN_bin("vrecps.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5885 TESTINSN_bin("vrecps.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5886 TESTINSN_bin("vrecps.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5887 TESTINSN_bin("vrecps.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5888 TESTINSN_bin("vrecps.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5889 TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5890 TESTINSN_bin("vrecps.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5891 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5892 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5893 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5894 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5895 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5896 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5897 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5898 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5899 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5900 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5901 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5902 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5903 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5904 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5905 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5906 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5907 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5908 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5909 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5910 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5911 TESTINSN_bin("vrecps.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5912 5913 printf("---- VABS (fp) ----\n"); 5914 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2)); 5915 TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22)); 5916 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9)); 5917 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 5918 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 5919 TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 5920 TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 5921 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(3.2)); 5922 TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, f2u(3e22)); 5923 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(3e9)); 5924 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 5925 TESTINSN_un("vabs.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 5926 TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 5927 TESTINSN_un("vabs.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 5928 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7); 5929 TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31); 5930 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 5931 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 5932 TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 5933 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, 7); 5934 TESTINSN_un("vabs.f32 q10, q11", q10, q11, i32, 1 << 31); 5935 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 5936 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 5937 TESTINSN_un("vabs.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 5938 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN)); 5939 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0)); 5940 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 5941 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 5942 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(NAN)); 5943 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(0.0)); 5944 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 5945 TESTINSN_un("vabs.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 5946 5947 printf("---- VCGT (fp) ----\n"); 5948 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 5949 TESTINSN_bin("vcgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 5950 TESTINSN_bin("vcgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 5951 TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 5952 TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 5953 TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 5954 TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 5955 TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 5956 TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 5957 TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 5958 TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 5959 TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 5960 TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 5961 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 5962 TESTINSN_bin("vcgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 5963 TESTINSN_bin("vcgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 5964 TESTINSN_bin("vcgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 5965 TESTINSN_bin("vcgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 5966 TESTINSN_bin("vcgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 5967 TESTINSN_bin("vcgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 5968 TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 5969 TESTINSN_bin("vcgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 5970 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 5971 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 5972 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 5973 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 5974 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 5975 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 5976 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 5977 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 5978 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 5979 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 5980 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 5981 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 5982 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 5983 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 5984 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 5985 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 5986 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 5987 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 5988 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 5989 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 5990 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 5991 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 5992 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 5993 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 5994 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 5995 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 5996 TESTINSN_bin("vcgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 5997 5998 printf("---- VCGE (fp) ----\n"); 5999 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 6000 TESTINSN_bin("vcge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 6001 TESTINSN_bin("vcge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 6002 TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 6003 TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 6004 TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 6005 TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 6006 TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 6007 TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 6008 TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 6009 TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 6010 TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 6011 TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 6012 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 6013 TESTINSN_bin("vcge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 6014 TESTINSN_bin("vcge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 6015 TESTINSN_bin("vcge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 6016 TESTINSN_bin("vcge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 6017 TESTINSN_bin("vcge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 6018 TESTINSN_bin("vcge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 6019 TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 6020 TESTINSN_bin("vcge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 6021 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 6022 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 6023 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 6024 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 6025 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 6026 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 6027 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 6028 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 6029 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 6030 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 6031 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 6032 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 6033 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 6034 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 6035 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 6036 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 6037 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 6038 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 6039 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 6040 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 6041 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 6042 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 6043 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 6044 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 6045 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 6046 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 6047 TESTINSN_bin("vcge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 6048 6049 printf("---- VACGT (fp) ----\n"); 6050 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 6051 TESTINSN_bin("vacgt.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 6052 TESTINSN_bin("vacgt.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 6053 TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 6054 TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 6055 TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 6056 TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 6057 TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 6058 TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 6059 TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 6060 TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 6061 TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 6062 TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 6063 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 6064 TESTINSN_bin("vacgt.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 6065 TESTINSN_bin("vacgt.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 6066 TESTINSN_bin("vacgt.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 6067 TESTINSN_bin("vacgt.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 6068 TESTINSN_bin("vacgt.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 6069 TESTINSN_bin("vacgt.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 6070 TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 6071 TESTINSN_bin("vacgt.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 6072 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 6073 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 6074 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 6075 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 6076 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 6077 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 6078 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 6079 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 6080 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 6081 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 6082 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 6083 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 6084 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 6085 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 6086 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 6087 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 6088 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 6089 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 6090 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 6091 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 6092 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 6093 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 6094 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 6095 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 6096 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 6097 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 6098 TESTINSN_bin("vacgt.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 6099 6100 printf("---- VACGE (fp) ----\n"); 6101 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 6102 TESTINSN_bin("vacge.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 6103 TESTINSN_bin("vacge.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 6104 TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 6105 TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 6106 TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 6107 TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 6108 TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 6109 TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 6110 TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 6111 TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 6112 TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 6113 TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 6114 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 6115 TESTINSN_bin("vacge.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 6116 TESTINSN_bin("vacge.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 6117 TESTINSN_bin("vacge.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 6118 TESTINSN_bin("vacge.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 6119 TESTINSN_bin("vacge.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 6120 TESTINSN_bin("vacge.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 6121 TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 6122 TESTINSN_bin("vacge.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 6123 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 6124 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 6125 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 6126 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 6127 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 6128 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 6129 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 6130 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 6131 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 6132 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 6133 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 6134 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 6135 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 6136 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 6137 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 6138 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 6139 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 6140 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 6141 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 6142 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 6143 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 6144 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 6145 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 6146 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 6147 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 6148 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 6149 TESTINSN_bin("vacge.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 6150 6151 printf("---- VCEQ (fp) ----\n"); 6152 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.5), q2, i32, f2u(-0.5)); 6153 TESTINSN_bin("vceq.f32 q2, q15, q12", q2, q15, i32, f2u(-0.53), q12, i32, f2u(0.52)); 6154 TESTINSN_bin("vceq.f32 q15, q7, q8", q15, q7, i32, f2u(231.45), q7, i32, f2u(231.45)); 6155 TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 6156 TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 6157 TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 6158 TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 6159 TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 6160 TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 6161 TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 6162 TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 6163 TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 6164 TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 6165 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 6166 TESTINSN_bin("vceq.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 6167 TESTINSN_bin("vceq.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 6168 TESTINSN_bin("vceq.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 6169 TESTINSN_bin("vceq.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 6170 TESTINSN_bin("vceq.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 6171 TESTINSN_bin("vceq.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 6172 TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 6173 TESTINSN_bin("vceq.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 6174 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 6175 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0), q2, i32, f2u(0)); 6176 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(1.0/1024.0), q2, i32, f2u(-1.0/1024.0)); 6177 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-1.0/1024.0), q2, i32, f2u(1.0/1024.0)); 6178 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(2342+1.0/1024.0), q2, i32, f2u(2342-1.0/1024.0)); 6179 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-2342+1.0/1024.0), q2, i32, f2u(-2342-1.0/1024.0)); 6180 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(89276+1.0/1024.0), q2, i32, f2u(89276+1.0/1024.0)); 6181 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 6182 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 6183 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 6184 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 6185 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 6186 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 6187 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 6188 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 6189 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 6190 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 6191 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 6192 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 6193 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 6194 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 6195 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 6196 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 6197 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 6198 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 6199 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 6200 TESTINSN_bin("vceq.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 6201 6202 printf("---- VCEQ (fp) #0 ----\n"); 6203 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 6204 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, 0x1); 6205 TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 6206 TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 6207 TESTINSN_un("vceq.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 6208 TESTINSN_un("vceq.f32 q10, q15, #0", q10, q15, i32, 0x0); 6209 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 6210 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 6211 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 6212 TESTINSN_un("vceq.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 6213 6214 printf("---- VCGT (fp) #0 ----\n"); 6215 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 6216 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, 0x1); 6217 TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 6218 TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 6219 TESTINSN_un("vcgt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 6220 TESTINSN_un("vcgt.f32 q10, q15, #0", q10, q15, i32, 0x0); 6221 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 6222 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 6223 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 6224 TESTINSN_un("vcgt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 6225 6226 printf("---- VCLT (fp) #0 ----\n"); 6227 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 6228 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, 0x1); 6229 TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 6230 TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 6231 TESTINSN_un("vclt.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 6232 TESTINSN_un("vclt.f32 q10, q15, #0", q10, q15, i32, 0x0); 6233 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 6234 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 6235 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 6236 TESTINSN_un("vclt.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 6237 6238 printf("---- VCGE (fp) #0 ----\n"); 6239 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 6240 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, 0x1); 6241 TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 6242 TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 6243 TESTINSN_un("vcge.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 6244 TESTINSN_un("vcge.f32 q10, q15, #0", q10, q15, i32, 0x0); 6245 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 6246 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 6247 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 6248 TESTINSN_un("vcge.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 6249 6250 printf("---- VCLE (fp) #0 ----\n"); 6251 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x01000000); 6252 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, 0x1); 6253 TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, 1 << 31); 6254 TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(23.04)); 6255 TESTINSN_un("vcle.f32 q2, q1, #0", q2, q1, i32, f2u(-23.04)); 6256 TESTINSN_un("vcle.f32 q10, q15, #0", q10, q15, i32, 0x0); 6257 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(NAN)); 6258 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(0.0)); 6259 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(INFINITY)); 6260 TESTINSN_un("vcle.f32 q0, q1, #0", q0, q1, i32, f2u(-INFINITY)); 6261 6262 printf("---- VNEG (fp) ----\n"); 6263 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x01000000); 6264 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, 0x1); 6265 TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, 1 << 31); 6266 TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(23.04)); 6267 TESTINSN_un("vneg.f32 q2, q1", q2, q1, i32, f2u(-23.04)); 6268 TESTINSN_un("vneg.f32 q10, q15", q10, q15, i32, 0x0); 6269 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(NAN)); 6270 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(0.0)); 6271 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 6272 TESTINSN_un("vneg.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 6273 6274 printf("---- VRSQRTS ----\n"); 6275 TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(23.04), q2, i32, f2u(-45.5687)); 6276 TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(-347856.475), q5, i32, f2u(1346)); 6277 TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(-45786.476)); 6278 TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(95867.76), q7, i32, f2u(17065)); 6279 TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(-45667.24), q2, i32, f2u(-248562.76)); 6280 TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(24), q5, i32, f2u(1346)); 6281 TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(48755), q2, i32, f2u(1089)); 6282 TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(214), q7, i32, f2u(1752065)); 6283 TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(356047.56), q12, i32, f2u(5867.009)); 6284 TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(34.00046), q6, i32, f2u(0.0024575)); 6285 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(2754), q2, i32, f2u(107)); 6286 TESTINSN_bin("vrsqrts.f32 q3, q4, q5", q3, q4, i32, f2u(874), q5, i32, f2u(1384.6)); 6287 TESTINSN_bin("vrsqrts.f32 q10, q11, q2", q10, q11, i32, f2u(487.587), q2, i32, f2u(109)); 6288 TESTINSN_bin("vrsqrts.f32 q9, q5, q7", q9, q5, i32, f2u(2146), q7, i32, f2u(1752)); 6289 TESTINSN_bin("vrsqrts.f32 q0, q11, q12", q0, q11, i32, f2u(-56.25), q12, i32, f2u(-5786.47)); 6290 TESTINSN_bin("vrsqrts.f32 q7, q1, q6", q7, q1, i32, f2u(456.2489562), q6, i32, f2u(-7.2945676)); 6291 TESTINSN_bin("vrsqrts.f32 q0, q5, q2", q0, q5, i32, f2u(532.987), q2, i32, f2u(-0.0045876)); 6292 TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(-485.2457), q15, i32, f2u(-567.245)); 6293 TESTINSN_bin("vrsqrts.f32 q10, q13, q15", q10, q13, i32, f2u(278456.45), q15, i32, f2u(8756.0076)); 6294 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(876988654), q2, i32, f2u(1224808797)); 6295 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(NAN)); 6296 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(1.0)); 6297 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(0.0)); 6298 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(INFINITY)); 6299 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(NAN), q2, i32, f2u(-INFINITY)); 6300 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(NAN)); 6301 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(1.0)); 6302 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(0.0)); 6303 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(INFINITY)); 6304 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(0.0), q2, i32, f2u(-INFINITY)); 6305 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(NAN)); 6306 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(1.0)); 6307 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(0.0)); 6308 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(INFINITY)); 6309 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(INFINITY), q2, i32, f2u(-INFINITY)); 6310 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(NAN)); 6311 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(1.0)); 6312 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(0.0)); 6313 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(INFINITY)); 6314 TESTINSN_bin("vrsqrts.f32 q0, q1, q2", q0, q1, i32, f2u(-INFINITY), q2, i32, f2u(-INFINITY)); 6315 6316 printf("---- VRSQRTE (fp) ----\n"); 6317 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2)); 6318 TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22)); 6319 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9)); 6320 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 6321 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 6322 TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 6323 TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 6324 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(3.2)); 6325 TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, f2u(3e22)); 6326 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(3e9)); 6327 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-0.5)); 6328 TESTINSN_un("vrsqrte.f32 q15, q4", q15, q4, i32, f2u(-7.1)); 6329 TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(8.0 - 1.0/1024.0)); 6330 TESTINSN_un("vrsqrte.f32 q12, q8", q12, q8, i32, f2u(-8.0 + 1.0/1024.0)); 6331 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7); 6332 TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31); 6333 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 6334 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 6335 TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 6336 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, 7); 6337 TESTINSN_un("vrsqrte.f32 q10, q11", q10, q11, i32, 1 << 31); 6338 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) + 1); 6339 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, (1U << 31) - 1); 6340 TESTINSN_un("vrsqrte.f32 q0, q14", q0, q14, i32, 0x30a0bcef); 6341 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(NAN)); 6342 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(0.0)); 6343 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(INFINITY)); 6344 TESTINSN_un("vrsqrte.f32 q0, q1", q0, q1, i32, f2u(-INFINITY)); 6345 6346 return 0; 6347} 6348