@@ -6,8 +6,7 @@ declare void @use.i8(i8)
6
6
define i8 @replace_with_y_noundef (i8 %x , i8 noundef %y , i8 %z ) {
7
7
; CHECK-LABEL: @replace_with_y_noundef(
8
8
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X:%.*]], [[Y:%.*]]
9
- ; CHECK-NEXT: [[AND:%.*]] = and i8 [[X]], [[Y]]
10
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[AND]], i8 [[Z:%.*]]
9
+ ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[Y]], i8 [[Z:%.*]]
11
10
; CHECK-NEXT: ret i8 [[SEL]]
12
11
;
13
12
%cmp = icmp eq i8 %x , %y
@@ -20,8 +19,7 @@ define i8 @replace_with_x_noundef(i8 noundef %x, i8 %y, i8 %z) {
20
19
; CHECK-LABEL: @replace_with_x_noundef(
21
20
; CHECK-NEXT: [[CMP:%.*]] = icmp ne i8 [[X:%.*]], [[Y:%.*]]
22
21
; CHECK-NEXT: call void @use.i1(i1 [[CMP]])
23
- ; CHECK-NEXT: [[AND:%.*]] = or i8 [[X]], [[Y]]
24
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[Z:%.*]], i8 [[AND]]
22
+ ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[Z:%.*]], i8 [[X]]
25
23
; CHECK-NEXT: ret i8 [[SEL]]
26
24
;
27
25
%cmp = icmp ne i8 %x , %y
@@ -50,7 +48,7 @@ define i8 @replace_with_y_for_new_oneuse(i8 noundef %xx, i8 noundef %y, i8 %z) {
50
48
; CHECK-LABEL: @replace_with_y_for_new_oneuse(
51
49
; CHECK-NEXT: [[X:%.*]] = mul i8 [[XX:%.*]], 13
52
50
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X]], [[Y:%.*]]
53
- ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[X ]], [[Y]]
51
+ ; CHECK-NEXT: [[ADD:%.*]] = shl nuw i8 [[Y ]], 1
54
52
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[ADD]], i8 [[Z:%.*]]
55
53
; CHECK-NEXT: ret i8 [[SEL]]
56
54
;
@@ -65,7 +63,7 @@ define i8 @replace_with_y_for_new_oneuse2(i8 %xx, i8 noundef %y, i8 %z, i8 %q) {
65
63
; CHECK-LABEL: @replace_with_y_for_new_oneuse2(
66
64
; CHECK-NEXT: [[X:%.*]] = mul i8 [[XX:%.*]], 13
67
65
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X]], [[Y:%.*]]
68
- ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[X ]], [[Q:%.*]]
66
+ ; CHECK-NEXT: [[ADD:%.*]] = add nuw i8 [[Y ]], [[Q:%.*]]
69
67
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[ADD]], i8 [[Z:%.*]]
70
68
; CHECK-NEXT: ret i8 [[SEL]]
71
69
;
@@ -81,7 +79,7 @@ define i8 @replace_with_x_for_new_oneuse(i8 noundef %xx, i8 noundef %yy, i8 %z,
81
79
; CHECK-NEXT: [[X:%.*]] = mul i8 [[XX:%.*]], 13
82
80
; CHECK-NEXT: [[Y:%.*]] = add i8 [[YY:%.*]], [[W:%.*]]
83
81
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X]], [[Y]]
84
- ; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[X]], [[Y ]]
82
+ ; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[X]], [[X ]]
85
83
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[MUL]], i8 [[Z:%.*]]
86
84
; CHECK-NEXT: ret i8 [[SEL]]
87
85
;
@@ -115,7 +113,7 @@ define i8 @replace_with_x_for_simple_binop(i8 noundef %xx, i8 %yy, i8 %z, i8 %w)
115
113
; CHECK-NEXT: [[X:%.*]] = mul i8 [[XX:%.*]], 13
116
114
; CHECK-NEXT: [[Y:%.*]] = add i8 [[YY:%.*]], [[W:%.*]]
117
115
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X]], [[Y]]
118
- ; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[X]], [[Y ]]
116
+ ; CHECK-NEXT: [[MUL:%.*]] = mul i8 [[X]], [[X ]]
119
117
; CHECK-NEXT: call void @use.i8(i8 [[Y]])
120
118
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[MUL]], i8 [[Z:%.*]]
121
119
; CHECK-NEXT: ret i8 [[SEL]]
@@ -147,7 +145,7 @@ define i8 @replace_with_none_for_new_oneuse_fail_maybe_undef(i8 %xx, i8 %y, i8 %
147
145
define i8 @replace_with_y_for_simple_binop (i8 %x , i8 noundef %y , i8 %z ) {
148
146
; CHECK-LABEL: @replace_with_y_for_simple_binop(
149
147
; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X:%.*]], [[Y:%.*]]
150
- ; CHECK-NEXT: [[MUL:%.*]] = mul nsw i8 [[X ]], [[Y]]
148
+ ; CHECK-NEXT: [[MUL:%.*]] = mul nsw i8 [[Y ]], [[Y]]
151
149
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], i8 [[MUL]], i8 [[Z:%.*]]
152
150
; CHECK-NEXT: ret i8 [[SEL]]
153
151
;
0 commit comments