//===-------- Allocator.h - OpenMP memory allocator interface ---- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // //===----------------------------------------------------------------------===// #ifndef OMPTARGET_ALLOCATOR_H #define OMPTARGET_ALLOCATOR_H #include "Types.h" // Forward declaration. struct KernelEnvironmentTy; #pragma omp begin declare target device_type(nohost) namespace ompx { namespace allocator { static uint64_t constexpr ALIGNMENT = 16; /// Initialize the allocator according to \p KernelEnvironment void init(bool IsSPMD, KernelEnvironmentTy &KernelEnvironment); /// Allocate \p Size bytes. [[gnu::alloc_size(1), gnu::assume_aligned(ALIGNMENT), gnu::malloc]] void * alloc(uint64_t Size); /// Free the allocation pointed to by \p Ptr. void free(void *Ptr); } // namespace allocator } // namespace ompx #pragma omp end declare target #endif