include/hip/hip_common.h Source File

include/hip/hip_common.h Source File#

HIP Runtime API Reference: include/hip/hip_common.h Source File
hip_common.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
3 *
4 * SPDX-License-Identifier: MIT
5 */
6
7#ifndef HIP_INCLUDE_HIP_HIP_COMMON_H
8#define HIP_INCLUDE_HIP_HIP_COMMON_H
9
10#if defined(__clang__)
11#pragma clang diagnostic push
12#pragma clang diagnostic ignored "-Wreserved-macro-identifier"
13#endif
14// Common code included at start of every hip file.
15// Auto enable __HIP_PLATFORM_AMD__ if compiling on AMD platform
16// Other compiler (GCC,ICC,etc) need to set one of these macros explicitly
17#if defined(__clang__) && defined(__HIP__)
18#ifndef __HIP_PLATFORM_AMD__
19#define __HIP_PLATFORM_AMD__
20#endif
21#endif // defined(__clang__) && defined(__HIP__)
22
23// Auto enable __HIP_PLATFORM_NVIDIA__ if compiling with NVIDIA platform
24#if defined(__NVCC__) || (defined(__clang__) && defined(__CUDA__) && !defined(__HIP__))
25#ifndef __HIP_PLATFORM_NVIDIA__
26#define __HIP_PLATFORM_NVIDIA__
27#endif
28
29#ifdef __CUDACC__
30#define __HIPCC__
31#endif
32
33#endif //__NVCC__
34
35// Auto enable __HIP_DEVICE_COMPILE__ if compiled in HCC or NVCC device path
36#if (defined(__HCC_ACCELERATOR__) && __HCC_ACCELERATOR__ != 0) || \
37 (defined(__CUDA_ARCH__) && __CUDA_ARCH__ != 0)
38#define __HIP_DEVICE_COMPILE__ 1
39#endif
40
41#ifdef __GNUC__
42#define HIP_PUBLIC_API __attribute__((visibility("default")))
43#define HIP_INTERNAL_EXPORTED_API __attribute__((visibility("default")))
44#else
45#define HIP_PUBLIC_API
46#define HIP_INTERNAL_EXPORTED_API
47#endif
48
49#if __HIP_DEVICE_COMPILE__ == 0
50// 32-bit Atomics
51#define __HIP_ARCH_HAS_GLOBAL_INT32_ATOMICS__ (0)
52#define __HIP_ARCH_HAS_GLOBAL_FLOAT_ATOMIC_EXCH__ (0)
53#define __HIP_ARCH_HAS_SHARED_INT32_ATOMICS__ (0)
54#define __HIP_ARCH_HAS_SHARED_FLOAT_ATOMIC_EXCH__ (0)
55#define __HIP_ARCH_HAS_FLOAT_ATOMIC_ADD__ (0)
56
57// 64-bit Atomics
58#define __HIP_ARCH_HAS_GLOBAL_INT64_ATOMICS__ (0)
59#define __HIP_ARCH_HAS_SHARED_INT64_ATOMICS__ (0)
60
61// Doubles
62#define __HIP_ARCH_HAS_DOUBLES__ (0)
63
64// Warp cross-lane operations
65#define __HIP_ARCH_HAS_WARP_VOTE__ (0)
66#define __HIP_ARCH_HAS_WARP_BALLOT__ (0)
67#define __HIP_ARCH_HAS_WARP_SHUFFLE__ (0)
68#define __HIP_ARCH_HAS_WARP_FUNNEL_SHIFT__ (0)
69
70// Sync
71#define __HIP_ARCH_HAS_THREAD_FENCE_SYSTEM__ (0)
72#define __HIP_ARCH_HAS_SYNC_THREAD_EXT__ (0)
73
74// Misc
75#define __HIP_ARCH_HAS_SURFACE_FUNCS__ (0)
76#define __HIP_ARCH_HAS_3DGRID__ (0)
77#define __HIP_ARCH_HAS_DYNAMIC_PARALLEL__ (0)
78#endif
79
80#if defined(__clang__)
81#pragma clang diagnostic pop
82#endif
83
84#endif