brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 1934b70 Raw
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