|
| 1 | +// RUN: triton-opt --convert-builtin-func-to-llvm %s | FileCheck %s |
| 2 | + |
| 3 | +// Trying to merge those blocks will cause a lot of duplication in the block arguments, which will cause |
| 4 | +// an exponential growth of the argument length. Make sure we don't try to merge those blocks. |
| 5 | +module { |
| 6 | + llvm.func @rand() -> i1 |
| 7 | + llvm.func @"__predicated_store_!llvm.void_!llvm.ptr<1>_i32_i1_"(!llvm.ptr<1>, i32, i1) attributes {libname = "", libpath = ""} |
| 8 | + |
| 9 | + llvm.func @top(%arg0: i64, %1 : !llvm.ptr<1>, %2 : !llvm.ptr<1>, %3 : !llvm.ptr<1>, %4 : !llvm.ptr<1>) { |
| 10 | + %0 = llvm.mlir.constant(0 : i64) : i64 |
| 11 | + %10 = llvm.icmp "eq" %arg0, %0 : i64 |
| 12 | + %true = llvm.mlir.constant(1 : i1) : i1 |
| 13 | + %c = llvm.mlir.constant(1 : i32) : i32 |
| 14 | + // CHECK: llvm.cond_br {{.*}}, ^bb{{.*}}, ^bb{{.*}} |
| 15 | + llvm.cond_br %10, ^bb1, ^bb14 |
| 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 | + 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 |
| 43 | + 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 |
| 61 | + llvm.return |
| 62 | + } |
| 63 | +} |
0 commit comments