2
2
3
3
// Trying to merge those blocks will cause a lot of duplication in the block arguments, which will cause
4
4
// an exponential growth of the argument length. Make sure we don't try to merge those blocks.
5
+ // CHECK-COUNT-7: ^bb{{[0-9]+}}:
5
6
module {
6
7
llvm.func @rand () -> i1
7
8
llvm.func @ " __predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_" (!llvm.ptr <1 >, i32 , i1 ) attributes {libname = " " , libpath = " " }
@@ -11,53 +12,16 @@ module {
11
12
%10 = llvm.icmp " eq" %arg0 , %0 : i64
12
13
%true = llvm.mlir.constant (1 : i1 ) : i1
13
14
%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
16
16
^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
21
17
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
43
21
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
61
25
llvm.return
62
26
}
63
27
}
0 commit comments