blob: b84455bd793de37925697962e9fbd410b06968fb [file] [log] [blame]
// RUN: iree-opt --pass-pipeline='builtin.module(hal.executable(iree-hal-serialize-target-executables{target=rocm}))' \
// RUN: --verify-diagnostics %s -o -
// The final bitcode validation should error out on any external functions that
// remain in the final bitcode (post device bitcode linking).
#executable_target_rocm_hsaco_fb = #hal.executable.target<"rocm", "rocm-hsaco-fb",
{iree.gpu.target = #iree_gpu.target<arch = "gfx942", features = "",
wgp = <compute = fp16, storage = b16,
subgroup = none, dot = none, mma = [],
subgroup_size_choices = [64],
max_workgroup_sizes = [1024, 1024, 1024],
max_thread_count_per_workgroup = 1024,
max_workgroup_memory_bytes = 65536,
max_workgroup_counts = [2147483647, 2147483647, 2147483647]>>,
ukernels = "none"}>
#pipeline_layout = #hal.pipeline.layout<bindings = [#hal.pipeline.binding<storage_buffer, Indirect>],
flags = Indirect>
builtin.module {
hal.executable public @test {
// expected-error @+2 {{found an unresolved external function 'external_func' in the final bitcode}}
// expected-error @+1 {{failed to serialize executable for target backend rocm}}
hal.executable.variant public @rocm_hsaco_fb target(#executable_target_rocm_hsaco_fb) {
hal.executable.export public @test ordinal(0) layout(#pipeline_layout)
attributes {subgroup_size = 64 : index, workgroup_size = [128 : index, 2 : index, 1 : index]} {
^bb0(%arg0: !hal.device):
%c128 = arith.constant 128 : index
%c2 = arith.constant 2 : index
%c1 = arith.constant 1 : index
hal.return %c128, %c2, %c1 : index, index, index
}
builtin.module {
llvm.func @external_func() attributes {sym_visibility = "private"}
llvm.func @test() attributes { rocdl.kernel } {
llvm.call @external_func() : () -> ()
llvm.return
}
}
}
}
}