6#ifndef __HIP_DEVICE_COMPILE__
17#if CK_WORKAROUND_SWDEV_383542
18extern "C" __device__
float __ocml_native_recip_f32(
float);
22#if !defined(__HIPCC_RTC__) || !defined(CK_CODE_GEN_RTC)
23static inline __host__
float abs(
float x) {
return std::abs(x); };
25static inline __host__
double abs(
double x) {
return std::abs(x); };
31 return (x ^ sgn) - sgn;
38 return (x ^ sgn) - sgn;
52#ifdef CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4
56 return (x ^ sgn) - sgn;
60static inline __host__
bool isnan(
float x) {
return std::isnan(x); };
62static inline __host__
bool isnan(
double x) {
return std::isnan(x); };
64static inline __host__
bool isnan(
int8_t x)
70static inline __host__
bool isnan(
int32_t x)
76static inline __host__
bool isnan(
half_t x)
80 return (xx & 0x7FFF) > 0x7C00;
83static inline __host__
bool isnan(
f8_t x) {
return ck::fp8_is_nan(x); };
85#ifdef CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4
86static inline __host__
bool isnan(
int4_t x)
95 return static_cast<half_t>(std::sqrt(
static_cast<float>(x)));
98static inline __host__
float sqrt(
float x) {
return std::sqrt(x); };
100static inline __host__
double sqrt(
double x) {
return std::sqrt(x); };
111 return std::tanhf(x);
129 return std::acosf(x);
177 return std::atanf(x);
213 return std::asinf(x);
231 return std::asinhf(x);
237 return std::asinh(x);
267 return std::acoshf(x);
273 return std::acosh(x);
303 return std::atanhf(x);
309 return std::atanh(x);
321 return std::sinhf(x);
339 return std::ceilf(x);
357 return std::coshf(x);
375 return std::floorf(x);
381 return std::floor(x);
427inline __host__ T
pow(T x, T gamma)
436 return std::powf(x, gamma);
442 return std::pow(x, gamma);
454 return std::expm1f(x);
460 return std::expm1(x);
465static inline __device__
float abs(
float x) { return ::abs(x); };
467static inline __device__
double abs(
double x) { return ::abs(x); };
471 int8_t sgn = x >> (8 - 1);
473 return (x ^ sgn) - sgn;
480 return (x ^ sgn) - sgn;
483#ifdef CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4
486 int4_t sgn = x >> (4 - 1);
488 return (x ^ sgn) - sgn;
503static inline __device__
bool isnan(
float x) { return ::isnan(x); };
505static inline __device__
bool isnan(
double x) { return ::isnan(x); };
507static inline __device__
bool isnan(
int8_t x)
513static inline __device__
bool isnan(
int32_t x)
519#ifdef CK_EXPERIMENTAL_BIT_INT_EXTENSION_INT4
520static inline __device__
bool isnan(
int4_t x)
527static inline __device__
bool isnan(
half_t x)
531 return (xx & 0x7FFF) > 0x7C00;
534static inline __device__
bool isnan(
f8_t x) {
return ck::fp8_is_nan(x); };
538 return static_cast<half_t>(__builtin_amdgcn_sqrtf(
static_cast<float>(x)));
541static inline __device__
float sqrt(
float x) {
return __builtin_amdgcn_sqrtf(x); };
543static inline __device__
double sqrt(
double x) {
return __builtin_amdgcn_sqrt(x); };
582inline __device__ T
neg(T x)
614 return __hneg(
static_cast<__half
>(x));
636inline __device__ T
sin(T x)
656 return hsin(
static_cast<__half
>(x));
714inline __device__ T
tan(T x)
788 return hceil(
static_cast<__half
>(x));
830 return hfloor(
static_cast<__half
>(x));
834inline __device__ T
rcp(T x)
836#if !CK_WORKAROUND_SWDEV_383542
839 return __ocml_native_recip_f32(x);
844inline __device__ T
exp(T x)
852 return hexp(
static_cast<__half
>(x));
858 return __ocml_exp_f32(x);
868inline __device__ T
log(T x)
876 return hlog(
static_cast<__half
>(x));
892inline __device__ T
pow(T x, T gamma)
900 return powf(x, gamma);
906 return pow(x, gamma);
928inline __device__ T
cos(T x)
Definition utility/math.hpp:13
__host__ double expm1< double >(double x)
Definition math_v2.hpp:458
__host__ double sinh< double >(double x)
Definition math_v2.hpp:325
__host__ T log(T x)
Definition math_v2.hpp:409
__host__ double neg< double >(double x)
Definition math_v2.hpp:151
__host__ T cosh(T x)
Definition math_v2.hpp:349
__host__ T exp(T x)
Definition math_v2.hpp:391
__host__ int32_t neg< int32_t >(int32_t x)
Definition math_v2.hpp:157
__host__ double atanh< double >(double x)
Definition math_v2.hpp:307
__host__ float log< float >(float x)
Definition math_v2.hpp:415
__host__ double pow< double >(double x, double gamma)
Definition math_v2.hpp:440
__host__ double exp< double >(double x)
Definition math_v2.hpp:403
__host__ T rcp(T x)
Definition math_v2.hpp:385
__host__ double ceil< double >(double x)
Definition math_v2.hpp:343
__host__ T tan(T x)
Definition math_v2.hpp:277
__host__ double sin< double >(double x)
Definition math_v2.hpp:199
__device__ half_t floor< half_t >(half_t x)
Definition math_v2.hpp:828
__host__ float floor< float >(float x)
Definition math_v2.hpp:373
__host__ T sin(T x)
Definition math_v2.hpp:187
__host__ float neg< float >(float x)
Definition math_v2.hpp:145
__host__ double tanh< double >(double x)
Definition math_v2.hpp:115
__host__ T expm1(T x)
Definition math_v2.hpp:446
__device__ half_t log< half_t >(half_t x)
Definition math_v2.hpp:874
__host__ int8_t neg< int8_t >(int8_t x)
Definition math_v2.hpp:163
__host__ float tan< float >(float x)
Definition math_v2.hpp:283
__host__ float sin< float >(float x)
Definition math_v2.hpp:193
__device__ half_t sin< half_t >(half_t x)
Definition math_v2.hpp:654
__host__ T atan(T x)
Definition math_v2.hpp:169
__host__ float ceil< float >(float x)
Definition math_v2.hpp:337
__host__ T acos(T x)
Definition math_v2.hpp:121
__host__ float sinh< float >(float x)
Definition math_v2.hpp:319
__host__ double cos< double >(double x)
Definition math_v2.hpp:253
__host__ double asinh< double >(double x)
Definition math_v2.hpp:235
__host__ float pow< float >(float x, float gamma)
Definition math_v2.hpp:434
__host__ double tan< double >(double x)
Definition math_v2.hpp:289
__host__ T ceil(T x)
Definition math_v2.hpp:331
__host__ T asin(T x)
Definition math_v2.hpp:205
__host__ double acos< double >(double x)
Definition math_v2.hpp:133
__host__ T pow(T x, T gamma)
Definition math_v2.hpp:427
__host__ T neg(T x)
Definition math_v2.hpp:139
__host__ float acos< float >(float x)
Definition math_v2.hpp:127
__device__ half_t neg< half_t >(half_t x)
Definition math_v2.hpp:612
__host__ float cos< float >(float x)
Definition math_v2.hpp:247
__host__ double asin< double >(double x)
Definition math_v2.hpp:217
__host__ float asin< float >(float x)
Definition math_v2.hpp:211
__host__ double atan< double >(double x)
Definition math_v2.hpp:181
__host__ double floor< double >(double x)
Definition math_v2.hpp:379
__host__ double cosh< double >(double x)
Definition math_v2.hpp:361
__host__ T cos(T x)
Definition math_v2.hpp:241
__host__ float expm1< float >(float x)
Definition math_v2.hpp:452
__host__ T floor(T x)
Definition math_v2.hpp:367
__host__ float tanh< float >(float x)
Definition math_v2.hpp:109
__host__ double acosh< double >(double x)
Definition math_v2.hpp:271
__host__ T asinh(T x)
Definition math_v2.hpp:223
__host__ float cosh< float >(float x)
Definition math_v2.hpp:355
__device__ half_t exp< half_t >(half_t x)
Definition math_v2.hpp:850
__host__ T atanh(T x)
Definition math_v2.hpp:295
__host__ T tanh(T x)
Definition math_v2.hpp:103
__host__ float exp< float >(float x)
Definition math_v2.hpp:397
__host__ float asinh< float >(float x)
Definition math_v2.hpp:229
__host__ float acosh< float >(float x)
Definition math_v2.hpp:265
__host__ float atan< float >(float x)
Definition math_v2.hpp:175
__host__ float atanh< float >(float x)
Definition math_v2.hpp:301
__host__ T acosh(T x)
Definition math_v2.hpp:259
__device__ half_t ceil< half_t >(half_t x)
Definition math_v2.hpp:786
__host__ double log< double >(double x)
Definition math_v2.hpp:421
__host__ T sinh(T x)
Definition math_v2.hpp:313
f8_fnuz_t f8_t
Definition amd_ck_fp8.hpp:1762
_Float16 half_t
Definition data_type.hpp:31
__host__ __device__ constexpr Y type_convert(X x)
Definition utility/type_convert.hpp:98
_BitInt(4) int4_t
Definition data_type.hpp:32
__host__ __device__ constexpr Y bit_cast(const X &x)
Definition type.hpp:306
unsigned short uint16_t
Definition stdint.h:125
signed int int32_t
Definition stdint.h:123
signed char int8_t
Definition stdint.h:121