blob: 00f01fc714968d2a009bcc08751aaa8d2402a8a3 [file]
#include <stdint.h>
#include <omp.h>
int main (void)
{
omp_allocator_handle_t my_alloc;
const omp_alloctrait_t trait[] = { { omp_atk_alignment, 128 } };
#pragma omp target uses_allocators (traits (trait): my_alloc)
{
int *x = (int *) omp_alloc (sizeof (int), my_alloc);
if ((uintptr_t) x % 128 != 0)
__builtin_abort ();
omp_free (x, my_alloc);
}
my_alloc = (omp_allocator_handle_t) 0xABCD;
#pragma omp target uses_allocators (traits (trait): my_alloc)
{
int *x = (int *) omp_alloc (sizeof (int), my_alloc);
if ((uintptr_t) x % 128 != 0)
__builtin_abort ();
omp_free (x, my_alloc);
}
if (my_alloc != (omp_allocator_handle_t) 0xABCD)
__builtin_abort ();
/* The following creates an allocator with empty traits + default mem space. */
#pragma omp target uses_allocators (my_alloc)
{
int *x = (int *) omp_aligned_alloc (128, sizeof (int), my_alloc);
if ((uintptr_t) x % 128 != 0)
__builtin_abort ();
omp_free (x, my_alloc);
}
if (my_alloc != (omp_allocator_handle_t) 0xABCD)
__builtin_abort ();
return 0;
}