Joseph Huber 777039a51c [Libomptarget] Run CPU offloading tests using the new driver
This patch adds a new target to the OpenMP CPU offloading tests. This
tests the usage of the new driver for CPU offloading. If this all works
then we can move to transition to the new driver as the default.

Depends on D119613

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D119736
2022-02-15 15:05:32 -05:00

47 lines
1.1 KiB
C++

// RUN: %libomptarget-compilexx-run-and-check-generic
// UNSUPPORTED: x86_64-pc-linux-gnu
// UNSUPPORTED: x86_64-pc-linux-gnu-newDriver
#include <omp.h>
#include <cassert>
#include <iostream>
int main(int argc, char *argv[]) {
#pragma omp parallel for
for (int i = 0; i < 16; ++i) {
for (int n = 1; n < (1 << 13); n <<= 1) {
void *p = omp_target_alloc(n * sizeof(int), 0);
omp_target_free(p, 0);
}
}
#pragma omp parallel for
for (int i = 0; i < 16; ++i) {
for (int n = 1; n < (1 << 13); n <<= 1) {
int *p = (int *)omp_target_alloc(n * sizeof(int), 0);
#pragma omp target teams distribute parallel for is_device_ptr(p)
for (int j = 0; j < n; ++j) {
p[j] = i;
}
int buffer[n];
#pragma omp target teams distribute parallel for is_device_ptr(p) \
map(from \
: buffer)
for (int j = 0; j < n; ++j) {
buffer[j] = p[j];
}
for (int j = 0; j < n; ++j) {
assert(buffer[j] == i);
}
omp_target_free(p, 0);
}
}
std::cout << "PASS\n";
return 0;
}
// CHECK: PASS