Lines Matching refs:X64

4 …riple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefixes=SSE,SSE2,X64-SSE,X64-SSE2
5 …-mattr=+sse4.2,-slow-pmulld | FileCheck %s --check-prefixes=SSE,SSE4,X64-SSE,X64-SSE4,X64-SSE4-FAST
6 …-mattr=+sse4.2,+slow-pmulld | FileCheck %s --check-prefixes=SSE,SSE4,X64-SSE,X64-SSE4,X64-SSE4-SLOW
7 …c < %s -mtriple=x86_64-unknown-unknown -mattr=+xop | FileCheck %s --check-prefixes=X64-AVX,X64-XOP
8 … < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=X64-AVX,X64-AVX2
9 …_64-unknown-unknown -mattr=+avx512dq,+avx512vl | FileCheck %s --check-prefixes=X64-AVX,X64-AVX512DQ
21 ; X64-AVX-LABEL: mul_v2i64_8:
22 ; X64-AVX: # %bb.0:
23 ; X64-AVX-NEXT: vpsllq $3, %xmm0, %xmm0
24 ; X64-AVX-NEXT: retq
35 ; X64-AVX-LABEL: mul_v4i32_8:
36 ; X64-AVX: # %bb.0:
37 ; X64-AVX-NEXT: vpslld $3, %xmm0, %xmm0
38 ; X64-AVX-NEXT: retq
49 ; X64-AVX-LABEL: mul_v8i16_8:
50 ; X64-AVX: # %bb.0:
51 ; X64-AVX-NEXT: vpsllw $3, %xmm0, %xmm0
52 ; X64-AVX-NEXT: retq
64 ; X64-SSE-LABEL: mul_v16i8_32:
65 ; X64-SSE: # %bb.0:
66 ; X64-SSE-NEXT: psllw $5, %xmm0
67 ; X64-SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
68 ; X64-SSE-NEXT: retq
70 ; X64-XOP-LABEL: mul_v16i8_32:
71 ; X64-XOP: # %bb.0:
72 ; X64-XOP-NEXT: vpshlb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
73 ; X64-XOP-NEXT: retq
75 ; X64-AVX2-LABEL: mul_v16i8_32:
76 ; X64-AVX2: # %bb.0:
77 ; X64-AVX2-NEXT: vpsllw $5, %xmm0, %xmm0
78 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
79 ; X64-AVX2-NEXT: retq
81 ; X64-AVX512DQ-LABEL: mul_v16i8_32:
82 ; X64-AVX512DQ: # %bb.0:
83 ; X64-AVX512DQ-NEXT: vpsllw $5, %xmm0, %xmm0
84 ; X64-AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
85 ; X64-AVX512DQ-NEXT: retq
111 ; X64-XOP-LABEL: mul_v2i64_32_8:
112 ; X64-XOP: # %bb.0:
113 ; X64-XOP-NEXT: vpshlq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
114 ; X64-XOP-NEXT: retq
116 ; X64-AVX2-LABEL: mul_v2i64_32_8:
117 ; X64-AVX2: # %bb.0:
118 ; X64-AVX2-NEXT: vpsllvq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
119 ; X64-AVX2-NEXT: retq
121 ; X64-AVX512DQ-LABEL: mul_v2i64_32_8:
122 ; X64-AVX512DQ: # %bb.0:
123 ; X64-AVX512DQ-NEXT: vpsllvq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
124 ; X64-AVX512DQ-NEXT: retq
145 ; X64-SSE2-LABEL: mul_v4i32_1_2_4_8:
146 ; X64-SSE2: # %bb.0:
147 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
148 ; X64-SSE2-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
149 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
150 ; X64-SSE2-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
151 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
152 ; X64-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
153 ; X64-SSE2-NEXT: retq
155 ; X64-SSE4-LABEL: mul_v4i32_1_2_4_8:
156 ; X64-SSE4: # %bb.0:
157 ; X64-SSE4-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
158 ; X64-SSE4-NEXT: retq
160 ; X64-XOP-LABEL: mul_v4i32_1_2_4_8:
161 ; X64-XOP: # %bb.0:
162 ; X64-XOP-NEXT: vpshld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
163 ; X64-XOP-NEXT: retq
165 ; X64-AVX2-LABEL: mul_v4i32_1_2_4_8:
166 ; X64-AVX2: # %bb.0:
167 ; X64-AVX2-NEXT: vpsllvd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
168 ; X64-AVX2-NEXT: retq
170 ; X64-AVX512DQ-LABEL: mul_v4i32_1_2_4_8:
171 ; X64-AVX512DQ: # %bb.0:
172 ; X64-AVX512DQ-NEXT: vpsllvd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
173 ; X64-AVX512DQ-NEXT: retq
196 ; X64-SSE4-LABEL: mul_v4i32_1_2_4_8_optsize:
197 ; X64-SSE4: # %bb.0:
198 ; X64-SSE4-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
199 ; X64-SSE4-NEXT: retq
201 ; X64-XOP-LABEL: mul_v4i32_1_2_4_8_optsize:
202 ; X64-XOP: # %bb.0:
203 ; X64-XOP-NEXT: vpshld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
204 ; X64-XOP-NEXT: retq
206 ; X64-AVX2-LABEL: mul_v4i32_1_2_4_8_optsize:
207 ; X64-AVX2: # %bb.0:
208 ; X64-AVX2-NEXT: vpsllvd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
209 ; X64-AVX2-NEXT: retq
211 ; X64-AVX512DQ-LABEL: mul_v4i32_1_2_4_8_optsize:
212 ; X64-AVX512DQ: # %bb.0:
213 ; X64-AVX512DQ-NEXT: vpsllvd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
214 ; X64-AVX512DQ-NEXT: retq
225 ; X64-SSE-LABEL: mul_v8i16_1_2_4_8_16_32_64_128:
226 ; X64-SSE: # %bb.0:
227 ; X64-SSE-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
228 ; X64-SSE-NEXT: retq
230 ; X64-XOP-LABEL: mul_v8i16_1_2_4_8_16_32_64_128:
231 ; X64-XOP: # %bb.0:
232 ; X64-XOP-NEXT: vpshlw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
233 ; X64-XOP-NEXT: retq
235 ; X64-AVX2-LABEL: mul_v8i16_1_2_4_8_16_32_64_128:
236 ; X64-AVX2: # %bb.0:
237 ; X64-AVX2-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
238 ; X64-AVX2-NEXT: retq
240 ; X64-AVX512DQ-LABEL: mul_v8i16_1_2_4_8_16_32_64_128:
241 ; X64-AVX512DQ: # %bb.0:
242 ; X64-AVX512DQ-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
243 ; X64-AVX512DQ-NEXT: retq
277 ; X64-XOP-LABEL: mul_v16i8_1_2_4_8_1_2_4_8_1_2_4_8_1_2_4_8:
278 ; X64-XOP: # %bb.0:
279 ; X64-XOP-NEXT: vpshlb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
280 ; X64-XOP-NEXT: retq
282 ; X64-AVX2-LABEL: mul_v16i8_1_2_4_8_1_2_4_8_1_2_4_8_1_2_4_8:
283 ; X64-AVX2: # %bb.0:
284 ; X64-AVX2-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,x…
285 ; X64-AVX2-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
286 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
287 ; X64-AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
288 ; X64-AVX2-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
289 ; X64-AVX2-NEXT: vzeroupper
290 ; X64-AVX2-NEXT: retq
292 ; X64-AVX512DQ-LABEL: mul_v16i8_1_2_4_8_1_2_4_8_1_2_4_8_1_2_4_8:
293 ; X64-AVX512DQ: # %bb.0:
294 ; X64-AVX512DQ-NEXT: vpmovzxbd {{.*#+}} zmm0 = xmm0[0],zero,zero,zero,xmm0[1],zero,zero,zero,xmm…
295 ; X64-AVX512DQ-NEXT: vpsllvd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm0
296 ; X64-AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0
297 ; X64-AVX512DQ-NEXT: vzeroupper
298 ; X64-AVX512DQ-NEXT: retq
315 ; X64-AVX-LABEL: mul_v2i64_17:
316 ; X64-AVX: # %bb.0:
317 ; X64-AVX-NEXT: vpsllq $4, %xmm0, %xmm1
318 ; X64-AVX-NEXT: vpaddq %xmm0, %xmm1, %xmm0
319 ; X64-AVX-NEXT: retq
337 ; X64-SSE4-FAST-LABEL: mul_v4i32_17:
338 ; X64-SSE4-FAST: # %bb.0:
339 ; X64-SSE4-FAST-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
340 ; X64-SSE4-FAST-NEXT: retq
342 ; X64-SSE4-SLOW-LABEL: mul_v4i32_17:
343 ; X64-SSE4-SLOW: # %bb.0:
344 ; X64-SSE4-SLOW-NEXT: movdqa %xmm0, %xmm1
345 ; X64-SSE4-SLOW-NEXT: pslld $4, %xmm1
346 ; X64-SSE4-SLOW-NEXT: paddd %xmm1, %xmm0
347 ; X64-SSE4-SLOW-NEXT: retq
349 ; X64-XOP-LABEL: mul_v4i32_17:
350 ; X64-XOP: # %bb.0:
351 ; X64-XOP-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
352 ; X64-XOP-NEXT: retq
354 ; X64-AVX2-LABEL: mul_v4i32_17:
355 ; X64-AVX2: # %bb.0:
356 ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [17,17,17,17]
357 ; X64-AVX2-NEXT: vpmulld %xmm1, %xmm0, %xmm0
358 ; X64-AVX2-NEXT: retq
360 ; X64-AVX512DQ-LABEL: mul_v4i32_17:
361 ; X64-AVX512DQ: # %bb.0:
362 ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
363 ; X64-AVX512DQ-NEXT: retq
374 ; X64-SSE-LABEL: mul_v8i16_17:
375 ; X64-SSE: # %bb.0:
376 ; X64-SSE-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
377 ; X64-SSE-NEXT: retq
379 ; X64-AVX-LABEL: mul_v8i16_17:
380 ; X64-AVX: # %bb.0:
381 ; X64-AVX-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
382 ; X64-AVX-NEXT: retq
396 ; X64-SSE-LABEL: mul_v16i8_17:
397 ; X64-SSE: # %bb.0:
398 ; X64-SSE-NEXT: movdqa %xmm0, %xmm1
399 ; X64-SSE-NEXT: psllw $4, %xmm1
400 ; X64-SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
401 ; X64-SSE-NEXT: paddb %xmm1, %xmm0
402 ; X64-SSE-NEXT: retq
404 ; X64-XOP-LABEL: mul_v16i8_17:
405 ; X64-XOP: # %bb.0:
406 ; X64-XOP-NEXT: vpshlb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
407 ; X64-XOP-NEXT: vpaddb %xmm0, %xmm1, %xmm0
408 ; X64-XOP-NEXT: retq
410 ; X64-AVX2-LABEL: mul_v16i8_17:
411 ; X64-AVX2: # %bb.0:
412 ; X64-AVX2-NEXT: vpsllw $4, %xmm0, %xmm1
413 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
414 ; X64-AVX2-NEXT: vpaddb %xmm0, %xmm1, %xmm0
415 ; X64-AVX2-NEXT: retq
417 ; X64-AVX512DQ-LABEL: mul_v16i8_17:
418 ; X64-AVX512DQ: # %bb.0:
419 ; X64-AVX512DQ-NEXT: vpsllw $4, %xmm0, %xmm1
420 ; X64-AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
421 ; X64-AVX512DQ-NEXT: vpaddb %xmm0, %xmm1, %xmm0
422 ; X64-AVX512DQ-NEXT: retq
438 ; X64-XOP-LABEL: mul_v4i64_17:
439 ; X64-XOP: # %bb.0:
440 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm1
441 ; X64-XOP-NEXT: vpsllq $4, %xmm1, %xmm2
442 ; X64-XOP-NEXT: vpaddq %xmm1, %xmm2, %xmm1
443 ; X64-XOP-NEXT: vpsllq $4, %xmm0, %xmm2
444 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
445 ; X64-XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
446 ; X64-XOP-NEXT: retq
448 ; X64-AVX2-LABEL: mul_v4i64_17:
449 ; X64-AVX2: # %bb.0:
450 ; X64-AVX2-NEXT: vpsllq $4, %ymm0, %ymm1
451 ; X64-AVX2-NEXT: vpaddq %ymm0, %ymm1, %ymm0
452 ; X64-AVX2-NEXT: retq
454 ; X64-AVX512DQ-LABEL: mul_v4i64_17:
455 ; X64-AVX512DQ: # %bb.0:
456 ; X64-AVX512DQ-NEXT: vpsllq $4, %ymm0, %ymm1
457 ; X64-AVX512DQ-NEXT: vpaddq %ymm0, %ymm1, %ymm0
458 ; X64-AVX512DQ-NEXT: retq
481 ; X64-SSE4-FAST-LABEL: mul_v8i32_17:
482 ; X64-SSE4-FAST: # %bb.0:
483 ; X64-SSE4-FAST-NEXT: movdqa {{.*#+}} xmm2 = [17,17,17,17]
484 ; X64-SSE4-FAST-NEXT: pmulld %xmm2, %xmm0
485 ; X64-SSE4-FAST-NEXT: pmulld %xmm2, %xmm1
486 ; X64-SSE4-FAST-NEXT: retq
488 ; X64-SSE4-SLOW-LABEL: mul_v8i32_17:
489 ; X64-SSE4-SLOW: # %bb.0:
490 ; X64-SSE4-SLOW-NEXT: movdqa %xmm0, %xmm2
491 ; X64-SSE4-SLOW-NEXT: pslld $4, %xmm2
492 ; X64-SSE4-SLOW-NEXT: paddd %xmm2, %xmm0
493 ; X64-SSE4-SLOW-NEXT: movdqa %xmm1, %xmm2
494 ; X64-SSE4-SLOW-NEXT: pslld $4, %xmm2
495 ; X64-SSE4-SLOW-NEXT: paddd %xmm2, %xmm1
496 ; X64-SSE4-SLOW-NEXT: retq
498 ; X64-XOP-LABEL: mul_v8i32_17:
499 ; X64-XOP: # %bb.0:
500 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm1
501 ; X64-XOP-NEXT: vpslld $4, %xmm1, %xmm2
502 ; X64-XOP-NEXT: vpaddd %xmm1, %xmm2, %xmm1
503 ; X64-XOP-NEXT: vpslld $4, %xmm0, %xmm2
504 ; X64-XOP-NEXT: vpaddd %xmm0, %xmm2, %xmm0
505 ; X64-XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
506 ; X64-XOP-NEXT: retq
508 ; X64-AVX2-LABEL: mul_v8i32_17:
509 ; X64-AVX2: # %bb.0:
510 ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} ymm1 = [17,17,17,17,17,17,17,17]
511 ; X64-AVX2-NEXT: vpmulld %ymm1, %ymm0, %ymm0
512 ; X64-AVX2-NEXT: retq
514 ; X64-AVX512DQ-LABEL: mul_v8i32_17:
515 ; X64-AVX512DQ: # %bb.0:
516 ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0
517 ; X64-AVX512DQ-NEXT: retq
530 ; X64-XOP-LABEL: mul_v16i16_17:
531 ; X64-XOP: # %bb.0:
532 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm1
533 ; X64-XOP-NEXT: vpsllw $4, %xmm1, %xmm2
534 ; X64-XOP-NEXT: vpaddw %xmm1, %xmm2, %xmm1
535 ; X64-XOP-NEXT: vpsllw $4, %xmm0, %xmm2
536 ; X64-XOP-NEXT: vpaddw %xmm0, %xmm2, %xmm0
537 ; X64-XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
538 ; X64-XOP-NEXT: retq
540 ; X64-AVX2-LABEL: mul_v16i16_17:
541 ; X64-AVX2: # %bb.0:
542 ; X64-AVX2-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
543 ; X64-AVX2-NEXT: retq
545 ; X64-AVX512DQ-LABEL: mul_v16i16_17:
546 ; X64-AVX512DQ: # %bb.0:
547 ; X64-AVX512DQ-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
548 ; X64-AVX512DQ-NEXT: retq
567 ; X64-XOP-LABEL: mul_v32i8_17:
568 ; X64-XOP: # %bb.0:
569 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm1
570 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]
571 ; X64-XOP-NEXT: vpshlb %xmm2, %xmm1, %xmm3
572 ; X64-XOP-NEXT: vpaddb %xmm1, %xmm3, %xmm1
573 ; X64-XOP-NEXT: vpshlb %xmm2, %xmm0, %xmm2
574 ; X64-XOP-NEXT: vpaddb %xmm0, %xmm2, %xmm0
575 ; X64-XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
576 ; X64-XOP-NEXT: retq
578 ; X64-AVX2-LABEL: mul_v32i8_17:
579 ; X64-AVX2: # %bb.0:
580 ; X64-AVX2-NEXT: vpsllw $4, %ymm0, %ymm1
581 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
582 ; X64-AVX2-NEXT: vpaddb %ymm0, %ymm1, %ymm0
583 ; X64-AVX2-NEXT: retq
585 ; X64-AVX512DQ-LABEL: mul_v32i8_17:
586 ; X64-AVX512DQ: # %bb.0:
587 ; X64-AVX512DQ-NEXT: vpsllw $4, %ymm0, %ymm1
588 ; X64-AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
589 ; X64-AVX512DQ-NEXT: vpaddb %ymm0, %ymm1, %ymm0
590 ; X64-AVX512DQ-NEXT: retq
609 ; X64-AVX-LABEL: mul_v2i64_neg1025:
610 ; X64-AVX: # %bb.0:
611 ; X64-AVX-NEXT: vpsllq $10, %xmm0, %xmm1
612 ; X64-AVX-NEXT: vpaddq %xmm0, %xmm1, %xmm0
613 ; X64-AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1
614 ; X64-AVX-NEXT: vpsubq %xmm0, %xmm1, %xmm0
615 ; X64-AVX-NEXT: retq
635 ; X64-SSE4-FAST-LABEL: mul_v4i32_neg33:
636 ; X64-SSE4-FAST: # %bb.0:
637 ; X64-SSE4-FAST-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
638 ; X64-SSE4-FAST-NEXT: retq
640 ; X64-SSE4-SLOW-LABEL: mul_v4i32_neg33:
641 ; X64-SSE4-SLOW: # %bb.0:
642 ; X64-SSE4-SLOW-NEXT: movdqa %xmm0, %xmm1
643 ; X64-SSE4-SLOW-NEXT: pslld $5, %xmm1
644 ; X64-SSE4-SLOW-NEXT: paddd %xmm0, %xmm1
645 ; X64-SSE4-SLOW-NEXT: pxor %xmm0, %xmm0
646 ; X64-SSE4-SLOW-NEXT: psubd %xmm1, %xmm0
647 ; X64-SSE4-SLOW-NEXT: retq
649 ; X64-XOP-LABEL: mul_v4i32_neg33:
650 ; X64-XOP: # %bb.0:
651 ; X64-XOP-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
652 ; X64-XOP-NEXT: retq
654 ; X64-AVX2-LABEL: mul_v4i32_neg33:
655 ; X64-AVX2: # %bb.0:
656 ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [4294967263,4294967263,4294967263,4294967263]
657 ; X64-AVX2-NEXT: vpmulld %xmm1, %xmm0, %xmm0
658 ; X64-AVX2-NEXT: retq
660 ; X64-AVX512DQ-LABEL: mul_v4i32_neg33:
661 ; X64-AVX512DQ: # %bb.0:
662 ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
663 ; X64-AVX512DQ-NEXT: retq
674 ; X64-SSE-LABEL: mul_v8i16_neg9:
675 ; X64-SSE: # %bb.0:
676 ; X64-SSE-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
677 ; X64-SSE-NEXT: retq
679 ; X64-AVX-LABEL: mul_v8i16_neg9:
680 ; X64-AVX: # %bb.0:
681 ; X64-AVX-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
682 ; X64-AVX-NEXT: retq
698 ; X64-SSE-LABEL: mul_v16i8_neg5:
699 ; X64-SSE: # %bb.0:
700 ; X64-SSE-NEXT: movdqa %xmm0, %xmm1
701 ; X64-SSE-NEXT: psllw $2, %xmm1
702 ; X64-SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
703 ; X64-SSE-NEXT: paddb %xmm0, %xmm1
704 ; X64-SSE-NEXT: pxor %xmm0, %xmm0
705 ; X64-SSE-NEXT: psubb %xmm1, %xmm0
706 ; X64-SSE-NEXT: retq
708 ; X64-XOP-LABEL: mul_v16i8_neg5:
709 ; X64-XOP: # %bb.0:
710 ; X64-XOP-NEXT: vpshlb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
711 ; X64-XOP-NEXT: vpaddb %xmm0, %xmm1, %xmm0
712 ; X64-XOP-NEXT: vpxor %xmm1, %xmm1, %xmm1
713 ; X64-XOP-NEXT: vpsubb %xmm0, %xmm1, %xmm0
714 ; X64-XOP-NEXT: retq
716 ; X64-AVX2-LABEL: mul_v16i8_neg5:
717 ; X64-AVX2: # %bb.0:
718 ; X64-AVX2-NEXT: vpsllw $2, %xmm0, %xmm1
719 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
720 ; X64-AVX2-NEXT: vpaddb %xmm0, %xmm1, %xmm0
721 ; X64-AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
722 ; X64-AVX2-NEXT: vpsubb %xmm0, %xmm1, %xmm0
723 ; X64-AVX2-NEXT: retq
725 ; X64-AVX512DQ-LABEL: mul_v16i8_neg5:
726 ; X64-AVX512DQ: # %bb.0:
727 ; X64-AVX512DQ-NEXT: vpsllw $2, %xmm0, %xmm1
728 ; X64-AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
729 ; X64-AVX512DQ-NEXT: vpaddb %xmm0, %xmm1, %xmm0
730 ; X64-AVX512DQ-NEXT: vpxor %xmm1, %xmm1, %xmm1
731 ; X64-AVX512DQ-NEXT: vpsubb %xmm0, %xmm1, %xmm0
732 ; X64-AVX512DQ-NEXT: retq
753 ; X64-XOP-LABEL: mul_v4i64_neg1025:
754 ; X64-XOP: # %bb.0:
755 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm1
756 ; X64-XOP-NEXT: vpsllq $10, %xmm1, %xmm2
757 ; X64-XOP-NEXT: vpaddq %xmm1, %xmm2, %xmm1
758 ; X64-XOP-NEXT: vpxor %xmm2, %xmm2, %xmm2
759 ; X64-XOP-NEXT: vpsubq %xmm1, %xmm2, %xmm1
760 ; X64-XOP-NEXT: vpsllq $10, %xmm0, %xmm3
761 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm3, %xmm0
762 ; X64-XOP-NEXT: vpsubq %xmm0, %xmm2, %xmm0
763 ; X64-XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
764 ; X64-XOP-NEXT: retq
766 ; X64-AVX2-LABEL: mul_v4i64_neg1025:
767 ; X64-AVX2: # %bb.0:
768 ; X64-AVX2-NEXT: vpsllq $10, %ymm0, %ymm1
769 ; X64-AVX2-NEXT: vpaddq %ymm0, %ymm1, %ymm0
770 ; X64-AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
771 ; X64-AVX2-NEXT: vpsubq %ymm0, %ymm1, %ymm0
772 ; X64-AVX2-NEXT: retq
774 ; X64-AVX512DQ-LABEL: mul_v4i64_neg1025:
775 ; X64-AVX512DQ: # %bb.0:
776 ; X64-AVX512DQ-NEXT: vpsllq $10, %ymm0, %ymm1
777 ; X64-AVX512DQ-NEXT: vpaddq %ymm0, %ymm1, %ymm0
778 ; X64-AVX512DQ-NEXT: vpxor %xmm1, %xmm1, %xmm1
779 ; X64-AVX512DQ-NEXT: vpsubq %ymm0, %ymm1, %ymm0
780 ; X64-AVX512DQ-NEXT: retq
808 ; X64-SSE4-FAST-LABEL: mul_v8i32_neg33:
809 ; X64-SSE4-FAST: # %bb.0:
810 ; X64-SSE4-FAST-NEXT: movdqa {{.*#+}} xmm2 = [4294967263,4294967263,4294967263,4294967263]
811 ; X64-SSE4-FAST-NEXT: pmulld %xmm2, %xmm0
812 ; X64-SSE4-FAST-NEXT: pmulld %xmm2, %xmm1
813 ; X64-SSE4-FAST-NEXT: retq
815 ; X64-SSE4-SLOW-LABEL: mul_v8i32_neg33:
816 ; X64-SSE4-SLOW: # %bb.0:
817 ; X64-SSE4-SLOW-NEXT: movdqa %xmm0, %xmm3
818 ; X64-SSE4-SLOW-NEXT: pslld $5, %xmm3
819 ; X64-SSE4-SLOW-NEXT: paddd %xmm0, %xmm3
820 ; X64-SSE4-SLOW-NEXT: pxor %xmm2, %xmm2
821 ; X64-SSE4-SLOW-NEXT: pxor %xmm0, %xmm0
822 ; X64-SSE4-SLOW-NEXT: psubd %xmm3, %xmm0
823 ; X64-SSE4-SLOW-NEXT: movdqa %xmm1, %xmm3
824 ; X64-SSE4-SLOW-NEXT: pslld $5, %xmm3
825 ; X64-SSE4-SLOW-NEXT: paddd %xmm1, %xmm3
826 ; X64-SSE4-SLOW-NEXT: psubd %xmm3, %xmm2
827 ; X64-SSE4-SLOW-NEXT: movdqa %xmm2, %xmm1
828 ; X64-SSE4-SLOW-NEXT: retq
830 ; X64-XOP-LABEL: mul_v8i32_neg33:
831 ; X64-XOP: # %bb.0:
832 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm1
833 ; X64-XOP-NEXT: vpslld $5, %xmm1, %xmm2
834 ; X64-XOP-NEXT: vpaddd %xmm1, %xmm2, %xmm1
835 ; X64-XOP-NEXT: vpxor %xmm2, %xmm2, %xmm2
836 ; X64-XOP-NEXT: vpsubd %xmm1, %xmm2, %xmm1
837 ; X64-XOP-NEXT: vpslld $5, %xmm0, %xmm3
838 ; X64-XOP-NEXT: vpaddd %xmm0, %xmm3, %xmm0
839 ; X64-XOP-NEXT: vpsubd %xmm0, %xmm2, %xmm0
840 ; X64-XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
841 ; X64-XOP-NEXT: retq
843 ; X64-AVX2-LABEL: mul_v8i32_neg33:
844 ; X64-AVX2: # %bb.0:
845 ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} ymm1 = [4294967263,4294967263,4294967263,4294967263,42949…
846 ; X64-AVX2-NEXT: vpmulld %ymm1, %ymm0, %ymm0
847 ; X64-AVX2-NEXT: retq
849 ; X64-AVX512DQ-LABEL: mul_v8i32_neg33:
850 ; X64-AVX512DQ: # %bb.0:
851 ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0
852 ; X64-AVX512DQ-NEXT: retq
865 ; X64-XOP-LABEL: mul_v16i16_neg9:
866 ; X64-XOP: # %bb.0:
867 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm1
868 ; X64-XOP-NEXT: vpsllw $3, %xmm1, %xmm2
869 ; X64-XOP-NEXT: vpaddw %xmm1, %xmm2, %xmm1
870 ; X64-XOP-NEXT: vpxor %xmm2, %xmm2, %xmm2
871 ; X64-XOP-NEXT: vpsubw %xmm1, %xmm2, %xmm1
872 ; X64-XOP-NEXT: vpsllw $3, %xmm0, %xmm3
873 ; X64-XOP-NEXT: vpaddw %xmm0, %xmm3, %xmm0
874 ; X64-XOP-NEXT: vpsubw %xmm0, %xmm2, %xmm0
875 ; X64-XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
876 ; X64-XOP-NEXT: retq
878 ; X64-AVX2-LABEL: mul_v16i16_neg9:
879 ; X64-AVX2: # %bb.0:
880 ; X64-AVX2-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
881 ; X64-AVX2-NEXT: retq
883 ; X64-AVX512DQ-LABEL: mul_v16i16_neg9:
884 ; X64-AVX512DQ: # %bb.0:
885 ; X64-AVX512DQ-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
886 ; X64-AVX512DQ-NEXT: retq
910 ; X64-XOP-LABEL: mul_v32i8_neg5:
911 ; X64-XOP: # %bb.0:
912 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm1
913 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2]
914 ; X64-XOP-NEXT: vpshlb %xmm2, %xmm1, %xmm3
915 ; X64-XOP-NEXT: vpaddb %xmm1, %xmm3, %xmm1
916 ; X64-XOP-NEXT: vpxor %xmm3, %xmm3, %xmm3
917 ; X64-XOP-NEXT: vpsubb %xmm1, %xmm3, %xmm1
918 ; X64-XOP-NEXT: vpshlb %xmm2, %xmm0, %xmm2
919 ; X64-XOP-NEXT: vpaddb %xmm0, %xmm2, %xmm0
920 ; X64-XOP-NEXT: vpsubb %xmm0, %xmm3, %xmm0
921 ; X64-XOP-NEXT: vinsertf128 $1, %xmm1, %ymm0, %ymm0
922 ; X64-XOP-NEXT: retq
924 ; X64-AVX2-LABEL: mul_v32i8_neg5:
925 ; X64-AVX2: # %bb.0:
926 ; X64-AVX2-NEXT: vpsllw $2, %ymm0, %ymm1
927 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
928 ; X64-AVX2-NEXT: vpaddb %ymm0, %ymm1, %ymm0
929 ; X64-AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
930 ; X64-AVX2-NEXT: vpsubb %ymm0, %ymm1, %ymm0
931 ; X64-AVX2-NEXT: retq
933 ; X64-AVX512DQ-LABEL: mul_v32i8_neg5:
934 ; X64-AVX512DQ: # %bb.0:
935 ; X64-AVX512DQ-NEXT: vpsllw $2, %ymm0, %ymm1
936 ; X64-AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
937 ; X64-AVX512DQ-NEXT: vpaddb %ymm0, %ymm1, %ymm0
938 ; X64-AVX512DQ-NEXT: vpxor %xmm1, %xmm1, %xmm1
939 ; X64-AVX512DQ-NEXT: vpsubb %ymm0, %ymm1, %ymm0
940 ; X64-AVX512DQ-NEXT: retq
961 ; X64-SSE-LABEL: mul_v2i64_17_65:
962 ; X64-SSE: # %bb.0:
963 ; X64-SSE-NEXT: movdqa {{.*#+}} xmm1 = [17,65]
964 ; X64-SSE-NEXT: movdqa %xmm0, %xmm2
965 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm2
966 ; X64-SSE-NEXT: psrlq $32, %xmm0
967 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm0
968 ; X64-SSE-NEXT: psllq $32, %xmm0
969 ; X64-SSE-NEXT: paddq %xmm2, %xmm0
970 ; X64-SSE-NEXT: retq
972 ; X64-XOP-LABEL: mul_v2i64_17_65:
973 ; X64-XOP: # %bb.0:
974 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm1 = [17,65]
975 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
976 ; X64-XOP-NEXT: vpsrlq $32, %xmm0, %xmm0
977 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
978 ; X64-XOP-NEXT: vpsllq $32, %xmm0, %xmm0
979 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
980 ; X64-XOP-NEXT: retq
982 ; X64-AVX2-LABEL: mul_v2i64_17_65:
983 ; X64-AVX2: # %bb.0:
984 ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [17,65]
985 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
986 ; X64-AVX2-NEXT: vpsrlq $32, %xmm0, %xmm0
987 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
988 ; X64-AVX2-NEXT: vpsllq $32, %xmm0, %xmm0
989 ; X64-AVX2-NEXT: vpaddq %xmm0, %xmm2, %xmm0
990 ; X64-AVX2-NEXT: retq
992 ; X64-AVX512DQ-LABEL: mul_v2i64_17_65:
993 ; X64-AVX512DQ: # %bb.0:
994 ; X64-AVX512DQ-NEXT: vpmullq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
995 ; X64-AVX512DQ-NEXT: retq
1016 ; X64-SSE2-LABEL: mul_v4i32_5_17_33_65:
1017 ; X64-SSE2: # %bb.0:
1018 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
1019 ; X64-SSE2-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1020 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
1021 ; X64-SSE2-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1022 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
1023 ; X64-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1024 ; X64-SSE2-NEXT: retq
1026 ; X64-SSE4-LABEL: mul_v4i32_5_17_33_65:
1027 ; X64-SSE4: # %bb.0:
1028 ; X64-SSE4-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1029 ; X64-SSE4-NEXT: retq
1031 ; X64-AVX-LABEL: mul_v4i32_5_17_33_65:
1032 ; X64-AVX: # %bb.0:
1033 ; X64-AVX-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1034 ; X64-AVX-NEXT: retq
1045 ; X64-SSE-LABEL: mul_v8i16_2_3_9_17_33_65_129_257:
1046 ; X64-SSE: # %bb.0:
1047 ; X64-SSE-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1048 ; X64-SSE-NEXT: retq
1050 ; X64-AVX-LABEL: mul_v8i16_2_3_9_17_33_65_129_257:
1051 ; X64-AVX: # %bb.0:
1052 ; X64-AVX-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1053 ; X64-AVX-NEXT: retq
1085 ; X64-SSE2-LABEL: mul_v16i8_2_3_9_17_33_65_129_2_3_9_17_33_65_129_2_3:
1086 ; X64-SSE2: # %bb.0:
1087 ; X64-SSE2-NEXT: movdqa %xmm0, %xmm1
1088 ; X64-SSE2-NEXT: punpckhbw {{.*#+}} xmm1 = xmm1[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1089 ; X64-SSE2-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1090 ; X64-SSE2-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255,255,255,255,255]
1091 ; X64-SSE2-NEXT: pand %xmm2, %xmm1
1092 ; X64-SSE2-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
1093 ; X64-SSE2-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1094 ; X64-SSE2-NEXT: pand %xmm2, %xmm0
1095 ; X64-SSE2-NEXT: packuswb %xmm1, %xmm0
1096 ; X64-SSE2-NEXT: retq
1098 ; X64-SSE4-LABEL: mul_v16i8_2_3_9_17_33_65_129_2_3_9_17_33_65_129_2_3:
1099 ; X64-SSE4: # %bb.0:
1100 ; X64-SSE4-NEXT: pmovzxbw {{.*#+}} xmm1 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xm…
1101 ; X64-SSE4-NEXT: punpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1102 ; X64-SSE4-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1103 ; X64-SSE4-NEXT: movdqa {{.*#+}} xmm2 = [255,255,255,255,255,255,255,255]
1104 ; X64-SSE4-NEXT: pand %xmm2, %xmm0
1105 ; X64-SSE4-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1106 ; X64-SSE4-NEXT: pand %xmm2, %xmm1
1107 ; X64-SSE4-NEXT: packuswb %xmm0, %xmm1
1108 ; X64-SSE4-NEXT: movdqa %xmm1, %xmm0
1109 ; X64-SSE4-NEXT: retq
1111 ; X64-XOP-LABEL: mul_v16i8_2_3_9_17_33_65_129_2_3_9_17_33_65_129_2_3:
1112 ; X64-XOP: # %bb.0:
1113 ; X64-XOP-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1114 ; X64-XOP-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
1115 ; X64-XOP-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xm…
1116 ; X64-XOP-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1117 ; X64-XOP-NEXT: vpperm {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14],xmm1[0,2,4,6,8,10,12,14]
1118 ; X64-XOP-NEXT: retq
1120 ; X64-AVX2-LABEL: mul_v16i8_2_3_9_17_33_65_129_2_3_9_17_33_65_129_2_3:
1121 ; X64-AVX2: # %bb.0:
1122 ; X64-AVX2-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,x…
1123 ; X64-AVX2-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1124 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1125 ; X64-AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
1126 ; X64-AVX2-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
1127 ; X64-AVX2-NEXT: vzeroupper
1128 ; X64-AVX2-NEXT: retq
1130 ; X64-AVX512DQ-LABEL: mul_v16i8_2_3_9_17_33_65_129_2_3_9_17_33_65_129_2_3:
1131 ; X64-AVX512DQ: # %bb.0:
1132 ; X64-AVX512DQ-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],ze…
1133 ; X64-AVX512DQ-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1134 ; X64-AVX512DQ-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],ze…
1135 ; X64-AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0
1136 ; X64-AVX512DQ-NEXT: vzeroupper
1137 ; X64-AVX512DQ-NEXT: retq
1155 ; X64-AVX-LABEL: mul_v2i64_7:
1156 ; X64-AVX: # %bb.0:
1157 ; X64-AVX-NEXT: vpsllq $3, %xmm0, %xmm1
1158 ; X64-AVX-NEXT: vpsubq %xmm0, %xmm1, %xmm0
1159 ; X64-AVX-NEXT: retq
1178 ; X64-SSE4-FAST-LABEL: mul_v4i32_7:
1179 ; X64-SSE4-FAST: # %bb.0:
1180 ; X64-SSE4-FAST-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1181 ; X64-SSE4-FAST-NEXT: retq
1183 ; X64-SSE4-SLOW-LABEL: mul_v4i32_7:
1184 ; X64-SSE4-SLOW: # %bb.0:
1185 ; X64-SSE4-SLOW-NEXT: movdqa %xmm0, %xmm1
1186 ; X64-SSE4-SLOW-NEXT: pslld $3, %xmm1
1187 ; X64-SSE4-SLOW-NEXT: psubd %xmm0, %xmm1
1188 ; X64-SSE4-SLOW-NEXT: movdqa %xmm1, %xmm0
1189 ; X64-SSE4-SLOW-NEXT: retq
1191 ; X64-XOP-LABEL: mul_v4i32_7:
1192 ; X64-XOP: # %bb.0:
1193 ; X64-XOP-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1194 ; X64-XOP-NEXT: retq
1196 ; X64-AVX2-LABEL: mul_v4i32_7:
1197 ; X64-AVX2: # %bb.0:
1198 ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [7,7,7,7]
1199 ; X64-AVX2-NEXT: vpmulld %xmm1, %xmm0, %xmm0
1200 ; X64-AVX2-NEXT: retq
1202 ; X64-AVX512DQ-LABEL: mul_v4i32_7:
1203 ; X64-AVX512DQ: # %bb.0:
1204 ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
1205 ; X64-AVX512DQ-NEXT: retq
1216 ; X64-SSE-LABEL: mul_v8i16_7:
1217 ; X64-SSE: # %bb.0:
1218 ; X64-SSE-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1219 ; X64-SSE-NEXT: retq
1221 ; X64-AVX-LABEL: mul_v8i16_7:
1222 ; X64-AVX: # %bb.0:
1223 ; X64-AVX-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1224 ; X64-AVX-NEXT: retq
1239 ; X64-SSE-LABEL: mul_v16i8_31:
1240 ; X64-SSE: # %bb.0:
1241 ; X64-SSE-NEXT: movdqa %xmm0, %xmm1
1242 ; X64-SSE-NEXT: psllw $5, %xmm1
1243 ; X64-SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1244 ; X64-SSE-NEXT: psubb %xmm0, %xmm1
1245 ; X64-SSE-NEXT: movdqa %xmm1, %xmm0
1246 ; X64-SSE-NEXT: retq
1248 ; X64-XOP-LABEL: mul_v16i8_31:
1249 ; X64-XOP: # %bb.0:
1250 ; X64-XOP-NEXT: vpshlb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
1251 ; X64-XOP-NEXT: vpsubb %xmm0, %xmm1, %xmm0
1252 ; X64-XOP-NEXT: retq
1254 ; X64-AVX2-LABEL: mul_v16i8_31:
1255 ; X64-AVX2: # %bb.0:
1256 ; X64-AVX2-NEXT: vpsllw $5, %xmm0, %xmm1
1257 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
1258 ; X64-AVX2-NEXT: vpsubb %xmm0, %xmm1, %xmm0
1259 ; X64-AVX2-NEXT: retq
1261 ; X64-AVX512DQ-LABEL: mul_v16i8_31:
1262 ; X64-AVX512DQ: # %bb.0:
1263 ; X64-AVX512DQ-NEXT: vpsllw $5, %xmm0, %xmm1
1264 ; X64-AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
1265 ; X64-AVX512DQ-NEXT: vpsubb %xmm0, %xmm1, %xmm0
1266 ; X64-AVX512DQ-NEXT: retq
1283 ; X64-AVX-LABEL: mul_v2i64_neg7:
1284 ; X64-AVX: # %bb.0:
1285 ; X64-AVX-NEXT: vpsllq $3, %xmm0, %xmm1
1286 ; X64-AVX-NEXT: vpsubq %xmm1, %xmm0, %xmm0
1287 ; X64-AVX-NEXT: retq
1305 ; X64-SSE4-FAST-LABEL: mul_v4i32_neg63:
1306 ; X64-SSE4-FAST: # %bb.0:
1307 ; X64-SSE4-FAST-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1308 ; X64-SSE4-FAST-NEXT: retq
1310 ; X64-SSE4-SLOW-LABEL: mul_v4i32_neg63:
1311 ; X64-SSE4-SLOW: # %bb.0:
1312 ; X64-SSE4-SLOW-NEXT: movdqa %xmm0, %xmm1
1313 ; X64-SSE4-SLOW-NEXT: pslld $6, %xmm1
1314 ; X64-SSE4-SLOW-NEXT: psubd %xmm1, %xmm0
1315 ; X64-SSE4-SLOW-NEXT: retq
1317 ; X64-XOP-LABEL: mul_v4i32_neg63:
1318 ; X64-XOP: # %bb.0:
1319 ; X64-XOP-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1320 ; X64-XOP-NEXT: retq
1322 ; X64-AVX2-LABEL: mul_v4i32_neg63:
1323 ; X64-AVX2: # %bb.0:
1324 ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [4294967233,4294967233,4294967233,4294967233]
1325 ; X64-AVX2-NEXT: vpmulld %xmm1, %xmm0, %xmm0
1326 ; X64-AVX2-NEXT: retq
1328 ; X64-AVX512DQ-LABEL: mul_v4i32_neg63:
1329 ; X64-AVX512DQ: # %bb.0:
1330 ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
1331 ; X64-AVX512DQ-NEXT: retq
1342 ; X64-SSE-LABEL: mul_v8i16_neg31:
1343 ; X64-SSE: # %bb.0:
1344 ; X64-SSE-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1345 ; X64-SSE-NEXT: retq
1347 ; X64-AVX-LABEL: mul_v8i16_neg31:
1348 ; X64-AVX: # %bb.0:
1349 ; X64-AVX-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1350 ; X64-AVX-NEXT: retq
1364 ; X64-SSE-LABEL: mul_v16i8_neg15:
1365 ; X64-SSE: # %bb.0:
1366 ; X64-SSE-NEXT: movdqa %xmm0, %xmm1
1367 ; X64-SSE-NEXT: psllw $4, %xmm1
1368 ; X64-SSE-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1369 ; X64-SSE-NEXT: psubb %xmm1, %xmm0
1370 ; X64-SSE-NEXT: retq
1372 ; X64-XOP-LABEL: mul_v16i8_neg15:
1373 ; X64-XOP: # %bb.0:
1374 ; X64-XOP-NEXT: vpshlb {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
1375 ; X64-XOP-NEXT: vpsubb %xmm1, %xmm0, %xmm0
1376 ; X64-XOP-NEXT: retq
1378 ; X64-AVX2-LABEL: mul_v16i8_neg15:
1379 ; X64-AVX2: # %bb.0:
1380 ; X64-AVX2-NEXT: vpsllw $4, %xmm0, %xmm1
1381 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
1382 ; X64-AVX2-NEXT: vpsubb %xmm1, %xmm0, %xmm0
1383 ; X64-AVX2-NEXT: retq
1385 ; X64-AVX512DQ-LABEL: mul_v16i8_neg15:
1386 ; X64-AVX512DQ: # %bb.0:
1387 ; X64-AVX512DQ-NEXT: vpsllw $4, %xmm0, %xmm1
1388 ; X64-AVX512DQ-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
1389 ; X64-AVX512DQ-NEXT: vpsubb %xmm1, %xmm0, %xmm0
1390 ; X64-AVX512DQ-NEXT: retq
1411 ; X64-SSE-LABEL: mul_v2i64_15_63:
1412 ; X64-SSE: # %bb.0:
1413 ; X64-SSE-NEXT: movdqa {{.*#+}} xmm1 = [15,63]
1414 ; X64-SSE-NEXT: movdqa %xmm0, %xmm2
1415 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm2
1416 ; X64-SSE-NEXT: psrlq $32, %xmm0
1417 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm0
1418 ; X64-SSE-NEXT: psllq $32, %xmm0
1419 ; X64-SSE-NEXT: paddq %xmm2, %xmm0
1420 ; X64-SSE-NEXT: retq
1422 ; X64-XOP-LABEL: mul_v2i64_15_63:
1423 ; X64-XOP: # %bb.0:
1424 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm1 = [15,63]
1425 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1426 ; X64-XOP-NEXT: vpsrlq $32, %xmm0, %xmm0
1427 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
1428 ; X64-XOP-NEXT: vpsllq $32, %xmm0, %xmm0
1429 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1430 ; X64-XOP-NEXT: retq
1432 ; X64-AVX2-LABEL: mul_v2i64_15_63:
1433 ; X64-AVX2: # %bb.0:
1434 ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [15,63]
1435 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1436 ; X64-AVX2-NEXT: vpsrlq $32, %xmm0, %xmm0
1437 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
1438 ; X64-AVX2-NEXT: vpsllq $32, %xmm0, %xmm0
1439 ; X64-AVX2-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1440 ; X64-AVX2-NEXT: retq
1442 ; X64-AVX512DQ-LABEL: mul_v2i64_15_63:
1443 ; X64-AVX512DQ: # %bb.0:
1444 ; X64-AVX512DQ-NEXT: vpmullq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1445 ; X64-AVX512DQ-NEXT: retq
1465 ; X64-SSE-LABEL: mul_v2i64_neg_15_63:
1466 ; X64-SSE: # %bb.0:
1467 ; X64-SSE-NEXT: movdqa {{.*#+}} xmm1 = [18446744073709551601,18446744073709551553]
1468 ; X64-SSE-NEXT: movdqa %xmm0, %xmm2
1469 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm2
1470 ; X64-SSE-NEXT: movdqa %xmm0, %xmm3
1471 ; X64-SSE-NEXT: psrlq $32, %xmm3
1472 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm3
1473 ; X64-SSE-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1474 ; X64-SSE-NEXT: paddq %xmm3, %xmm0
1475 ; X64-SSE-NEXT: psllq $32, %xmm0
1476 ; X64-SSE-NEXT: paddq %xmm2, %xmm0
1477 ; X64-SSE-NEXT: retq
1479 ; X64-XOP-LABEL: mul_v2i64_neg_15_63:
1480 ; X64-XOP: # %bb.0:
1481 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm1 = [18446744073709551601,18446744073709551553]
1482 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1483 ; X64-XOP-NEXT: vpsrlq $32, %xmm0, %xmm3
1484 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm3, %xmm1
1485 ; X64-XOP-NEXT: vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1486 ; X64-XOP-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1487 ; X64-XOP-NEXT: vpsllq $32, %xmm0, %xmm0
1488 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1489 ; X64-XOP-NEXT: retq
1491 ; X64-AVX2-LABEL: mul_v2i64_neg_15_63:
1492 ; X64-AVX2: # %bb.0:
1493 ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [18446744073709551601,18446744073709551553]
1494 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1495 ; X64-AVX2-NEXT: vpsrlq $32, %xmm0, %xmm3
1496 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm3, %xmm1
1497 ; X64-AVX2-NEXT: vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1498 ; X64-AVX2-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1499 ; X64-AVX2-NEXT: vpsllq $32, %xmm0, %xmm0
1500 ; X64-AVX2-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1501 ; X64-AVX2-NEXT: retq
1503 ; X64-AVX512DQ-LABEL: mul_v2i64_neg_15_63:
1504 ; X64-AVX512DQ: # %bb.0:
1505 ; X64-AVX512DQ-NEXT: vpmullq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1506 ; X64-AVX512DQ-NEXT: retq
1526 ; X64-SSE-LABEL: mul_v2i64_neg_17_65:
1527 ; X64-SSE: # %bb.0:
1528 ; X64-SSE-NEXT: movdqa {{.*#+}} xmm1 = [18446744073709551599,18446744073709551551]
1529 ; X64-SSE-NEXT: movdqa %xmm0, %xmm2
1530 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm2
1531 ; X64-SSE-NEXT: movdqa %xmm0, %xmm3
1532 ; X64-SSE-NEXT: psrlq $32, %xmm3
1533 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm3
1534 ; X64-SSE-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1535 ; X64-SSE-NEXT: paddq %xmm3, %xmm0
1536 ; X64-SSE-NEXT: psllq $32, %xmm0
1537 ; X64-SSE-NEXT: paddq %xmm2, %xmm0
1538 ; X64-SSE-NEXT: retq
1540 ; X64-XOP-LABEL: mul_v2i64_neg_17_65:
1541 ; X64-XOP: # %bb.0:
1542 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm1 = [18446744073709551599,18446744073709551551]
1543 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1544 ; X64-XOP-NEXT: vpsrlq $32, %xmm0, %xmm3
1545 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm3, %xmm1
1546 ; X64-XOP-NEXT: vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1547 ; X64-XOP-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1548 ; X64-XOP-NEXT: vpsllq $32, %xmm0, %xmm0
1549 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1550 ; X64-XOP-NEXT: retq
1552 ; X64-AVX2-LABEL: mul_v2i64_neg_17_65:
1553 ; X64-AVX2: # %bb.0:
1554 ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [18446744073709551599,18446744073709551551]
1555 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1556 ; X64-AVX2-NEXT: vpsrlq $32, %xmm0, %xmm3
1557 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm3, %xmm1
1558 ; X64-AVX2-NEXT: vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1559 ; X64-AVX2-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1560 ; X64-AVX2-NEXT: vpsllq $32, %xmm0, %xmm0
1561 ; X64-AVX2-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1562 ; X64-AVX2-NEXT: retq
1564 ; X64-AVX512DQ-LABEL: mul_v2i64_neg_17_65:
1565 ; X64-AVX512DQ: # %bb.0:
1566 ; X64-AVX512DQ-NEXT: vpmullq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1567 ; X64-AVX512DQ-NEXT: retq
1585 ; X64-SSE2-LABEL: mul_v2i64_0_1:
1586 ; X64-SSE2: # %bb.0:
1587 ; X64-SSE2-NEXT: xorps %xmm1, %xmm1
1588 ; X64-SSE2-NEXT: unpckhpd {{.*#+}} xmm1 = xmm1[1],xmm0[1]
1589 ; X64-SSE2-NEXT: movaps %xmm1, %xmm0
1590 ; X64-SSE2-NEXT: retq
1592 ; X64-AVX-LABEL: mul_v2i64_0_1:
1593 ; X64-AVX: # %bb.0:
1594 ; X64-AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
1595 ; X64-AVX-NEXT: vblendps {{.*#+}} xmm0 = xmm1[0,1],xmm0[2,3]
1596 ; X64-AVX-NEXT: retq
1616 ; X64-SSE-LABEL: mul_v2i64_neg_0_1:
1617 ; X64-SSE: # %bb.0:
1618 ; X64-SSE-NEXT: movdqa {{.*#+}} xmm1 = [0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255]
1619 ; X64-SSE-NEXT: movdqa %xmm0, %xmm2
1620 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm2
1621 ; X64-SSE-NEXT: movdqa %xmm0, %xmm3
1622 ; X64-SSE-NEXT: psrlq $32, %xmm3
1623 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm3
1624 ; X64-SSE-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1625 ; X64-SSE-NEXT: paddq %xmm3, %xmm0
1626 ; X64-SSE-NEXT: psllq $32, %xmm0
1627 ; X64-SSE-NEXT: paddq %xmm2, %xmm0
1628 ; X64-SSE-NEXT: retq
1630 ; X64-XOP-LABEL: mul_v2i64_neg_0_1:
1631 ; X64-XOP: # %bb.0:
1632 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm1 = [0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255]
1633 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1634 ; X64-XOP-NEXT: vpsrlq $32, %xmm0, %xmm3
1635 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm3, %xmm1
1636 ; X64-XOP-NEXT: vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1637 ; X64-XOP-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1638 ; X64-XOP-NEXT: vpsllq $32, %xmm0, %xmm0
1639 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1640 ; X64-XOP-NEXT: retq
1642 ; X64-AVX2-LABEL: mul_v2i64_neg_0_1:
1643 ; X64-AVX2: # %bb.0:
1644 ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255]
1645 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1646 ; X64-AVX2-NEXT: vpsrlq $32, %xmm0, %xmm3
1647 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm3, %xmm1
1648 ; X64-AVX2-NEXT: vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1649 ; X64-AVX2-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1650 ; X64-AVX2-NEXT: vpsllq $32, %xmm0, %xmm0
1651 ; X64-AVX2-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1652 ; X64-AVX2-NEXT: retq
1654 ; X64-AVX512DQ-LABEL: mul_v2i64_neg_0_1:
1655 ; X64-AVX512DQ: # %bb.0:
1656 ; X64-AVX512DQ-NEXT: vpmullq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1657 ; X64-AVX512DQ-NEXT: retq
1677 ; X64-SSE-LABEL: mul_v2i64_15_neg_63:
1678 ; X64-SSE: # %bb.0:
1679 ; X64-SSE-NEXT: movdqa {{.*#+}} xmm1 = [15,18446744073709551553]
1680 ; X64-SSE-NEXT: movdqa %xmm0, %xmm2
1681 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm2
1682 ; X64-SSE-NEXT: movdqa %xmm0, %xmm3
1683 ; X64-SSE-NEXT: psrlq $32, %xmm3
1684 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm3
1685 ; X64-SSE-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1686 ; X64-SSE-NEXT: paddq %xmm3, %xmm0
1687 ; X64-SSE-NEXT: psllq $32, %xmm0
1688 ; X64-SSE-NEXT: paddq %xmm2, %xmm0
1689 ; X64-SSE-NEXT: retq
1691 ; X64-XOP-LABEL: mul_v2i64_15_neg_63:
1692 ; X64-XOP: # %bb.0:
1693 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm1 = [15,18446744073709551553]
1694 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1695 ; X64-XOP-NEXT: vpsrlq $32, %xmm0, %xmm3
1696 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm3, %xmm1
1697 ; X64-XOP-NEXT: vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1698 ; X64-XOP-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1699 ; X64-XOP-NEXT: vpsllq $32, %xmm0, %xmm0
1700 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1701 ; X64-XOP-NEXT: retq
1703 ; X64-AVX2-LABEL: mul_v2i64_15_neg_63:
1704 ; X64-AVX2: # %bb.0:
1705 ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [15,18446744073709551553]
1706 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1707 ; X64-AVX2-NEXT: vpsrlq $32, %xmm0, %xmm3
1708 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm3, %xmm1
1709 ; X64-AVX2-NEXT: vpmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1710 ; X64-AVX2-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1711 ; X64-AVX2-NEXT: vpsllq $32, %xmm0, %xmm0
1712 ; X64-AVX2-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1713 ; X64-AVX2-NEXT: retq
1715 ; X64-AVX512DQ-LABEL: mul_v2i64_15_neg_63:
1716 ; X64-AVX512DQ: # %bb.0:
1717 ; X64-AVX512DQ-NEXT: vpmullq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1718 ; X64-AVX512DQ-NEXT: retq
1739 ; X64-SSE2-LABEL: mul_v4i32_0_15_31_7:
1740 ; X64-SSE2: # %bb.0:
1741 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
1742 ; X64-SSE2-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1743 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
1744 ; X64-SSE2-NEXT: pmuludq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1745 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,2,2,3]
1746 ; X64-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1747 ; X64-SSE2-NEXT: retq
1749 ; X64-SSE4-LABEL: mul_v4i32_0_15_31_7:
1750 ; X64-SSE4: # %bb.0:
1751 ; X64-SSE4-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1752 ; X64-SSE4-NEXT: retq
1754 ; X64-AVX-LABEL: mul_v4i32_0_15_31_7:
1755 ; X64-AVX: # %bb.0:
1756 ; X64-AVX-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1757 ; X64-AVX-NEXT: retq
1768 ; X64-SSE-LABEL: mul_v8i16_0_1_7_15_31_63_127_255:
1769 ; X64-SSE: # %bb.0:
1770 ; X64-SSE-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
1771 ; X64-SSE-NEXT: retq
1773 ; X64-AVX-LABEL: mul_v8i16_0_1_7_15_31_63_127_255:
1774 ; X64-AVX: # %bb.0:
1775 ; X64-AVX-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1776 ; X64-AVX-NEXT: retq
1810 ; X64-XOP-LABEL: mul_v16i8_0_1_3_7_15_31_63_127_0_1_3_7_15_31_63_127:
1811 ; X64-XOP: # %bb.0:
1812 ; X64-XOP-NEXT: vpunpckhbw {{.*#+}} xmm1 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
1813 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm2 = [0,1,3,7,15,31,63,127]
1814 ; X64-XOP-NEXT: vpmullw %xmm2, %xmm1, %xmm1
1815 ; X64-XOP-NEXT: vpmovzxbw {{.*#+}} xmm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xm…
1816 ; X64-XOP-NEXT: vpmullw %xmm2, %xmm0, %xmm0
1817 ; X64-XOP-NEXT: vpperm {{.*#+}} xmm0 = xmm0[0,2,4,6,8,10,12,14],xmm1[0,2,4,6,8,10,12,14]
1818 ; X64-XOP-NEXT: retq
1820 ; X64-AVX2-LABEL: mul_v16i8_0_1_3_7_15_31_63_127_0_1_3_7_15_31_63_127:
1821 ; X64-AVX2: # %bb.0:
1822 ; X64-AVX2-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,x…
1823 ; X64-AVX2-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1824 ; X64-AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1825 ; X64-AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
1826 ; X64-AVX2-NEXT: vpackuswb %xmm1, %xmm0, %xmm0
1827 ; X64-AVX2-NEXT: vzeroupper
1828 ; X64-AVX2-NEXT: retq
1830 ; X64-AVX512DQ-LABEL: mul_v16i8_0_1_3_7_15_31_63_127_0_1_3_7_15_31_63_127:
1831 ; X64-AVX512DQ: # %bb.0:
1832 ; X64-AVX512DQ-NEXT: vpmovzxbw {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],ze…
1833 ; X64-AVX512DQ-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1834 ; X64-AVX512DQ-NEXT: vpmovzxwd {{.*#+}} zmm0 = ymm0[0],zero,ymm0[1],zero,ymm0[2],zero,ymm0[3],ze…
1835 ; X64-AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0
1836 ; X64-AVX512DQ-NEXT: vzeroupper
1837 ; X64-AVX512DQ-NEXT: retq
1854 ; X64-SSE-LABEL: mul_v2i64_68_132:
1855 ; X64-SSE: # %bb.0:
1856 ; X64-SSE-NEXT: movdqa {{.*#+}} xmm1 = [68,132]
1857 ; X64-SSE-NEXT: movdqa %xmm0, %xmm2
1858 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm2
1859 ; X64-SSE-NEXT: psrlq $32, %xmm0
1860 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm0
1861 ; X64-SSE-NEXT: psllq $32, %xmm0
1862 ; X64-SSE-NEXT: paddq %xmm2, %xmm0
1863 ; X64-SSE-NEXT: retq
1865 ; X64-XOP-LABEL: mul_v2i64_68_132:
1866 ; X64-XOP: # %bb.0:
1867 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm1 = [68,132]
1868 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1869 ; X64-XOP-NEXT: vpsrlq $32, %xmm0, %xmm0
1870 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
1871 ; X64-XOP-NEXT: vpsllq $32, %xmm0, %xmm0
1872 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1873 ; X64-XOP-NEXT: retq
1875 ; X64-AVX2-LABEL: mul_v2i64_68_132:
1876 ; X64-AVX2: # %bb.0:
1877 ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [68,132]
1878 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1879 ; X64-AVX2-NEXT: vpsrlq $32, %xmm0, %xmm0
1880 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
1881 ; X64-AVX2-NEXT: vpsllq $32, %xmm0, %xmm0
1882 ; X64-AVX2-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1883 ; X64-AVX2-NEXT: retq
1885 ; X64-AVX512DQ-LABEL: mul_v2i64_68_132:
1886 ; X64-AVX512DQ: # %bb.0:
1887 ; X64-AVX512DQ-NEXT: vpmullq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1888 ; X64-AVX512DQ-NEXT: retq
1905 ; X64-SSE-LABEL: mul_v2i64_60_120:
1906 ; X64-SSE: # %bb.0:
1907 ; X64-SSE-NEXT: movdqa {{.*#+}} xmm1 = [60,124]
1908 ; X64-SSE-NEXT: movdqa %xmm0, %xmm2
1909 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm2
1910 ; X64-SSE-NEXT: psrlq $32, %xmm0
1911 ; X64-SSE-NEXT: pmuludq %xmm1, %xmm0
1912 ; X64-SSE-NEXT: psllq $32, %xmm0
1913 ; X64-SSE-NEXT: paddq %xmm2, %xmm0
1914 ; X64-SSE-NEXT: retq
1916 ; X64-XOP-LABEL: mul_v2i64_60_120:
1917 ; X64-XOP: # %bb.0:
1918 ; X64-XOP-NEXT: vmovdqa {{.*#+}} xmm1 = [60,124]
1919 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1920 ; X64-XOP-NEXT: vpsrlq $32, %xmm0, %xmm0
1921 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
1922 ; X64-XOP-NEXT: vpsllq $32, %xmm0, %xmm0
1923 ; X64-XOP-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1924 ; X64-XOP-NEXT: retq
1926 ; X64-AVX2-LABEL: mul_v2i64_60_120:
1927 ; X64-AVX2: # %bb.0:
1928 ; X64-AVX2-NEXT: vmovdqa {{.*#+}} xmm1 = [60,124]
1929 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm2
1930 ; X64-AVX2-NEXT: vpsrlq $32, %xmm0, %xmm0
1931 ; X64-AVX2-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
1932 ; X64-AVX2-NEXT: vpsllq $32, %xmm0, %xmm0
1933 ; X64-AVX2-NEXT: vpaddq %xmm0, %xmm2, %xmm0
1934 ; X64-AVX2-NEXT: retq
1936 ; X64-AVX512DQ-LABEL: mul_v2i64_60_120:
1937 ; X64-AVX512DQ: # %bb.0:
1938 ; X64-AVX512DQ-NEXT: vpmullq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1939 ; X64-AVX512DQ-NEXT: retq
1971 ; X64-SSE2-LABEL: mul_v2i64_zext_cross_bb:
1972 ; X64-SSE2: # %bb.0:
1973 ; X64-SSE2-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
1974 ; X64-SSE2-NEXT: pxor %xmm1, %xmm1
1975 ; X64-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
1976 ; X64-SSE2-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
1977 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm1[0,1,1,3]
1978 ; X64-SSE2-NEXT: pmuludq %xmm1, %xmm0
1979 ; X64-SSE2-NEXT: retq
1981 ; X64-SSE4-LABEL: mul_v2i64_zext_cross_bb:
1982 ; X64-SSE4: # %bb.0:
1983 ; X64-SSE4-NEXT: pmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero
1984 ; X64-SSE4-NEXT: pmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero
1985 ; X64-SSE4-NEXT: pmuludq %xmm1, %xmm0
1986 ; X64-SSE4-NEXT: retq
1988 ; X64-AVX-LABEL: mul_v2i64_zext_cross_bb:
1989 ; X64-AVX: # %bb.0:
1990 ; X64-AVX-NEXT: vpmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero
1991 ; X64-AVX-NEXT: vpmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero
1992 ; X64-AVX-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
1993 ; X64-AVX-NEXT: retq
2034 ; X64-SSE2-LABEL: mul_v4i64_zext_cross_bb:
2035 ; X64-SSE2: # %bb.0:
2036 ; X64-SSE2-NEXT: movdqa (%rdi), %xmm0
2037 ; X64-SSE2-NEXT: pxor %xmm2, %xmm2
2038 ; X64-SSE2-NEXT: movdqa %xmm0, %xmm1
2039 ; X64-SSE2-NEXT: punpckhdq {{.*#+}} xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
2040 ; X64-SSE2-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
2041 ; X64-SSE2-NEXT: movdqa (%rsi), %xmm2
2042 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm3 = xmm2[2,1,3,3]
2043 ; X64-SSE2-NEXT: pmuludq %xmm3, %xmm1
2044 ; X64-SSE2-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,1,1,3]
2045 ; X64-SSE2-NEXT: pmuludq %xmm2, %xmm0
2046 ; X64-SSE2-NEXT: retq
2048 ; X64-SSE4-LABEL: mul_v4i64_zext_cross_bb:
2049 ; X64-SSE4: # %bb.0:
2050 ; X64-SSE4-NEXT: pmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero
2051 ; X64-SSE4-NEXT: pmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero
2052 ; X64-SSE4-NEXT: pmovzxdq {{.*#+}} xmm2 = mem[0],zero,mem[1],zero
2053 ; X64-SSE4-NEXT: pmuludq %xmm2, %xmm1
2054 ; X64-SSE4-NEXT: pmovzxdq {{.*#+}} xmm2 = mem[0],zero,mem[1],zero
2055 ; X64-SSE4-NEXT: pmuludq %xmm2, %xmm0
2056 ; X64-SSE4-NEXT: retq
2058 ; X64-XOP-LABEL: mul_v4i64_zext_cross_bb:
2059 ; X64-XOP: # %bb.0:
2060 ; X64-XOP-NEXT: vpmovzxdq {{.*#+}} xmm0 = mem[0],zero,mem[1],zero
2061 ; X64-XOP-NEXT: vpmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero
2062 ; X64-XOP-NEXT: vinsertf128 $1, %xmm0, %ymm1, %ymm0
2063 ; X64-XOP-NEXT: vpmovzxdq {{.*#+}} xmm1 = mem[0],zero,mem[1],zero
2064 ; X64-XOP-NEXT: vpmovzxdq {{.*#+}} xmm2 = mem[0],zero,mem[1],zero
2065 ; X64-XOP-NEXT: vextractf128 $1, %ymm0, %xmm3
2066 ; X64-XOP-NEXT: vpmuludq %xmm2, %xmm3, %xmm2
2067 ; X64-XOP-NEXT: vpmuludq %xmm1, %xmm0, %xmm0
2068 ; X64-XOP-NEXT: vinsertf128 $1, %xmm2, %ymm0, %ymm0
2069 ; X64-XOP-NEXT: retq
2071 ; X64-AVX2-LABEL: mul_v4i64_zext_cross_bb:
2072 ; X64-AVX2: # %bb.0:
2073 ; X64-AVX2-NEXT: vpmovzxdq {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
2074 ; X64-AVX2-NEXT: vpmovzxdq {{.*#+}} ymm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
2075 ; X64-AVX2-NEXT: vpmuludq %ymm1, %ymm0, %ymm0
2076 ; X64-AVX2-NEXT: retq
2078 ; X64-AVX512DQ-LABEL: mul_v4i64_zext_cross_bb:
2079 ; X64-AVX512DQ: # %bb.0:
2080 ; X64-AVX512DQ-NEXT: vpmovzxdq {{.*#+}} ymm0 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
2081 ; X64-AVX512DQ-NEXT: vpmovzxdq {{.*#+}} ymm1 = mem[0],zero,mem[1],zero,mem[2],zero,mem[3],zero
2082 ; X64-AVX512DQ-NEXT: vpmuludq %ymm1, %ymm0, %ymm0
2083 ; X64-AVX512DQ-NEXT: retq