blob: 4eaa324a662a466f4acd5b42daca3548cd55a3a2 [file]
//@ compile-flags: -Zoffload=Test -Zunstable-options -C opt-level=0 -Clto=fat
//@ no-prefer-dynamic
//@ needs-offload
// This test verifies that selecting an unavailable `device` in the `offload` macro panics.
#![feature(gpu_offload)]
#![no_main]
#[unsafe(no_mangle)]
fn main() {
core::offload::offload! {
kernel = kernel,
device = 99,
args = (),
}
}
#[unsafe(no_mangle)]
fn kernel() {}
// CHECK-LABEL: define{{( dso_local)?}} void @main()
// CHECK: store i32 99, ptr %device, align 4
// CHECK-NEXT: %{{[0-9_]+}} = call i32 @omp_get_num_devices()
// CHECK-NEXT: %{{[0-9_]+}} = load i32, ptr %device, align 4
// CHECK-NEXT: %{{[0-9_]+}} = icmp slt i32 %{{[0-9_]+}}, %{{[0-9_]+}}
// CHECK-NEXT: br i1 %{{[0-9_]+}}, label %bb{{[0-9]+}}, label %bb{{[0-9]+}}
// CHECK: call void @{{.*}}panic_fmt
// CHECK: unreachable
// CHECK: call i32 @__tgt_target_kernel