1// RUN: mlir-translate -mlir-to-llvmir %s 2>&1 | FileCheck %s 2 3// Set a dummy target triple to enable target region outlining. 4module attributes {omp.target_triples = ["dummy-target-triple"]} { 5 llvm.func @_QPfoo() { 6 %0 = llvm.mlir.constant(1 : i64) : i64 7 %1 = llvm.alloca %0 x i32 : (i64) -> !llvm.ptr 8 %2 = omp.map.info var_ptr(%1 : !llvm.ptr, i32) map_clauses(implicit) capture(ByCopy) -> !llvm.ptr 9 omp.target nowait map_entries(%2 -> %arg0 : !llvm.ptr) { 10 %3 = llvm.mlir.constant(2 : i32) : i32 11 llvm.store %3, %arg0 : i32, !llvm.ptr 12 omp.terminator 13 } 14 llvm.return 15 } 16 17 18// CHECK: define void @_QPfoo() { 19 20// CHECK: %[[TASK:.*]] = call ptr @__kmpc_omp_target_task_alloc 21// CHECK-SAME: (ptr @{{.*}}, i32 %{{.*}}, i32 {{.*}}, i64 {{.*}}, i64 {{.*}}, ptr 22// CHECK-SAME: @[[TASK_PROXY_FUNC:.*]], i64 {{.*}}) 23 24// CHECK: call i32 @__kmpc_omp_task(ptr {{.*}}, i32 %{{.*}}, ptr %[[TASK]]) 25// CHECK: } 26 27 28// CHECK: define internal void @[[TASK_PROXY_FUNC]](i32 %{{.*}}, ptr %{{.*}}) { 29// CHECK: call void @_QPfoo..omp_par(i32 %{{.*}}, ptr %{{.*}}) 30// CHECK: } 31} 32