brintos

brintos / llvm-project-archived public Read only

0
0
Text · 927 B · a8e11f9 Raw
40 lines · c
1// RUN: %libomptarget-compile-and-run-generic2 3#include <assert.h>4#include <omp.h>5#include <stdlib.h>6 7#define N 10248#define OFFSET 169 10int main(int argc, char *argv[]) {11  int *host_data = (int *)malloc(sizeof(int) * N);12  void *device_ptr = omp_get_mapped_ptr(host_data, 0);13 14  assert(device_ptr == NULL && "the pointer should not be mapped right now");15 16#pragma omp target enter data map(to: host_data[:N])17 18  device_ptr = omp_get_mapped_ptr(host_data, 0);19 20  assert(device_ptr && "the pointer should be mapped now");21 22  void *ptr = NULL;23 24#pragma omp target map(from: ptr)25  { ptr = host_data; }26 27  assert(ptr == device_ptr && "wrong pointer mapping");28 29  device_ptr = omp_get_mapped_ptr(host_data + OFFSET, 0);30 31  assert(device_ptr && "the pointer with offset should be mapped");32 33#pragma omp target map(from: ptr)34  { ptr = host_data + OFFSET; }35 36  assert(ptr == device_ptr && "wrong pointer mapping");37 38  return 0;39}40