|
3 | 3 | ; RUN: opt < %s -passes=vector-combine -S -mtriple=x86_64-- -mattr=AVX2 | FileCheck %s --check-prefixes=CHECK,AVX
|
4 | 4 |
|
5 | 5 | define <2 x i64> @add_constant(i64 %x) {
|
6 |
| -; SSE-LABEL: @add_constant( |
7 |
| -; SSE-NEXT: [[INS:%.*]] = insertelement <2 x i64> poison, i64 [[X:%.*]], i32 0 |
8 |
| -; SSE-NEXT: [[BO:%.*]] = add <2 x i64> [[INS]], <i64 42, i64 undef> |
9 |
| -; SSE-NEXT: ret <2 x i64> [[BO]] |
10 |
| -; |
11 |
| -; AVX-LABEL: @add_constant( |
12 |
| -; AVX-NEXT: [[BO_SCALAR:%.*]] = add i64 [[X:%.*]], 42 |
13 |
| -; AVX-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
14 |
| -; AVX-NEXT: ret <2 x i64> [[BO]] |
| 6 | +; CHECK-LABEL: @add_constant( |
| 7 | +; CHECK-NEXT: [[BO_SCALAR:%.*]] = add i64 [[X:%.*]], 42 |
| 8 | +; CHECK-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
| 9 | +; CHECK-NEXT: ret <2 x i64> [[BO]] |
15 | 10 | ;
|
16 | 11 | %ins = insertelement <2 x i64> poison, i64 %x, i32 0
|
17 | 12 | %bo = add <2 x i64> %ins, <i64 42, i64 undef>
|
18 | 13 | ret <2 x i64> %bo
|
19 | 14 | }
|
20 | 15 |
|
21 | 16 | define <2 x i64> @add_constant_not_undef_lane(i64 %x) {
|
22 |
| -; SSE-LABEL: @add_constant_not_undef_lane( |
23 |
| -; SSE-NEXT: [[INS:%.*]] = insertelement <2 x i64> poison, i64 [[X:%.*]], i32 0 |
24 |
| -; SSE-NEXT: [[BO:%.*]] = add <2 x i64> [[INS]], <i64 42, i64 -42> |
25 |
| -; SSE-NEXT: ret <2 x i64> [[BO]] |
26 |
| -; |
27 |
| -; AVX-LABEL: @add_constant_not_undef_lane( |
28 |
| -; AVX-NEXT: [[BO_SCALAR:%.*]] = add i64 [[X:%.*]], 42 |
29 |
| -; AVX-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
30 |
| -; AVX-NEXT: ret <2 x i64> [[BO]] |
| 17 | +; CHECK-LABEL: @add_constant_not_undef_lane( |
| 18 | +; CHECK-NEXT: [[BO_SCALAR:%.*]] = add i64 [[X:%.*]], 42 |
| 19 | +; CHECK-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
| 20 | +; CHECK-NEXT: ret <2 x i64> [[BO]] |
31 | 21 | ;
|
32 | 22 | %ins = insertelement <2 x i64> poison, i64 %x, i32 0
|
33 | 23 | %bo = add <2 x i64> %ins, <i64 42, i64 -42>
|
@@ -489,31 +479,21 @@ define <2 x i64> @sdiv_constant_op1_not_undef_lane(i64 %x) {
|
489 | 479 | }
|
490 | 480 |
|
491 | 481 | define <2 x i64> @and_constant(i64 %x) {
|
492 |
| -; SSE-LABEL: @and_constant( |
493 |
| -; SSE-NEXT: [[INS:%.*]] = insertelement <2 x i64> poison, i64 [[X:%.*]], i32 0 |
494 |
| -; SSE-NEXT: [[BO:%.*]] = and <2 x i64> [[INS]], <i64 42, i64 undef> |
495 |
| -; SSE-NEXT: ret <2 x i64> [[BO]] |
496 |
| -; |
497 |
| -; AVX-LABEL: @and_constant( |
498 |
| -; AVX-NEXT: [[BO_SCALAR:%.*]] = and i64 [[X:%.*]], 42 |
499 |
| -; AVX-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
500 |
| -; AVX-NEXT: ret <2 x i64> [[BO]] |
| 482 | +; CHECK-LABEL: @and_constant( |
| 483 | +; CHECK-NEXT: [[BO_SCALAR:%.*]] = and i64 [[X:%.*]], 42 |
| 484 | +; CHECK-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
| 485 | +; CHECK-NEXT: ret <2 x i64> [[BO]] |
501 | 486 | ;
|
502 | 487 | %ins = insertelement <2 x i64> poison, i64 %x, i32 0
|
503 | 488 | %bo = and <2 x i64> %ins, <i64 42, i64 undef>
|
504 | 489 | ret <2 x i64> %bo
|
505 | 490 | }
|
506 | 491 |
|
507 | 492 | define <2 x i64> @and_constant_not_undef_lane(i64 %x) {
|
508 |
| -; SSE-LABEL: @and_constant_not_undef_lane( |
509 |
| -; SSE-NEXT: [[INS:%.*]] = insertelement <2 x i64> poison, i64 [[X:%.*]], i32 0 |
510 |
| -; SSE-NEXT: [[BO:%.*]] = and <2 x i64> [[INS]], <i64 42, i64 -42> |
511 |
| -; SSE-NEXT: ret <2 x i64> [[BO]] |
512 |
| -; |
513 |
| -; AVX-LABEL: @and_constant_not_undef_lane( |
514 |
| -; AVX-NEXT: [[BO_SCALAR:%.*]] = and i64 [[X:%.*]], 42 |
515 |
| -; AVX-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
516 |
| -; AVX-NEXT: ret <2 x i64> [[BO]] |
| 493 | +; CHECK-LABEL: @and_constant_not_undef_lane( |
| 494 | +; CHECK-NEXT: [[BO_SCALAR:%.*]] = and i64 [[X:%.*]], 42 |
| 495 | +; CHECK-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
| 496 | +; CHECK-NEXT: ret <2 x i64> [[BO]] |
517 | 497 | ;
|
518 | 498 | %ins = insertelement <2 x i64> poison, i64 %x, i32 0
|
519 | 499 | %bo = and <2 x i64> %ins, <i64 42, i64 -42>
|
@@ -543,31 +523,21 @@ define <2 x i64> @or_constant_not_undef_lane(i64 %x) {
|
543 | 523 | }
|
544 | 524 |
|
545 | 525 | define <2 x i64> @xor_constant(i64 %x) {
|
546 |
| -; SSE-LABEL: @xor_constant( |
547 |
| -; SSE-NEXT: [[INS:%.*]] = insertelement <2 x i64> poison, i64 [[X:%.*]], i32 0 |
548 |
| -; SSE-NEXT: [[BO:%.*]] = xor <2 x i64> [[INS]], <i64 42, i64 undef> |
549 |
| -; SSE-NEXT: ret <2 x i64> [[BO]] |
550 |
| -; |
551 |
| -; AVX-LABEL: @xor_constant( |
552 |
| -; AVX-NEXT: [[BO_SCALAR:%.*]] = xor i64 [[X:%.*]], 42 |
553 |
| -; AVX-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
554 |
| -; AVX-NEXT: ret <2 x i64> [[BO]] |
| 526 | +; CHECK-LABEL: @xor_constant( |
| 527 | +; CHECK-NEXT: [[BO_SCALAR:%.*]] = xor i64 [[X:%.*]], 42 |
| 528 | +; CHECK-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
| 529 | +; CHECK-NEXT: ret <2 x i64> [[BO]] |
555 | 530 | ;
|
556 | 531 | %ins = insertelement <2 x i64> poison, i64 %x, i32 0
|
557 | 532 | %bo = xor <2 x i64> %ins, <i64 42, i64 undef>
|
558 | 533 | ret <2 x i64> %bo
|
559 | 534 | }
|
560 | 535 |
|
561 | 536 | define <2 x i64> @xor_constant_not_undef_lane(i64 %x) {
|
562 |
| -; SSE-LABEL: @xor_constant_not_undef_lane( |
563 |
| -; SSE-NEXT: [[INS:%.*]] = insertelement <2 x i64> poison, i64 [[X:%.*]], i32 0 |
564 |
| -; SSE-NEXT: [[BO:%.*]] = xor <2 x i64> [[INS]], <i64 42, i64 -42> |
565 |
| -; SSE-NEXT: ret <2 x i64> [[BO]] |
566 |
| -; |
567 |
| -; AVX-LABEL: @xor_constant_not_undef_lane( |
568 |
| -; AVX-NEXT: [[BO_SCALAR:%.*]] = xor i64 [[X:%.*]], 42 |
569 |
| -; AVX-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
570 |
| -; AVX-NEXT: ret <2 x i64> [[BO]] |
| 537 | +; CHECK-LABEL: @xor_constant_not_undef_lane( |
| 538 | +; CHECK-NEXT: [[BO_SCALAR:%.*]] = xor i64 [[X:%.*]], 42 |
| 539 | +; CHECK-NEXT: [[BO:%.*]] = insertelement <2 x i64> poison, i64 [[BO_SCALAR]], i64 0 |
| 540 | +; CHECK-NEXT: ret <2 x i64> [[BO]] |
571 | 541 | ;
|
572 | 542 | %ins = insertelement <2 x i64> poison, i64 %x, i32 0
|
573 | 543 | %bo = xor <2 x i64> %ins, <i64 42, i64 -42>
|
|
0 commit comments