Skip to content

Commit dca0142

Browse files
giuserosJokeren
authored andcommitted
Add a more meaningful check to make sure we are not merging blocks (#4186)
This is a follow-up to #4176 (comment) I am now counting the number of blocks with (17) and without (31) block merging. I double checked to make sure this does not pass when we use an aggressive region simplification strategy.
1 parent 1d3d015 commit dca0142

File tree

1 file changed

+8
-44
lines changed

1 file changed

+8
-44
lines changed

test/Conversion/amd/amd-convert-builtin-func.mlir

Lines changed: 8 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
// Trying to merge those blocks will cause a lot of duplication in the block arguments, which will cause
44
// an exponential growth of the argument length. Make sure we don't try to merge those blocks.
5+
// CHECK-COUNT-7: ^bb{{[0-9]+}}:
56
module {
67
llvm.func @rand() -> i1
78
llvm.func @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(!llvm.ptr<1>, i32, i1) attributes {libname = "", libpath = ""}
@@ -11,53 +12,16 @@ module {
1112
%10 = llvm.icmp "eq" %arg0, %0 : i64
1213
%true = llvm.mlir.constant(1 : i1) : i1
1314
%c = llvm.mlir.constant(1 : i32) : i32
14-
// CHECK: llvm.cond_br {{.*}}, ^bb{{.*}}, ^bb{{.*}}
15-
llvm.cond_br %10, ^bb1, ^bb14
15+
llvm.cond_br %10, ^bb1, ^bb2
1616
^bb1: // pred: ^bb0
17-
%11 = llvm.call @rand() : () -> i1
18-
// CHECK: llvm.cond_br {{.*}}, ^bb{{.*}}, ^bb{{.*}}
19-
llvm.cond_br %11, ^bb2, ^bb3
20-
^bb2: // pred: ^bb1
2117
llvm.call @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(%1, %c, %true) : (!llvm.ptr<1>, i32, i1) -> ()
22-
llvm.br ^bb4
23-
^bb3: // pred: ^bb1
24-
llvm.call @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(%2, %c, %true) : (!llvm.ptr<1>, i32, i1) -> ()
25-
llvm.br ^bb4
26-
^bb4: // 2 preds: ^bb2, ^bb3
27-
%14 = llvm.call @rand() : () -> i1
28-
// CHECK: llvm.cond_br {{.*}}, ^bb{{.*}}, ^bb{{.*}}
29-
llvm.cond_br %14, ^bb5, ^bb6
30-
^bb5: // pred: ^bb4
31-
llvm.call @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(%3, %c, %true) : (!llvm.ptr<1>, i32, i1) -> ()
32-
llvm.br ^bb13
33-
^bb6: // pred: ^bb4
34-
llvm.call @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(%4, %c, %true) : (!llvm.ptr<1>, i32, i1) -> ()
35-
llvm.br ^bb13
36-
^bb13: // 2 preds: ^bb11, ^bb12
37-
llvm.br ^bb27
38-
^bb14: // pred: ^bb0
39-
%23 = llvm.call @rand() : () -> i1
40-
// CHECK: llvm.cond_br {{.*}}, ^bb{{.*}}, ^bb{{.*}}
41-
llvm.cond_br %23, ^bb15, ^bb16
42-
^bb15: // pred: ^bb14
18+
llvm.br ^bb3
19+
20+
^bb2: // pred: ^bb0
4321
llvm.call @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(%4, %c, %true) : (!llvm.ptr<1>, i32, i1) -> ()
44-
llvm.br ^bb17
45-
^bb16: // pred: ^bb14
46-
llvm.call @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(%3, %c, %true) : (!llvm.ptr<1>, i32, i1) -> ()
47-
llvm.br ^bb17
48-
^bb17: // 2 preds: ^bb15, ^bb16
49-
%26 = llvm.call @rand() : () -> i1
50-
// CHECK: llvm.cond_br {{.*}}, ^bb{{.*}}, ^bb{{.*}}
51-
llvm.cond_br %26, ^bb18, ^bb19
52-
^bb18: // pred: ^bb17
53-
llvm.call @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(%2, %c, %true) : (!llvm.ptr<1>, i32, i1) -> ()
54-
llvm.br ^bb26
55-
^bb19: // pred: ^bb17
56-
llvm.call @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(%1, %c, %true) : (!llvm.ptr<1>, i32, i1) -> ()
57-
llvm.br ^bb26
58-
^bb26: // 2 preds: ^bb24, ^bb25
59-
llvm.br ^bb27
60-
^bb27: // 2 preds: ^bb13, ^bb26
22+
llvm.br ^bb3
23+
24+
^bb3: // 2 preds: ^bb1, ^bb2
6125
llvm.return
6226
}
6327
}

0 commit comments

Comments
 (0)