| #pragma omp declare target |
| int |
| f30 (void) |
| { |
| return 30; |
| } |
| |
| int |
| f35 (void) |
| { |
| return 35; |
| } |
| |
| int |
| f53 (void) |
| { |
| return 53; |
| } |
| |
| int |
| f70 (void) |
| { |
| return 70; |
| } |
| |
| int |
| f75 (void) |
| { |
| return 75; |
| } |
| |
| int |
| f80 (void) |
| { |
| return 80; |
| } |
| |
| #pragma omp declare variant (f30) match (device={isa("sm_30")}) |
| #pragma omp declare variant (f35) match (device={isa("sm_35")}) |
| #pragma omp declare variant (f53) match (device={isa("sm_53")}) |
| #pragma omp declare variant (f70) match (device={isa("sm_70")}) |
| #pragma omp declare variant (f75) match (device={isa("sm_75")}) |
| #pragma omp declare variant (f80) match (device={isa("sm_80")}) |
| int |
| f (void) |
| { |
| return 0; |
| } |
| |
| #pragma omp end declare target |
| |
| int |
| main (void) |
| { |
| int v = 0; |
| |
| #pragma omp target map(from:v) |
| v = f (); |
| |
| if (v == 0) |
| __builtin_abort (); |
| |
| __builtin_printf ("Nvptx accelerator: sm_%d\n", v); |
| |
| return 0; |
| } |