@@ -2839,8 +2839,7 @@ define i8 @select_replacement_sub_noundef(i8 %x, i8 noundef %y, i8 %z) {
2839
2839
define i8 @select_replacement_sub (i8 %x , i8 %y , i8 %z ) {
2840
2840
; CHECK-LABEL: @select_replacement_sub(
2841
2841
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X:%.*]], [[Y:%.*]]
2842
- ; CHECK-NEXT: [[SUB:%.*]] = sub i8 [[X]], [[Y]]
2843
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[SUB]], i8 [[Z:%.*]]
2842
+ ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 0, i8 [[Z:%.*]]
2844
2843
; CHECK-NEXT: ret i8 [[SEL]]
2845
2844
;
2846
2845
%cmp = icmp eq i8 %x , %y
@@ -4430,10 +4429,9 @@ define i32 @src_no_trans_select_and_ne0_xor_or(i32 %x, i32 %y) {
4430
4429
4431
4430
define i32 @src_no_trans_select_xor_eq0_xor_and (i32 %x , i32 %y ) {
4432
4431
; CHECK-LABEL: @src_no_trans_select_xor_eq0_xor_and(
4433
- ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[X:%.*]], [[Y:%.*]]
4434
- ; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X]], [[Y]]
4432
+ ; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]]
4435
4433
; CHECK-NEXT: [[AND:%.*]] = and i32 [[X]], [[Y]]
4436
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[XOR0]], i32 [[XOR]] , i32 [[AND]]
4434
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[XOR0]], i32 0 , i32 [[AND]]
4437
4435
; CHECK-NEXT: ret i32 [[COND]]
4438
4436
;
4439
4437
%xor = xor i32 %x , %y
@@ -4445,10 +4443,9 @@ define i32 @src_no_trans_select_xor_eq0_xor_and(i32 %x, i32 %y) {
4445
4443
4446
4444
define i32 @src_no_trans_select_xor_eq0_xor_or (i32 %x , i32 %y ) {
4447
4445
; CHECK-LABEL: @src_no_trans_select_xor_eq0_xor_or(
4448
- ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[X:%.*]], [[Y:%.*]]
4449
- ; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X]], [[Y]]
4446
+ ; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]]
4450
4447
; CHECK-NEXT: [[OR:%.*]] = or i32 [[X]], [[Y]]
4451
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[XOR0]], i32 [[XOR]] , i32 [[OR]]
4448
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[XOR0]], i32 0 , i32 [[OR]]
4452
4449
; CHECK-NEXT: ret i32 [[COND]]
4453
4450
;
4454
4451
%xor = xor i32 %x , %y
@@ -4460,10 +4457,9 @@ define i32 @src_no_trans_select_xor_eq0_xor_or(i32 %x, i32 %y) {
4460
4457
4461
4458
define i32 @src_no_trans_select_xor_eq0_and_xor (i32 %x , i32 %y ) {
4462
4459
; CHECK-LABEL: @src_no_trans_select_xor_eq0_and_xor(
4463
- ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[X:%.*]], [[Y:%.*]]
4464
- ; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X]], [[Y]]
4465
- ; CHECK-NEXT: [[AND:%.*]] = and i32 [[X]], [[Y]]
4466
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[XOR0]], i32 [[AND]], i32 [[XOR]]
4460
+ ; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]]
4461
+ ; CHECK-NEXT: [[XOR:%.*]] = select i1 [[XOR0]], i32 0, i32 [[X]]
4462
+ ; CHECK-NEXT: [[COND:%.*]] = xor i32 [[XOR]], [[Y]]
4467
4463
; CHECK-NEXT: ret i32 [[COND]]
4468
4464
;
4469
4465
%xor = xor i32 %x , %y
@@ -4476,10 +4472,9 @@ define i32 @src_no_trans_select_xor_eq0_and_xor(i32 %x, i32 %y) {
4476
4472
; https://alive2.llvm.org/ce/z/SBe8ei
4477
4473
define i32 @src_no_trans_select_xor_eq0_or_xor (i32 %x , i32 %y ) {
4478
4474
; CHECK-LABEL: @src_no_trans_select_xor_eq0_or_xor(
4479
- ; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[X:%.*]], [[Y:%.*]]
4480
- ; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X]], [[Y]]
4481
- ; CHECK-NEXT: [[OR:%.*]] = or i32 [[X]], [[Y]]
4482
- ; CHECK-NEXT: [[COND:%.*]] = select i1 [[XOR0]], i32 [[OR]], i32 [[XOR]]
4475
+ ; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]]
4476
+ ; CHECK-NEXT: [[XOR:%.*]] = select i1 [[XOR0]], i32 0, i32 [[X]]
4477
+ ; CHECK-NEXT: [[COND:%.*]] = xor i32 [[XOR]], [[Y]]
4483
4478
; CHECK-NEXT: ret i32 [[COND]]
4484
4479
;
4485
4480
%xor = xor i32 %x , %y
@@ -4494,8 +4489,7 @@ define i32 @src_no_trans_select_xor_eq0_or_xor(i32 %x, i32 %y) {
4494
4489
define i32 @src_select_xxory_eq0_xorxy_y (i32 %x , i32 %y ) {
4495
4490
; CHECK-LABEL: @src_select_xxory_eq0_xorxy_y(
4496
4491
; CHECK-NEXT: [[XOR0:%.*]] = icmp eq i32 [[X:%.*]], [[Y:%.*]]
4497
- ; CHECK-NEXT: [[XOR:%.*]] = select i1 [[XOR0]], i32 [[X]], i32 0
4498
- ; CHECK-NEXT: [[COND:%.*]] = xor i32 [[XOR]], [[Y]]
4492
+ ; CHECK-NEXT: [[COND:%.*]] = select i1 [[XOR0]], i32 0, i32 [[Y]]
4499
4493
; CHECK-NEXT: ret i32 [[COND]]
4500
4494
;
4501
4495
%xor = xor i32 %x , %y
0 commit comments