1 //===-- NVPTX specific definitions for math support -----------------------===// 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 #ifndef LLVM_LIBC_SRC_MATH_NVPTX_NVPTX_H 10 #define LLVM_LIBC_SRC_MATH_NVPTX_NVPTX_H 11 12 #include "declarations.h" 13 14 #include "src/__support/macros/attributes.h" 15 #include "src/__support/macros/config.h" 16 17 namespace LIBC_NAMESPACE_DECL { 18 namespace internal { 19 LIBC_INLINE double acos(double x) { return __nv_acos(x); } 20 LIBC_INLINE float acosf(float x) { return __nv_acosf(x); } 21 LIBC_INLINE double acosh(double x) { return __nv_acosh(x); } 22 LIBC_INLINE float acoshf(float x) { return __nv_acoshf(x); } 23 LIBC_INLINE double asin(double x) { return __nv_asin(x); } 24 LIBC_INLINE float asinf(float x) { return __nv_asinf(x); } 25 LIBC_INLINE double asinh(double x) { return __nv_asinh(x); } 26 LIBC_INLINE float asinhf(float x) { return __nv_asinhf(x); } 27 LIBC_INLINE double atan2(double x, double y) { return __nv_atan2(x, y); } 28 LIBC_INLINE float atan2f(float x, float y) { return __nv_atan2f(x, y); } 29 LIBC_INLINE double atan(double x) { return __nv_atan(x); } 30 LIBC_INLINE float atanf(float x) { return __nv_atanf(x); } 31 LIBC_INLINE double atanh(double x) { return __nv_atanh(x); } 32 LIBC_INLINE float atanhf(float x) { return __nv_atanhf(x); } 33 LIBC_INLINE double cos(double x) { return __nv_cos(x); } 34 LIBC_INLINE float cosf(float x) { return __nv_cosf(x); } 35 LIBC_INLINE double cosh(double x) { return __nv_cosh(x); } 36 LIBC_INLINE float coshf(float x) { return __nv_coshf(x); } 37 LIBC_INLINE double erf(double x) { return __nv_erf(x); } 38 LIBC_INLINE float erff(float x) { return __nv_erff(x); } 39 LIBC_INLINE double exp(double x) { return __nv_exp(x); } 40 LIBC_INLINE float expf(float x) { return __nv_expf(x); } 41 LIBC_INLINE double exp2(double x) { return __nv_exp2(x); } 42 LIBC_INLINE float exp2f(float x) { return __nv_exp2f(x); } 43 LIBC_INLINE double exp10(double x) { return __nv_exp10(x); } 44 LIBC_INLINE float exp10f(float x) { return __nv_exp10f(x); } 45 LIBC_INLINE double expm1(double x) { return __nv_expm1(x); } 46 LIBC_INLINE float expm1f(float x) { return __nv_expm1f(x); } 47 LIBC_INLINE double fdim(double x, double y) { return __nv_fdim(x, y); } 48 LIBC_INLINE float fdimf(float x, float y) { return __nv_fdimf(x, y); } 49 LIBC_INLINE double hypot(double x, double y) { return __nv_hypot(x, y); } 50 LIBC_INLINE float hypotf(float x, float y) { return __nv_hypotf(x, y); } 51 LIBC_INLINE int ilogb(double x) { return __nv_ilogb(x); } 52 LIBC_INLINE int ilogbf(float x) { return __nv_ilogbf(x); } 53 LIBC_INLINE double ldexp(double x, int i) { return __nv_ldexp(x, i); } 54 LIBC_INLINE float ldexpf(float x, int i) { return __nv_ldexpf(x, i); } 55 LIBC_INLINE long long llrint(double x) { return __nv_llrint(x); } 56 LIBC_INLINE long long llrintf(float x) { return __nv_llrintf(x); } 57 LIBC_INLINE double log10(double x) { return __nv_log10(x); } 58 LIBC_INLINE float log10f(float x) { return __nv_log10f(x); } 59 LIBC_INLINE double log1p(double x) { return __nv_log1p(x); } 60 LIBC_INLINE float log1pf(float x) { return __nv_log1pf(x); } 61 LIBC_INLINE double log2(double x) { return __nv_log2(x); } 62 LIBC_INLINE float log2f(float x) { return __nv_log2f(x); } 63 LIBC_INLINE double log(double x) { return __nv_log(x); } 64 LIBC_INLINE float logf(float x) { return __nv_logf(x); } 65 LIBC_INLINE long lrint(double x) { return __nv_lrint(x); } 66 LIBC_INLINE long lrintf(float x) { return __nv_lrintf(x); } 67 LIBC_INLINE double nextafter(double x, double y) { 68 return __nv_nextafter(x, y); 69 } 70 LIBC_INLINE float nextafterf(float x, float y) { return __nv_nextafterf(x, y); } 71 LIBC_INLINE double pow(double x, double y) { return __nv_pow(x, y); } 72 LIBC_INLINE float powf(float x, float y) { return __nv_powf(x, y); } 73 LIBC_INLINE double sin(double x) { return __nv_sin(x); } 74 LIBC_INLINE float sinf(float x) { return __nv_sinf(x); } 75 LIBC_INLINE void sincos(double x, double *sinptr, double *cosptr) { 76 return __nv_sincos(x, sinptr, cosptr); 77 } 78 LIBC_INLINE void sincosf(float x, float *sinptr, float *cosptr) { 79 return __nv_sincosf(x, sinptr, cosptr); 80 } 81 LIBC_INLINE double sinh(double x) { return __nv_sinh(x); } 82 LIBC_INLINE float sinhf(float x) { return __nv_sinhf(x); } 83 LIBC_INLINE double tan(double x) { return __nv_tan(x); } 84 LIBC_INLINE float tanf(float x) { return __nv_tanf(x); } 85 LIBC_INLINE double tanh(double x) { return __nv_tanh(x); } 86 LIBC_INLINE float tanhf(float x) { return __nv_tanhf(x); } 87 LIBC_INLINE double scalbn(double x, int i) { return __nv_scalbn(x, i); } 88 LIBC_INLINE float scalbnf(float x, int i) { return __nv_scalbnf(x, i); } 89 LIBC_INLINE double frexp(double x, int *i) { return __nv_frexp(x, i); } 90 LIBC_INLINE float frexpf(float x, int *i) { return __nv_frexpf(x, i); } 91 LIBC_INLINE double remquo(double x, double y, int *i) { 92 return __nv_remquo(x, y, i); 93 } 94 LIBC_INLINE float remquof(float x, float y, int *i) { 95 return __nv_remquof(x, y, i); 96 } 97 LIBC_INLINE double tgamma(double x) { return __nv_tgamma(x); } 98 LIBC_INLINE float tgammaf(float x) { return __nv_tgammaf(x); } 99 100 } // namespace internal 101 } // namespace LIBC_NAMESPACE_DECL 102 103 #endif // LLVM_LIBC_SRC_MATH_NVPTX_NVPTX_H 104