34 lines · plain
1; RUN: mlir-translate -import-llvm -split-input-file %s | FileCheck %s2 3@g = private global ptr blockaddress(@fn, %bb1)4define void @fn() {5 br label %bb16bb1:7 ret void8}9 10; CHECK: llvm.mlir.global private @g()11; CHECK: %[[ADDR:.*]] = llvm.blockaddress <function = @fn, tag = <id = [[ID:.*]]>> : !llvm.ptr12; CHECK: llvm.return %[[ADDR]] : !llvm.ptr13 14; CHECK: llvm.func @fn() {15; CHECK: llvm.br ^[[RET_BB:.*]]16; CHECK: ^[[RET_BB]]:17; CHECK: llvm.blocktag <id = [[ID]]>18; CHECK: llvm.return19; CHECK: }20 21; // -----22 23; CHECK-LABEL: blockaddr024define ptr @blockaddr0() {25 br label %bb126 ; CHECK: %[[BLOCKADDR:.*]] = llvm.blockaddress <function = @blockaddr0, tag = <id = [[BLOCK_ID:.*]]>> : !llvm.ptr27 ; CHECK: llvm.br ^[[BB1:.*]]28bb1:29 ; CHECK: ^[[BB1]]:30 ; CHECK: llvm.blocktag <id = [[BLOCK_ID]]>31 ; CHECK-NEXT: llvm.return %[[BLOCKADDR]] : !llvm.ptr32 ret ptr blockaddress(@blockaddr0, %bb1)33}34