@@ -16,15 +16,15 @@ define i1 @assume_dominates(i8 %a, i8 %b, i1 %c) {
16
16
; CHECK: then:
17
17
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
18
18
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[A]], [[B]]
19
- ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_1]], [[T_2]]
19
+ ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, true
20
20
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i8 [[A]], 2
21
21
; CHECK-NEXT: [[C_1:%.*]] = icmp ule i8 [[ADD_2]], [[B]]
22
22
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]
23
23
; CHECK-NEXT: ret i1 [[RES_2]]
24
24
; CHECK: else:
25
25
; CHECK-NEXT: [[T_3:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
26
26
; CHECK-NEXT: [[T_4:%.*]] = icmp ule i8 [[A]], [[B]]
27
- ; CHECK-NEXT: [[RES_3:%.*]] = xor i1 [[T_3]], [[T_4]]
27
+ ; CHECK-NEXT: [[RES_3:%.*]] = xor i1 true, true
28
28
; CHECK-NEXT: [[ADD_2_1:%.*]] = add nuw nsw i8 [[A]], 2
29
29
; CHECK-NEXT: [[C_2:%.*]] = icmp ule i8 [[ADD_2_1]], [[B]]
30
30
; CHECK-NEXT: [[RES_4:%.*]] = xor i1 [[RES_3]], [[C_2]]
@@ -64,15 +64,15 @@ define i1 @assume_dominates_with_may_unwind_call_before_assume(i8 %a, i8 %b, i1
64
64
; CHECK: then:
65
65
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
66
66
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[A]], [[B]]
67
- ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_1]], [[T_2]]
67
+ ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, true
68
68
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i8 [[A]], 2
69
69
; CHECK-NEXT: [[C_1:%.*]] = icmp ule i8 [[ADD_2]], [[B]]
70
70
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]
71
71
; CHECK-NEXT: ret i1 [[RES_2]]
72
72
; CHECK: else:
73
73
; CHECK-NEXT: [[T_3:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
74
74
; CHECK-NEXT: [[T_4:%.*]] = icmp ule i8 [[A]], [[B]]
75
- ; CHECK-NEXT: [[RES_3:%.*]] = xor i1 [[T_3]], [[T_4]]
75
+ ; CHECK-NEXT: [[RES_3:%.*]] = xor i1 true, true
76
76
; CHECK-NEXT: [[ADD_2_1:%.*]] = add nuw nsw i8 [[A]], 2
77
77
; CHECK-NEXT: [[C_2:%.*]] = icmp ule i8 [[ADD_2_1]], [[B]]
78
78
; CHECK-NEXT: [[RES_4:%.*]] = xor i1 [[RES_3]], [[C_2]]
@@ -113,15 +113,15 @@ define i1 @assume_dominates_with_may_unwind_call_after_assume(i8 %a, i8 %b, i1 %
113
113
; CHECK: then:
114
114
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
115
115
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[A]], [[B]]
116
- ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_1]], [[T_2]]
116
+ ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, true
117
117
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i8 [[A]], 2
118
118
; CHECK-NEXT: [[C_1:%.*]] = icmp ule i8 [[ADD_2]], [[B]]
119
119
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]
120
120
; CHECK-NEXT: ret i1 [[RES_2]]
121
121
; CHECK: else:
122
122
; CHECK-NEXT: [[T_3:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
123
123
; CHECK-NEXT: [[T_4:%.*]] = icmp ule i8 [[A]], [[B]]
124
- ; CHECK-NEXT: [[RES_3:%.*]] = xor i1 [[T_3]], [[T_4]]
124
+ ; CHECK-NEXT: [[RES_3:%.*]] = xor i1 true, true
125
125
; CHECK-NEXT: [[ADD_2_1:%.*]] = add nuw nsw i8 [[A]], 2
126
126
; CHECK-NEXT: [[C_2:%.*]] = icmp ule i8 [[ADD_2_1]], [[B]]
127
127
; CHECK-NEXT: [[RES_4:%.*]] = xor i1 [[RES_3]], [[C_2]]
@@ -159,7 +159,7 @@ define i1 @assume_single_bb(i8 %a, i8 %b, i1 %c) {
159
159
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_1]])
160
160
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
161
161
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[A]], [[B]]
162
- ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_1]], [[T_2]]
162
+ ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, true
163
163
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i8 [[A]], 2
164
164
; CHECK-NEXT: [[C_1:%.*]] = icmp ule i8 [[ADD_2]], [[B]]
165
165
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]
@@ -186,7 +186,7 @@ define i1 @assume_same_bb(i8 %a, i8 %b, i1 %c) {
186
186
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_1]])
187
187
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
188
188
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[A]], [[B]]
189
- ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_1]], [[T_2]]
189
+ ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, true
190
190
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i8 [[A]], 2
191
191
; CHECK-NEXT: [[C_1:%.*]] = icmp ule i8 [[ADD_2]], [[B]]
192
192
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]
@@ -231,7 +231,7 @@ define i1 @assume_same_bb2(i8 %a, i8 %b, i1 %c) {
231
231
; CHECK-NEXT: call void @llvm.assume(i1 [[CMP_1]])
232
232
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
233
233
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[A]], [[B]]
234
- ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_1]], [[T_2]]
234
+ ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, true
235
235
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i8 [[A]], 2
236
236
; CHECK-NEXT: [[C_1:%.*]] = icmp ule i8 [[ADD_2]], [[B]]
237
237
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]
@@ -299,7 +299,7 @@ define i1 @assume_same_bb_before_may_exiting_call(i8 %a, i8 %b, i1 %c) {
299
299
; CHECK-NEXT: call void @may_unwind()
300
300
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[ADD_1]], [[B]]
301
301
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[A]], [[B]]
302
- ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_1]], [[T_2]]
302
+ ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, true
303
303
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i8 [[A]], 2
304
304
; CHECK-NEXT: [[C_1:%.*]] = icmp ule i8 [[ADD_2]], [[B]]
305
305
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]
@@ -328,7 +328,7 @@ define i1 @assume_same_bb_after_condition(i8 %a, i8 %b, i1 %c) {
328
328
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw nsw i8 [[A:%.*]], 1
329
329
; CHECK-NEXT: [[T_1:%.*]] = icmp ule i8 [[ADD_1]], [[B:%.*]]
330
330
; CHECK-NEXT: [[T_2:%.*]] = icmp ule i8 [[A]], [[B]]
331
- ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 [[T_1]], [[T_2]]
331
+ ; CHECK-NEXT: [[RES_1:%.*]] = xor i1 true, true
332
332
; CHECK-NEXT: [[ADD_2:%.*]] = add nuw nsw i8 [[A]], 2
333
333
; CHECK-NEXT: [[C_1:%.*]] = icmp ule i8 [[ADD_2]], [[B]]
334
334
; CHECK-NEXT: [[RES_2:%.*]] = xor i1 [[RES_1]], [[C_1]]
@@ -394,6 +394,7 @@ exit:
394
394
}
395
395
396
396
; The information of from the assume can be used to simplify %t.2.
397
+ ; TODO
397
398
define i1 @assume_single_bb_conditions_after_assume (i8 %a , i8 %b , i1 %c ) {
398
399
; CHECK-LABEL: @assume_single_bb_conditions_after_assume(
399
400
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw nsw i8 [[A:%.*]], 1
@@ -425,6 +426,7 @@ define i1 @assume_single_bb_conditions_after_assume(i8 %a, i8 %b, i1 %c) {
425
426
}
426
427
427
428
; The information of from the assume can be used to simplify %t.2.
429
+ ; TODO
428
430
define i1 @assume_single_bb_assume_at_end_after_may_unwind (i8 %a , i8 %b , i1 %c ) {
429
431
; CHECK-LABEL: @assume_single_bb_assume_at_end_after_may_unwind(
430
432
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw nsw i8 [[A:%.*]], 1
@@ -457,6 +459,7 @@ define i1 @assume_single_bb_assume_at_end_after_may_unwind(i8 %a, i8 %b, i1 %c)
457
459
458
460
; The definition of %t.2 is before the @llvm.assume call, but all uses are
459
461
; after the call. %t.2 can be simplified.
462
+ ; TODO
460
463
define i1 @all_uses_after_assume (i8 %a , i8 %b , i1 %c ) {
461
464
; CHECK-LABEL: @all_uses_after_assume(
462
465
; CHECK-NEXT: [[ADD_1:%.*]] = add nuw nsw i8 [[A:%.*]], 1
0 commit comments