xref: /llvm-project/mlir/test/Conversion/ControlFlowToLLVM/assert.mlir (revision 4fed3d374dfca82d0cb32bb444985ece04438376)
1// RUN: mlir-opt %s -convert-cf-to-llvm | FileCheck %s
2
3// Same below, but using the `ConvertToLLVMPatternInterface` entry point
4// and the generic `convert-to-llvm` pass.
5// RUN: mlir-opt --convert-to-llvm="filter-dialects=cf" --split-input-file %s | FileCheck %s
6
7func.func @main() {
8  %a = arith.constant 0 : i1
9  cf.assert %a, "assertion foo"
10  return
11}
12
13// CHECK: llvm.func @puts(!llvm.ptr)
14
15// CHECK-LABEL: @main
16// CHECK: llvm.cond_br %{{.*}}, ^{{.*}}, ^[[FALSE_BRANCH:[[:alnum:]]+]]
17
18// CHECK: ^[[FALSE_BRANCH]]:
19// CHECK: %[[ADDRESS_OF:.*]] = llvm.mlir.addressof @{{.*}} : !llvm.ptr{{$}}
20// CHECK: %[[GEP:.*]] = llvm.getelementptr %[[ADDRESS_OF]][0] : (!llvm.ptr) -> !llvm.ptr, !llvm.array<{{[0-9]+}} x i8>
21// CHECK: llvm.call @puts(%[[GEP]]) : (!llvm.ptr) -> ()
22