//===--------- libm/libm-nvptx.h ------------------------------------------===//
//
//                The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef __LIBM_NVTPX_H__
#define __LIBM_NVTPX_H__

unsigned int __brev(unsigned int __a);
unsigned long long __brevll(unsigned long long __a);
unsigned int __byte_perm(unsigned int __a, unsigned int __b,
                                    unsigned int __c) ;
int __clz(int __a) ; 
int __clzll(long long __a) ; 
float __cosf(float __a) ; 
double __dAtomicAdd(double *__p, double __v) ;
double __dAtomicAdd_block(double *__p, double __v) ;
double __dAtomicAdd_system(double *__p, double __v) ;
double __dadd_rd(double __a, double __b) ;
double __dadd_rn(double __a, double __b) ;
double __dadd_ru(double __a, double __b) ;
double __dadd_rz(double __a, double __b) ;
double __ddiv_rd(double __a, double __b) ;
double __ddiv_rn(double __a, double __b) ;
double __ddiv_ru(double __a, double __b) ;
double __ddiv_rz(double __a, double __b) ;
double __dmul_rd(double __a, double __b) ;
double __dmul_rn(double __a, double __b) ;
double __dmul_ru(double __a, double __b) ;
double __dmul_rz(double __a, double __b) ;
float __double2float_rd(double __a) ;
float __double2float_rn(double __a) ;
float __double2float_ru(double __a) ;
float __double2float_rz(double __a) ;
int __double2hiint(double __a) ; 
int __double2int_rd(double __a) ; 
int __double2int_rn(double __a) ; 
int __double2int_ru(double __a) ; 
int __double2int_rz(double __a) ; 
long long __double2ll_rd(double __a) ;
long long __double2ll_rn(double __a) ;
long long __double2ll_ru(double __a) ;
long long __double2ll_rz(double __a) ;
int __double2loint(double __a) ; 
unsigned int __double2uint_rd(double __a) ;
unsigned int __double2uint_rn(double __a) ;
unsigned int __double2uint_ru(double __a) ;
unsigned int __double2uint_rz(double __a) ;
unsigned long long __double2ull_rd(double __a) ;
unsigned long long __double2ull_rn(double __a) ;
unsigned long long __double2ull_ru(double __a) ;
unsigned long long __double2ull_rz(double __a) ;
long long __double_as_longlong(double __a) ;
double __drcp_rd(double __a) ; 
double __drcp_rn(double __a) ; 
double __drcp_ru(double __a) ; 
double __drcp_rz(double __a) ; 
double __dsqrt_rd(double __a) ; 
double __dsqrt_rn(double __a) ; 
double __dsqrt_ru(double __a) ; 
double __dsqrt_rz(double __a) ; 
double __dsub_rd(double __a, double __b) ;
double __dsub_rn(double __a, double __b) ;
double __dsub_ru(double __a, double __b) ;
double __dsub_rz(double __a, double __b) ;
float __exp10f(float __a) ; 
float __expf(float __a) ; 
float __fadd_rd(float __a, float __b) ;
float __fadd_rn(float __a, float __b) ;
float __fadd_ru(float __a, float __b) ;
float __fadd_rz(float __a, float __b) ;
float __fdiv_rd(float __a, float __b) ;
float __fdiv_rn(float __a, float __b) ;
float __fdiv_ru(float __a, float __b) ;
float __fdiv_rz(float __a, float __b) ;
float __fdividef(float __a, float __b) ;
int __ffs(int __a) ; 
int __ffsll(long long __a) ; 
int __finite(double __a) ; 
int __finitef(float __a) ; 
int __float2int_rd(float __a) ; 
int __float2int_rn(float __a) ; 
int __float2int_ru(float __a) ; 
int __float2int_rz(float __a) ; 
long long __float2ll_rd(float __a) ; 
long long __float2ll_rn(float __a) ; 
long long __float2ll_ru(float __a) ; 
long long __float2ll_rz(float __a) ; 
unsigned int __float2uint_rd(float __a) ;
unsigned int __float2uint_rn(float __a) ;
unsigned int __float2uint_ru(float __a) ;
unsigned int __float2uint_rz(float __a) ;
unsigned long long __float2ull_rd(float __a) ;
unsigned long long __float2ull_rn(float __a) ;
unsigned long long __float2ull_ru(float __a) ;
unsigned long long __float2ull_rz(float __a) ;
int __float_as_int(float __a) ; 
unsigned int __float_as_uint(float __a) ;
double __fma_rd(double __a, double __b, double __c) ;
double __fma_rn(double __a, double __b, double __c) ;
double __fma_ru(double __a, double __b, double __c) ;
double __fma_rz(double __a, double __b, double __c) ;
float __fmaf_ieee_rd(float __a, float __b, float __c) ;
float __fmaf_ieee_rn(float __a, float __b, float __c) ;
float __fmaf_ieee_ru(float __a, float __b, float __c) ;
float __fmaf_ieee_rz(float __a, float __b, float __c) ;
float __fmaf_rd(float __a, float __b, float __c) ;
float __fmaf_rn(float __a, float __b, float __c) ;
float __fmaf_ru(float __a, float __b, float __c) ;
float __fmaf_rz(float __a, float __b, float __c) ;
float __fmul_rd(float __a, float __b) ;
float __fmul_rn(float __a, float __b) ;
float __fmul_ru(float __a, float __b) ;
float __fmul_rz(float __a, float __b) ;
float __frcp_rd(float __a) ; 
float __frcp_rn(float __a) ; 
float __frcp_ru(float __a) ; 
float __frcp_rz(float __a) ; 
float __frsqrt_rn(float __a) ; 
float __fsqrt_rd(float __a) ; 
float __fsqrt_rn(float __a) ; 
float __fsqrt_ru(float __a) ; 
float __fsqrt_rz(float __a) ; 
float __fsub_rd(float __a, float __b) ;
float __fsub_rn(float __a, float __b) ;
float __fsub_ru(float __a, float __b) ;
float __fsub_rz(float __a, float __b) ;
int __hadd(int __a, int __b) ; 
double __hiloint2double(int __a, int __b) ;
double __int2double_rn(int __a) ; 
float __int2float_rd(int __a) ; 
float __int2float_rn(int __a) ; 
float __int2float_ru(int __a) ; 
float __int2float_rz(int __a) ; 
float __int_as_float(int __a) ; 
int __isfinited(double __a) ; 
int __isinf(double __a) ; 
int __isinff(float __a) ; 
int __isnan(double __a) ; 
int __isnanf(float __a) ; 
double __ll2double_rd(long long __a) ;
double __ll2double_rn(long long __a) ;
double __ll2double_ru(long long __a) ;
double __ll2double_rz(long long __a) ;
float __ll2float_rd(long long __a) ; 
float __ll2float_rn(long long __a) ; 
float __ll2float_ru(long long __a) ; 
float __ll2float_rz(long long __a) ; 
float __log10f(float __a) ; 
float __log2f(float __a) ; 
float __logf(float __a) ; 
double __longlong_as_double(long long __a) ;
int __mul24(int __a, int __b) ; 
long long __mul64hi(long long __a, long long __b) ;
int __mulhi(int __a, int __b) ; 
unsigned int __pm0(void) ; 
unsigned int __pm1(void) ; 
unsigned int __pm2(void) ; 
unsigned int __pm3(void) ; 
int __popc(int __a) ; 
int __popcll(long long __a) ; 
float __powf(float __a, float __b) ;
int __rhadd(int __a, int __b) ; 
unsigned int __sad(int __a, int __b, unsigned int __c) ;
float __saturatef(float __a) ; 
int __signbitd(double __a) ; 
int __signbitf(float __a) ; 
void __sincosf(float __a, float *__s, float *__c) ;
float __sinf(float __a) ; 
int __syncthreads_and(int __a) ; 
int __syncthreads_count(int __a) ; 
int __syncthreads_or(int __a) ; 
float __tanf(float __a) ; 
unsigned int __uhadd(unsigned int __a, unsigned int __b) ;
double __uint2double_rn(unsigned int __a) ;
float __uint2float_rd(unsigned int __a) ;
float __uint2float_rn(unsigned int __a) ;
float __uint2float_ru(unsigned int __a) ;
float __uint2float_rz(unsigned int __a) ;
float __uint_as_float(unsigned int __a) ;
double __ull2double_rd(unsigned long long __a) ;
double __ull2double_rn(unsigned long long __a) ;
double __ull2double_ru(unsigned long long __a) ;
double __ull2double_rz(unsigned long long __a) ;
float __ull2float_rd(unsigned long long __a) ;
float __ull2float_rn(unsigned long long __a) ;
float __ull2float_ru(unsigned long long __a) ;
float __ull2float_rz(unsigned long long __a) ;
unsigned long long __ullAtomicAdd(unsigned long long *__p,
                                             unsigned long long __v) ;
unsigned long long __ullAtomicAdd_block(unsigned long long *__p,
                                                   unsigned long long __v) ;
unsigned long long __ullAtomicAdd_system(unsigned long long *__p,
                                                    unsigned long long __v) ;
unsigned long long __ullAtomicAnd(unsigned long long *__p,
                                             unsigned long long __v) ;
unsigned long long __ullAtomicAnd_block(unsigned long long *__p,
                                                   unsigned long long __v) ;
unsigned long long __ullAtomicAnd_system(unsigned long long *__p,
                                                    unsigned long long __v) ;
unsigned long long __ullAtomicCAS(unsigned long long *__p, unsigned long long __cmp, unsigned long long __v) ;
unsigned long long __ullAtomicCAS_block(unsigned long long *__p, unsigned long long __cmp, unsigned long long __v) ;
unsigned long long __ullAtomicCAS_system(unsigned long long *__p, unsigned long long __cmp, unsigned long long __v) ;
unsigned long long __ullAtomicExch(unsigned long long *__p,
                                              unsigned long long __v) ;
unsigned long long __ullAtomicExch_block(unsigned long long *__p,
                                                    unsigned long long __v) ;
unsigned long long __ullAtomicExch_system(unsigned long long *__p,
                                                     unsigned long long __v) ;
unsigned long long __ullAtomicMax(unsigned long long *__p,
                                             unsigned long long __v) ;
unsigned long long __ullAtomicMax_block(unsigned long long *__p,
                                                   unsigned long long __v) ;
unsigned long long __ullAtomicMax_system(unsigned long long *__p,
                                                    unsigned long long __v) ;
unsigned long long __ullAtomicMin(unsigned long long *__p,
                                             unsigned long long __v) ;
unsigned long long __ullAtomicMin_block(unsigned long long *__p,
                                                   unsigned long long __v) ;
unsigned long long __ullAtomicMin_system(unsigned long long *__p,
                                                    unsigned long long __v) ;
unsigned long long __ullAtomicOr(unsigned long long *__p,
                                            unsigned long long __v) ;
unsigned long long __ullAtomicOr_block(unsigned long long *__p,
                                                  unsigned long long __v) ;
unsigned long long __ullAtomicOr_system(unsigned long long *__p,
                                                   unsigned long long __v) ;
unsigned long long __ullAtomicXor(unsigned long long *__p,
                                             unsigned long long __v) ;
unsigned long long __ullAtomicXor_block(unsigned long long *__p,
                                                   unsigned long long __v) ;
unsigned long long __ullAtomicXor_system(unsigned long long *__p,
                                                    unsigned long long __v) ;
unsigned int __umul24(unsigned int __a, unsigned int __b) ;
unsigned long long __umul64hi(unsigned long long __a,
                                         unsigned long long __b) ;
unsigned int __umulhi(unsigned int __a, unsigned int __b) ;
unsigned int __urhadd(unsigned int __a, unsigned int __b) ;
unsigned int __usad(unsigned int __a, unsigned int __b,
                               unsigned int __c) ;
int abs(int __a)  ; 
double fabs(double __a)  ; 
double acos(double __a) ; 
float acosf(float __a) ; 
double acosh(double __a) ; 
float acoshf(float __a) ; 
double asin(double __a) ; 
float asinf(float __a) ; 
double asinh(double __a) ; 
float asinhf(float __a) ; 
double atan(double __a) ; 
double atan2(double __a, double __b) ; 
float atan2f(float __a, float __b) ; 
float atanf(float __a) ; 
double atanh(double __a) ; 
float atanhf(float __a) ; 
double cbrt(double __a) ; 
float cbrtf(float __a) ; 
double ceil(double __a) ; 
float ceilf(float __a) ; 
double copysign(double __a, double __b) ;
float copysignf(float __a, float __b) ;
double cos(double __a) ; 
float cosf(float __a) ;
double cosh(double __a) ; 
float coshf(float __a) ; 
double cospi(double __a) ; 
float cospif(float __a) ; 
double cyl_bessel_i0(double __a) ; 
float cyl_bessel_i0f(float __a) ; 
double cyl_bessel_i1(double __a) ; 
float cyl_bessel_i1f(float __a) ; 
double erf(double __a) ; 
double erfc(double __a) ; 
float erfcf(float __a) ; 
double erfcinv(double __a) ; 
float erfcinvf(float __a) ; 
double erfcx(double __a) ; 
float erfcxf(float __a) ; 
float erff(float __a) ; 
double erfinv(double __a) ; 
float erfinvf(float __a) ; 
double exp(double __a) ; 
double exp10(double __a) ; 
float exp10f(float __a) ; 
double exp2(double __a) ; 
float exp2f(float __a) ; 
float expf(float __a) ; 
double expm1(double __a) ; 
float expm1f(float __a) ; 
float fabsf(float __a) ; 
double fdim(double __a, double __b) ; 
float fdimf(float __a, float __b) ; 
double fdivide(double __a, double __b) ; 
float fdividef(float __a, float __b) ;
double floor(double __f) ; 
float floorf(float __f) ; 
double fma(double __a, double __b, double __c) ;
float fmaf(float __a, float __b, float __c) ;
double fmax(double __a, double __b) ; 
float fmaxf(float __a, float __b) ; 
double fmin(double __a, double __b) ; 
float fminf(float __a, float __b) ; 
double fmod(double __a, double __b) ; 
float fmodf(float __a, float __b) ; 
double frexp(double __a, int *__b) ; 
float frexpf(float __a, int *__b) ; 
double hypot(double __a, double __b) ; 
float hypotf(float __a, float __b) ; 
int ilogb(double __a) ; 
int ilogbf(float __a) ; 
double j0(double __a) ; 
float j0f(float __a) ; 
double j1(double __a) ; 
float j1f(float __a) ; 
double jn(int __n, double __a) ; 
float jnf(int __n, float __a) ; 
double ldexp(double __a, int __b) ; 
float ldexpf(float __a, int __b) ; 
double lgamma(double __a) ; 
float lgammaf(float __a) ; 
long long llabs(long long __a)  ; 
long long llmax(long long __a, long long __b) ;
long long llmin(long long __a, long long __b) ;
long long llrint(double __a) ; 
long long llrintf(float __a) ; 
long long llround(double __a) ; 
long long llroundf(float __a) ; 
double log(double __a) ; 
double log10(double __a) ; 
float log10f(float __a) ; 
double log1p(double __a) ; 
float log1pf(float __a) ; 
double log2(double __a) ; 
float log2f(float __a) ;
double logb(double __a) ; 
float logbf(float __a) ; 
float logf(float __a) ;
int max(int __a, int __b) ; 
int min(int __a, int __b) ; 
double modf(double __a, double *__b) ; 
float modff(float __a, float *__b) ; 
double nearbyint(double __a) ; 
float nearbyintf(float __a) ; 
double nextafter(double __a, double __b) ;
float nextafterf(float __a, float __b) ;
double norm(int __dim, const double *__t) ;
double norm3d(double __a, double __b, double __c) ;
float norm3df(float __a, float __b, float __c) ;
double norm4d(double __a, double __b, double __c, double __d) ;
float norm4df(float __a, float __b, float __c, float __d) ;
double normcdf(double __a) ; 
float normcdff(float __a) ; 
double normcdfinv(double __a) ; 
float normcdfinvf(float __a) ; 
float normf(int __dim, const float *__t) ;
double pow(double __a, double __b) ; 
float powf(float __a, float __b) ; 
double powi(double __a, int __b) ; 
float powif(float __a, int __b) ; 
double rcbrt(double __a) ; 
float rcbrtf(float __a) ; 
double remainder(double __a, double __b) ;
float remainderf(float __a, float __b) ;
double remquo(double __a, double __b, int *__c) ;
float remquof(float __a, float __b, int *__c) ;
double rhypot(double __a, double __b) ;
float rhypotf(float __a, float __b) ;
double rint(double __a) ; 
float rintf(float __a) ; 
double rnorm(int __a, const double *__b) ;
double rnorm3d(double __a, double __b, double __c) ;
float rnorm3df(float __a, float __b, float __c) ;
double rnorm4d(double __a, double __b, double __c, double __d) ;
float rnorm4df(float __a, float __b, float __c, float __d) ;
float rnormf(int __dim, const float *__t) ;
double round(double __a) ; 
float roundf(float __a) ; 
double rsqrt(double __a) ; 
float rsqrtf(float __a) ; 
double scalbn(double __a, int __b) ; 
float scalbnf(float __a, int __b) ; 
double sin(double __a) ; 
void sincos(double __a, double *__s, double *__c) ;
void sincosf(float __a, float *__s, float *__c) ;
void sincospi(double __a, double *__s, double *__c) ;
void sincospif(float __a, float *__s, float *__c) ;
float sinf(float __a) ;
double sinh(double __a) ; 
float sinhf(float __a) ; 
double sinpi(double __a) ; 
float sinpif(float __a) ; 
double sqrt(double __a) ; 
float sqrtf(float __a) ; 
double tan(double __a) ; 
float tanf(float __a) ; 
double tanh(double __a) ; 
float tanhf(float __a) ; 
double tgamma(double __a) ; 
float tgammaf(float __a) ; 
double trunc(double __a) ; 
float truncf(float __a) ; 
unsigned long long ullmax(unsigned long long __a,
                                     unsigned long long __b) ;
unsigned long long ullmin(unsigned long long __a,
                                     unsigned long long __b) ;
unsigned int umax(unsigned int __a, unsigned int __b) ;
unsigned int umin(unsigned int __a, unsigned int __b) ;

#endif // __LIBM_NVTPX_H__
