brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.2 KiB · 894652a Raw
173 lines · plain
1//===----------------------------------------------------------------------===//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-exception6//7//===----------------------------------------------------------------------===//8///9/// \file10/// This file contains platform-specific definitions and forward declarations11/// for device-side APIs used by the kernels.12///13//===----------------------------------------------------------------------===//14 15#ifndef CONFORMANCE_DEVICE_CODE_DEVICEAPIS_HPP16#define CONFORMANCE_DEVICE_CODE_DEVICEAPIS_HPP17 18#include <stdint.h>19 20typedef _Float16 float16;21 22#ifdef __AMDGPU__23 24// The ROCm device library uses control globals to alter codegen for the25// different targets. To avoid needing to link them in manually, we simply26// define them here.27extern "C" {28extern const inline uint8_t __oclc_unsafe_math_opt = 0;29extern const inline uint8_t __oclc_daz_opt = 0;30extern const inline uint8_t __oclc_correctly_rounded_sqrt32 = 1;31extern const inline uint8_t __oclc_finite_only_opt = 0;32extern const inline uint32_t __oclc_ISA_version = 9000;33}34 35// These aliases cause Clang to emit the control constants with ODR linkage.36// This allows us to link against the symbols without preventing them from being37// optimized out or causing symbol collisions.38[[gnu::alias("__oclc_unsafe_math_opt")]] const uint8_t __oclc_unsafe_math_opt__;39[[gnu::alias("__oclc_daz_opt")]] const uint8_t __oclc_daz_opt__;40[[gnu::alias("__oclc_correctly_rounded_sqrt32")]] const uint8_t41    __oclc_correctly_rounded_sqrt32__;42[[gnu::alias("__oclc_finite_only_opt")]] const uint8_t __oclc_finite_only_opt__;43[[gnu::alias("__oclc_ISA_version")]] const uint32_t __oclc_ISA_version__;44 45#endif // __AMDGPU__46 47#ifdef CUDA_MATH_FOUND48 49extern "C" {50 51double __nv_acos(double);52float __nv_acosf(float);53float __nv_acoshf(float);54double __nv_asin(double);55float __nv_asinf(float);56float __nv_asinhf(float);57float __nv_atanf(float);58float __nv_atan2f(float, float);59float __nv_atanhf(float);60double __nv_cbrt(double);61float __nv_cbrtf(float);62double __nv_cos(double);63float __nv_cosf(float);64float __nv_coshf(float);65float __nv_cospif(float);66float __nv_erff(float);67double __nv_exp(double);68float __nv_expf(float);69double __nv_exp10(double);70float __nv_exp10f(float);71double __nv_exp2(double);72float __nv_exp2f(float);73double __nv_expm1(double);74float __nv_expm1f(float);75double __nv_hypot(double, double);76float __nv_hypotf(float, float);77double __nv_log(double);78float __nv_logf(float);79double __nv_log10(double);80float __nv_log10f(float);81double __nv_log1p(double);82float __nv_log1pf(float);83double __nv_log2(double);84float __nv_log2f(float);85float __nv_powf(float, float);86float __nv_roundf(float);87double __nv_sin(double);88float __nv_sinf(float);89void __nv_sincos(double, double *, double *);90void __nv_sincosf(float, float *, float *);91float __nv_sinhf(float);92float __nv_sinpif(float);93double __nv_tan(double);94float __nv_tanf(float);95float __nv_tanhf(float);96} // extern "C"97 98#endif // CUDA_MATH_FOUND99 100#ifdef HIP_MATH_FOUND101 102extern "C" {103 104double __ocml_acos_f64(double);105float __ocml_acos_f32(float);106float16 __ocml_acos_f16(float16);107float __ocml_acosh_f32(float);108float16 __ocml_acosh_f16(float16);109double __ocml_asin_f64(double);110float __ocml_asin_f32(float);111float16 __ocml_asin_f16(float16);112float __ocml_asinh_f32(float);113float16 __ocml_asinh_f16(float16);114float __ocml_atan_f32(float);115float16 __ocml_atan_f16(float16);116float __ocml_atan2_f32(float, float);117float __ocml_atanh_f32(float);118float16 __ocml_atanh_f16(float16);119double __ocml_cbrt_f64(double);120float __ocml_cbrt_f32(float);121double __ocml_cos_f64(double);122float __ocml_cos_f32(float);123float16 __ocml_cos_f16(float16);124float __ocml_cosh_f32(float);125float16 __ocml_cosh_f16(float16);126float __ocml_cospi_f32(float);127float __ocml_erf_f32(float);128double __ocml_exp_f64(double);129float __ocml_exp_f32(float);130float16 __ocml_exp_f16(float16);131double __ocml_exp10_f64(double);132float __ocml_exp10_f32(float);133float16 __ocml_exp10_f16(float16);134double __ocml_exp2_f64(double);135float __ocml_exp2_f32(float);136float16 __ocml_exp2_f16(float16);137double __ocml_expm1_f64(double);138float __ocml_expm1_f32(float);139float16 __ocml_expm1_f16(float16);140double __ocml_hypot_f64(double, double);141float __ocml_hypot_f32(float, float);142double __ocml_log_f64(double);143float __ocml_log_f32(float);144float16 __ocml_log_f16(float16);145double __ocml_log10_f64(double);146float __ocml_log10_f32(float);147float16 __ocml_log10_f16(float16);148double __ocml_log1p_f64(double);149float __ocml_log1p_f32(float);150double __ocml_log2_f64(double);151float __ocml_log2_f32(float);152float16 __ocml_log2_f16(float16);153float __ocml_pow_f32(float, float);154float __ocml_round_f32(float);155double __ocml_sin_f64(double);156float __ocml_sin_f32(float);157float16 __ocml_sin_f16(float16);158double __ocml_sincos_f64(double, double *);159float __ocml_sincos_f32(float, float *);160float __ocml_sinh_f32(float);161float16 __ocml_sinh_f16(float16);162float __ocml_sinpi_f32(float);163double __ocml_tan_f64(double);164float __ocml_tan_f32(float);165float16 __ocml_tan_f16(float16);166float __ocml_tanh_f32(float);167float16 __ocml_tanh_f16(float16);168} // extern "C"169 170#endif // HIP_MATH_FOUND171 172#endif // CONFORMANCE_DEVICE_CODE_DEVICEAPIS_HPP173