88
99#pragma omp begin declare variant match(device = {kind(gpu)})
1010// Extension provided by the 'libc' project.
11- void rpc_host_call (void * fn , void * args , size_t size );
11+ unsigned long long rpc_host_call (void * fn , void * args , size_t size );
1212#pragma omp declare target to(rpc_host_call) device_type(nohost)
1313#pragma omp end declare variant
1414
1515#pragma omp begin declare variant match(device = {kind(cpu)})
1616// Dummy host implementation to make this work for all targets.
17- void rpc_host_call (void * fn , void * args , size_t size ) {
18- (( void (* )(void * ))fn )(args );
17+ unsigned long long rpc_host_call (void * fn , void * args , size_t size ) {
18+ return (( unsigned long long (* )(void * ))fn )(args );
1919}
2020#pragma omp end declare variant
2121
@@ -25,17 +25,26 @@ typedef struct args_s {
2525} args_t ;
2626
2727// CHECK-DAG: Thread: 0, Block: 0
28+ // CHECK-DAG: Result: 42
2829// CHECK-DAG: Thread: 1, Block: 0
30+ // CHECK-DAG: Result: 42
2931// CHECK-DAG: Thread: 0, Block: 1
32+ // CHECK-DAG: Result: 42
3033// CHECK-DAG: Thread: 1, Block: 1
34+ // CHECK-DAG: Result: 42
3135// CHECK-DAG: Thread: 0, Block: 2
36+ // CHECK-DAG: Result: 42
3237// CHECK-DAG: Thread: 1, Block: 2
38+ // CHECK-DAG: Result: 42
3339// CHECK-DAG: Thread: 0, Block: 3
40+ // CHECK-DAG: Result: 42
3441// CHECK-DAG: Thread: 1, Block: 3
35- void foo (void * data ) {
42+ // CHECK-DAG: Result: 42
43+ long long foo (void * data ) {
3644 assert (omp_is_initial_device () && "Not executing on host?" );
3745 args_t * args = (args_t * )data ;
3846 printf ("Thread: %d, Block: %d\n" , args -> thread_id , args -> block_id );
47+ return 42 ;
3948}
4049
4150void * fn_ptr = NULL ;
@@ -49,6 +58,7 @@ int main() {
4958#pragma omp parallel num_threads(2)
5059 {
5160 args_t args = {omp_get_thread_num (), omp_get_team_num ()};
52- rpc_host_call (fn_ptr , & args , sizeof (args_t ));
61+ unsigned long long res = rpc_host_call (fn_ptr , & args , sizeof (args_t ));
62+ printf ("Result: %d\n" , (int )res );
5363 }
5464}
0 commit comments