62 lines · c
1// RUN: %libomptarget-compile-run-and-check-generic2 3// REQUIRES: unified_shared_memory4// UNSUPPORTED: amdgcn-amd-amdhsa5//6// FIXME: https://github.com/llvm/llvm-project/issues/1612657// XFAIL: nvidiagpu8 9#pragma omp declare target10int *ptr1;11#pragma omp end declare target12int a[10];13 14#include <stdio.h>15#include <stdlib.h>16int main() {17 ptr1 = (int *)malloc(sizeof(int) * 100);18 int *ptr2;19 ptr2 = (int *)malloc(sizeof(int) * 100);20#pragma omp target map(ptr1, ptr1[ : 100])21 { ptr1[1] = 6; }22 // CHECK: 623 printf(" %d \n", ptr1[1]);24#pragma omp target data map(ptr1[ : 5])25 {26#pragma omp target map(ptr1[2], ptr1, ptr1[3]) map(ptr2, ptr2[2])27 {28 ptr1[2] = 7;29 ptr1[3] = 9;30 ptr2[2] = 7;31 }32 }33 // CHECK: 7 7 934 printf(" %d %d %d \n", ptr2[2], ptr1[2], ptr1[3]);35 free(ptr1);36#pragma omp target map(ptr2, ptr2[ : 100])37 { ptr2[1] = 6; }38 // CHECK: 639 printf(" %d \n", ptr2[1]);40 free(ptr2);41 42 a[1] = 111;43 int *p = &a[0];44 // CHECK: 11145 printf("%d %p %p\n", p[1], p, &p); // 111 hst_p1 hst_p246#pragma omp target data map(to : p[1 : 3]) map(p)47#pragma omp target data use_device_addr(p)48 {49#pragma omp target has_device_addr(p)50 {51 // CHECK: 11152 printf("%d %p %p\n", p[1], p, &p); // 111 dev_p1 dev_p253 p[1] = 222;54 // CHECK: 22255 printf("%d %p %p\n", p[1], p, &p); // 222 dev_p1 dev_p256 }57 }58 // CHECK: 11159 printf("%d %p %p\n", p[1], p, &p); // 111 hst_p1 hst_p260 return 0;61}62