@@ -8,10 +8,9 @@ define void @dont_merge_cbranches1(i32 %V) {
8
8
; CHECK-LABEL: @dont_merge_cbranches1(
9
9
; CHECK-NEXT: [[DIVERGENT_COND:%.*]] = icmp ne i32 [[V:%.*]], 0
10
10
; CHECK-NEXT: [[UNIFORM_COND:%.*]] = call i1 @uniform_result(i1 [[DIVERGENT_COND]])
11
- ; CHECK-NEXT: [[UNIFORM_COND_NOT:%.*]] = xor i1 [[UNIFORM_COND]], true
12
- ; CHECK-NEXT: [[DIVERGENT_COND_NOT:%.*]] = xor i1 [[DIVERGENT_COND]], true
13
- ; CHECK-NEXT: [[BRMERGE:%.*]] = select i1 [[UNIFORM_COND_NOT]], i1 true, i1 [[DIVERGENT_COND_NOT]]
14
- ; CHECK-NEXT: br i1 [[BRMERGE]], label [[EXIT:%.*]], label [[BB3:%.*]], !prof [[PROF0:![0-9]+]]
11
+ ; CHECK-NEXT: br i1 [[UNIFORM_COND]], label [[BB2:%.*]], label [[EXIT:%.*]], !prof [[PROF0:![0-9]+]]
12
+ ; CHECK: bb2:
13
+ ; CHECK-NEXT: br i1 [[DIVERGENT_COND]], label [[BB3:%.*]], label [[EXIT]]
15
14
; CHECK: bb3:
16
15
; CHECK-NEXT: call void @bar()
17
16
; CHECK-NEXT: br label [[EXIT]]
@@ -34,9 +33,9 @@ define void @dont_merge_cbranches2(i32 %V) {
34
33
; CHECK-LABEL: @dont_merge_cbranches2(
35
34
; CHECK-NEXT: [[DIVERGENT_COND:%.*]] = icmp ne i32 [[V:%.*]], 0
36
35
; CHECK-NEXT: [[UNIFORM_COND:%.*]] = call i1 @uniform_result(i1 [[DIVERGENT_COND]])
37
- ; CHECK-NEXT: [[DIVERGENT_COND_NOT :%.*]] = xor i1 [[DIVERGENT_COND ]], true
38
- ; CHECK-NEXT : [[BRMERGE:%.*]] = select i1 [[UNIFORM_COND]], i1 true, i1 [[DIVERGENT_COND_NOT]]
39
- ; CHECK-NEXT: br i1 [[BRMERGE ]], label [[EXIT :%.*]], label [[BB3:%.*]], !prof [[PROF0 ]]
36
+ ; CHECK-NEXT: br i1 [[UNIFORM_COND]], label [[EXIT :%.*]], label [[BB2:%.* ]], !prof [[PROF1:![0-9]+]]
37
+ ; CHECK: bb2:
38
+ ; CHECK-NEXT: br i1 [[DIVERGENT_COND ]], label [[BB3 :%.*]], label [[EXIT ]]
40
39
; CHECK: bb3:
41
40
; CHECK-NEXT: call void @bar()
42
41
; CHECK-NEXT: br label [[EXIT]]
0 commit comments