/*===------ LLVM/Offload helpers for kernel languages (CUDA/HIP) -*- 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 * *===-----------------------------------------------------------------------=== */ #include #define __host__ __attribute__((host)) #define __device__ __attribute__((device)) #define __global__ __attribute__((global)) #define __shared__ __attribute__((shared)) #define __constant__ __attribute__((constant)) #define __managed__ __attribute__((managed)) extern "C" { typedef struct dim3 { dim3() {} dim3(unsigned x) : x(x) {} unsigned x = 0, y = 0, z = 0; } dim3; // TODO: For some reason the CUDA device compilation requires this declaration // to be present on the device while it is only used on the host. unsigned __llvmPushCallConfiguration(dim3 gridDim, dim3 blockDim, size_t sharedMem = 0, void *stream = 0); }