clang 23.0.0git
__clang_hip_libdevice_declares.h
Go to the documentation of this file.
1/*===---- __clang_hip_libdevice_declares.h - HIP device library decls -------===
2 *
3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 * See https://llvm.org/LICENSE.txt for license information.
5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 *
7 *===-----------------------------------------------------------------------===
8 */
9
10#ifndef __CLANG_HIP_LIBDEVICE_DECLARES_H__
11#define __CLANG_HIP_LIBDEVICE_DECLARES_H__
12
13#if !defined(__HIPCC_RTC__) && __has_include("hip/hip_version.h")
14#include "hip/hip_version.h"
15#endif // __has_include("hip/hip_version.h")
16
17#define __PRIVATE_AS __attribute__((opencl_private))
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23// BEGIN FLOAT
24__device__ __attribute__((const)) float __ocml_acos_f32(float);
25__device__ __attribute__((pure)) float __ocml_acosh_f32(float);
26__device__ __attribute__((const)) float __ocml_asin_f32(float);
27__device__ __attribute__((pure)) float __ocml_asinh_f32(float);
28__device__ __attribute__((const)) float __ocml_atan2_f32(float, float);
29__device__ __attribute__((const)) float __ocml_atan_f32(float);
30__device__ __attribute__((pure)) float __ocml_atanh_f32(float);
31__device__ __attribute__((pure)) float __ocml_cbrt_f32(float);
34__device__ __attribute__((pure)) __device__ float __ocml_cosh_f32(float);
38__device__ __attribute__((pure)) float __ocml_erfc_f32(float);
39__device__ __attribute__((pure)) float __ocml_erfcinv_f32(float);
40__device__ __attribute__((pure)) float __ocml_erfcx_f32(float);
41__device__ __attribute__((pure)) float __ocml_erf_f32(float);
42__device__ __attribute__((pure)) float __ocml_erfinv_f32(float);
43__device__ __attribute__((pure)) float __ocml_expm1_f32(float);
44__device__ __attribute__((const)) float __ocml_fdim_f32(float, float);
45__device__ __attribute__((const)) __device__ float __ocml_fmod_f32(float,
46 float);
47__device__ __attribute__((const)) float __ocml_hypot_f32(float, float);
48__device__ __attribute__((const)) int __ocml_ilogb_f32(float);
52__device__ __attribute__((pure)) float __ocml_log1p_f32(float);
54__device__ __attribute__((const)) float __ocml_nextafter_f32(float, float);
55__device__ __attribute__((const)) float __ocml_len3_f32(float, float, float);
56__device__ __attribute__((const)) float __ocml_len4_f32(float, float, float,
57 float);
58__device__ __attribute__((pure)) float __ocml_ncdf_f32(float);
59__device__ __attribute__((pure)) float __ocml_ncdfinv_f32(float);
60__device__ __attribute__((pure)) float __ocml_pow_f32(float, float);
61__device__ __attribute__((pure)) float __ocml_pown_f32(float, int);
62__device__ __attribute__((pure)) float __ocml_rcbrt_f32(float);
63__device__ __attribute__((const)) float __ocml_remainder_f32(float, float);
64__device__ float __ocml_remquo_f32(float, float, __PRIVATE_AS int *);
65__device__ __attribute__((const)) float __ocml_rhypot_f32(float, float);
66__device__ __attribute__((const)) float __ocml_rlen3_f32(float, float, float);
67__device__ __attribute__((const)) float __ocml_rlen4_f32(float, float, float,
68 float);
69__device__ __attribute__((pure)) float __ocml_rsqrt_f32(float);
74__device__ __attribute__((pure)) float __ocml_sinh_f32(float);
76__device__ __attribute__((const)) float __ocml_sqrt_f32(float);
77__device__ __attribute__((const)) float __ocml_native_sqrt_f32(float);
79__device__ __attribute__((pure)) float __ocml_tanh_f32(float);
83
84// BEGIN INTRINSICS
85__device__ __attribute__((const)) float __ocml_add_rte_f32(float, float);
86__device__ __attribute__((const)) float __ocml_add_rtn_f32(float, float);
87__device__ __attribute__((const)) float __ocml_add_rtp_f32(float, float);
88__device__ __attribute__((const)) float __ocml_add_rtz_f32(float, float);
89__device__ __attribute__((const)) float __ocml_sub_rte_f32(float, float);
90__device__ __attribute__((const)) float __ocml_sub_rtn_f32(float, float);
91__device__ __attribute__((const)) float __ocml_sub_rtp_f32(float, float);
92__device__ __attribute__((const)) float __ocml_sub_rtz_f32(float, float);
93__device__ __attribute__((const)) float __ocml_mul_rte_f32(float, float);
94__device__ __attribute__((const)) float __ocml_mul_rtn_f32(float, float);
95__device__ __attribute__((const)) float __ocml_mul_rtp_f32(float, float);
96__device__ __attribute__((const)) float __ocml_mul_rtz_f32(float, float);
97__device__ __attribute__((const)) float __ocml_div_rte_f32(float, float);
98__device__ __attribute__((const)) float __ocml_div_rtn_f32(float, float);
99__device__ __attribute__((const)) float __ocml_div_rtp_f32(float, float);
100__device__ __attribute__((const)) float __ocml_div_rtz_f32(float, float);
101__device__ __attribute__((const)) float __ocml_sqrt_rte_f32(float);
102__device__ __attribute__((const)) float __ocml_sqrt_rtn_f32(float);
103__device__ __attribute__((const)) float __ocml_sqrt_rtp_f32(float);
104__device__ __attribute__((const)) float __ocml_sqrt_rtz_f32(float);
105__device__ __attribute__((const)) float __ocml_fma_rte_f32(float, float, float);
106__device__ __attribute__((const)) float __ocml_fma_rtn_f32(float, float, float);
107__device__ __attribute__((const)) float __ocml_fma_rtp_f32(float, float, float);
108__device__ __attribute__((const)) float __ocml_fma_rtz_f32(float, float, float);
109// END INTRINSICS
110// END FLOAT
111
112// BEGIN DOUBLE
113__device__ __attribute__((const)) double __ocml_acos_f64(double);
114__device__ __attribute__((pure)) double __ocml_acosh_f64(double);
115__device__ __attribute__((const)) double __ocml_asin_f64(double);
116__device__ __attribute__((pure)) double __ocml_asinh_f64(double);
117__device__ __attribute__((const)) double __ocml_atan2_f64(double, double);
118__device__ __attribute__((const)) double __ocml_atan_f64(double);
119__device__ __attribute__((pure)) double __ocml_atanh_f64(double);
120__device__ __attribute__((pure)) double __ocml_cbrt_f64(double);
122__device__ __attribute__((pure)) double __ocml_cosh_f64(double);
126__device__ __attribute__((pure)) double __ocml_erfc_f64(double);
127__device__ __attribute__((pure)) double __ocml_erfcinv_f64(double);
128__device__ __attribute__((pure)) double __ocml_erfcx_f64(double);
129__device__ __attribute__((pure)) double __ocml_erf_f64(double);
130__device__ __attribute__((pure)) double __ocml_erfinv_f64(double);
131__device__ __attribute__((pure)) double __ocml_exp10_f64(double);
132__device__ __attribute__((pure)) double __ocml_exp2_f64(double);
133__device__ __attribute__((pure)) double __ocml_exp_f64(double);
134__device__ __attribute__((pure)) double __ocml_expm1_f64(double);
135__device__ __attribute__((const)) double __ocml_fdim_f64(double, double);
136__device__ __attribute__((const)) double __ocml_fmod_f64(double, double);
137__device__ __attribute__((const)) double __ocml_hypot_f64(double, double);
138__device__ __attribute__((const)) int __ocml_ilogb_f64(double);
142__device__ __attribute__((pure)) double __ocml_log10_f64(double);
143__device__ __attribute__((pure)) double __ocml_log1p_f64(double);
144__device__ __attribute__((pure)) double __ocml_log2_f64(double);
145__device__ __attribute__((pure)) double __ocml_log_f64(double);
146__device__ double __ocml_modf_f64(double, __PRIVATE_AS double *);
147__device__ __attribute__((const)) double __ocml_nextafter_f64(double, double);
148__device__ __attribute__((const)) double __ocml_len3_f64(double, double,
149 double);
150__device__ __attribute__((const)) double __ocml_len4_f64(double, double, double,
151 double);
152__device__ __attribute__((pure)) double __ocml_ncdf_f64(double);
153__device__ __attribute__((pure)) double __ocml_ncdfinv_f64(double);
154__device__ __attribute__((pure)) double __ocml_pow_f64(double, double);
155__device__ __attribute__((pure)) double __ocml_pown_f64(double, int);
156__device__ __attribute__((pure)) double __ocml_rcbrt_f64(double);
157__device__ __attribute__((const)) double __ocml_remainder_f64(double, double);
158__device__ double __ocml_remquo_f64(double, double, __PRIVATE_AS int *);
159__device__ __attribute__((const)) double __ocml_rhypot_f64(double, double);
160__device__ __attribute__((const)) double __ocml_rlen3_f64(double, double,
161 double);
162__device__ __attribute__((const)) double __ocml_rlen4_f64(double, double,
163 double, double);
164__device__ __attribute__((pure)) double __ocml_rsqrt_f64(double);
168__device__ __attribute__((pure)) double __ocml_sinh_f64(double);
171__device__ __attribute__((pure)) double __ocml_tanh_f64(double);
175
176// BEGIN INTRINSICS
177__device__ __attribute__((const)) double __ocml_add_rte_f64(double, double);
178__device__ __attribute__((const)) double __ocml_add_rtn_f64(double, double);
179__device__ __attribute__((const)) double __ocml_add_rtp_f64(double, double);
180__device__ __attribute__((const)) double __ocml_add_rtz_f64(double, double);
181__device__ __attribute__((const)) double __ocml_sub_rte_f64(double, double);
182__device__ __attribute__((const)) double __ocml_sub_rtn_f64(double, double);
183__device__ __attribute__((const)) double __ocml_sub_rtp_f64(double, double);
184__device__ __attribute__((const)) double __ocml_sub_rtz_f64(double, double);
185__device__ __attribute__((const)) double __ocml_mul_rte_f64(double, double);
186__device__ __attribute__((const)) double __ocml_mul_rtn_f64(double, double);
187__device__ __attribute__((const)) double __ocml_mul_rtp_f64(double, double);
188__device__ __attribute__((const)) double __ocml_mul_rtz_f64(double, double);
189__device__ __attribute__((const)) double __ocml_div_rte_f64(double, double);
190__device__ __attribute__((const)) double __ocml_div_rtn_f64(double, double);
191__device__ __attribute__((const)) double __ocml_div_rtp_f64(double, double);
192__device__ __attribute__((const)) double __ocml_div_rtz_f64(double, double);
193__device__ __attribute__((const)) double __ocml_sqrt_rte_f64(double);
194__device__ __attribute__((const)) double __ocml_sqrt_rtn_f64(double);
195__device__ __attribute__((const)) double __ocml_sqrt_rtp_f64(double);
196__device__ __attribute__((const)) double __ocml_sqrt_rtz_f64(double);
197__device__ __attribute__((const)) double __ocml_fma_rte_f64(double, double,
198 double);
199__device__ __attribute__((const)) double __ocml_fma_rtn_f64(double, double,
200 double);
201__device__ __attribute__((const)) double __ocml_fma_rtp_f64(double, double,
202 double);
203__device__ __attribute__((const)) double __ocml_fma_rtz_f64(double, double,
204 double);
205
206__device__ _Float16 __ocml_cos_f16(_Float16);
207__device__ __attribute__((const)) _Float16 __ocml_cvtrtn_f16_f32(float);
208__device__ __attribute__((const)) _Float16 __ocml_cvtrtp_f16_f32(float);
209__device__ __attribute__((const)) _Float16 __ocml_cvtrtz_f16_f32(float);
210__device__ __attribute__((const)) _Float16 __ocml_rsqrt_f16(_Float16);
211__device__ _Float16 __ocml_sin_f16(_Float16);
212__device__ __attribute__((pure)) _Float16 __ocml_pown_f16(_Float16, int);
213
214typedef _Float16 __2f16 __attribute__((ext_vector_type(2)));
215typedef short __2i16 __attribute__((ext_vector_type(2)));
216
218 __SIZE_TYPE__ size);
220 __SIZE_TYPE__ size);
222__device__ void *__asan_region_is_poisoned(void *beg, __SIZE_TYPE__ size);
223
224#if __has_feature(address_sanitizer)
225#define ASAN_POISON_MEMORY_REGION(addr, size) \
226 __asan_poison_memory_region((addr), (size))
227#define ASAN_UNPOISON_MEMORY_REGION(addr, size) \
228 __asan_unpoison_memory_region((addr), (size))
229#else
230#define ASAN_POISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size))
231#define ASAN_UNPOISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size))
232#endif
233
234#ifdef __cplusplus
235} // extern "C"
236#endif
237
238#endif // __CLANG_HIP_LIBDEVICE_DECLARES_H__
__device__ double __ocml_sincos_f64(double, __PRIVATE_AS double *)
__device__ double __ocml_remquo_f64(double, double, __PRIVATE_AS int *)
__device__ double __ocml_i0_f64(double)
__device__ int __asan_address_is_poisoned(const void *addr)
__device__ double __ocml_sincospi_f64(double, __PRIVATE_AS double *)
__device__ float __ocml_j1_f32(float)
__device__ double __ocml_modf_f64(double, __PRIVATE_AS double *)
__device__ float __ocml_cospi_f32(float)
__device__ void * __asan_region_is_poisoned(void *beg, __SIZE_TYPE__ size)
__device__ float __ocml_i0_f32(float)
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
__device__ double __ocml_lgamma_f64(double)
__device__ float __ocml_sincos_f32(float, __PRIVATE_AS float *)
__device__ float __ocml_remquo_f32(float, float, __PRIVATE_AS int *)
__device__ _Float16 __ocml_sin_f16(_Float16)
__device__ float __ocml_y0_f32(float)
__device__ float __ocml_i1_f32(float)
__device__ void __asan_unpoison_memory_region(const void *addr, __SIZE_TYPE__ size)
__device__ float __ocml_sincospi_f32(float, __PRIVATE_AS float *)
__device__ float __ocml_lgamma_f32(float)
__device__ double __ocml_sinpi_f64(double)
__device__ double __ocml_cospi_f64(double)
__device__ double __ocml_tgamma_f64(double)
__device__ float __ocml_tan_f32(float)
__device__ float __ocml_tgamma_f32(float)
__device__ void __asan_poison_memory_region(const void *addr, __SIZE_TYPE__ size)
__device__ float __ocml_sinpi_f32(float)
__device__ double __ocml_j1_f64(double)
__device__ double __ocml_y1_f64(double)
__device__ double __ocml_j0_f64(double)
__device__ float __ocml_cos_f32(float)
__device__ float __ocml_y1_f32(float)
__device__ _Float16 __ocml_cos_f16(_Float16)
__device__ float __ocml_j0_f32(float)
__device__ double __ocml_cos_f64(double)
__device__ double __ocml_i1_f64(double)
__device__ double __ocml_sin_f64(double)
__device__ float __ocml_sin_f32(float)
__device__ float __ocml_modf_f32(float, __PRIVATE_AS float *)
__device__ float
__device__ float __ocml_native_sin_f32(float)
__device__ float __ocml_native_cos_f32(float)
__device__ double __ocml_y0_f64(double)
__device__ double __ocml_tan_f64(double)
#define __device__