1#ifndef SLANG_PRELUDE_SCALAR_INTRINSICS_H
2#define SLANG_PRELUDE_SCALAR_INTRINSICS_H
4#if !defined(SLANG_LLVM) && SLANG_PROCESSOR_X86_64 && SLANG_VC
10#ifndef SLANG_FORCE_INLINE
11#define SLANG_FORCE_INLINE inline
14#ifdef SLANG_PRELUDE_NAMESPACE
19#ifndef SLANG_PRELUDE_PI
20#define SLANG_PRELUDE_PI 3.14159265358979323846
104 return a < b ? a : b;
108 return a > b ? a : b;
110float F32_pow(
float a,
float b);
239 return ::fminf(a, b);
243 return ::fmaxf(a, b);
251 return ::fmodf(a, b);
255 return ::remainderf(a, b);
259 return float(::atan2(a, b));
264 return ::frexpf(x, e);
269 return ::modff(x, ip);
275 return ::fmaf(a, b, c);
296 return (f == 0.0f) ? 0 : ((f < 0.0f) ? -1 : 1);
337double F64_asinh(
double f);
338double F64_acosh(
double f);
339double F64_atanh(
double f);
356 return a < b ? a : b;
360 return a > b ? a : b;
362double F64_pow(
double a,
double b);
369double F64_modf(
double x,
double* ip);
496 return ::remainder(a, b);
500 return ::atan2(a, b);
505 return ::frexp(x, e);
510 return ::modf(x, ip);
516 return ::fma(a, b, c);
527 return (f == 0.0) ? 0 : ((f < 0.0) ? -1 : 1);
538 *low = uint32_t(u.
u);
539 *hi = uint32_t(u.
u >> 32);
547 *hi = int32_t(u.
u >> 32);
568 uint32_t bits = (inBits >> 16) & 0x8000;
570 uint32_t m = (inBits >> 12) & 0x07ff;
571 uint32_t e = (inBits >> 23) & 0xff;
594 m += uint32_t(m == 0 && (inBits & 0x007fffffu));
597 return (bits | 0x7c00u | m);
602 return bits | 0x7c00u;
607 bits |= (m >> (114 - e)) + ((m >> (113 - e)) & 1);
610 bits |= ((e - 112) << 10) | (m >> 1);
619 const uint32_t sign = (value & 0x8000) << 16;
620 uint32_t exponent = (value & 0x7c00) >> 10;
621 uint32_t mantissa = (value & 0x03ff);
641 exponent = (exponent == 0x1F) ? 0xff : (exponent + (-15 + 127));
648#if __cplusplus >= 202302L
654#if (defined(__clang__) && __clang_major__ >= 15) || (defined(__GNUC__) && __GNUC__ >= 12)
655#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
656#define __STDC_WANT_IEC_60559_TYPES_EXT__
664typedef _Float16
half;
665#elif __STDCPP_FLOAT16_T__ == 1
666typedef std::float16_t
half;
668uint32_t
f32tof16(
const float value);
669float f16tof32(
const uint32_t value);
675 explicit half(
float f) { store(f); }
686 store(load() + other.
load());
691 store(load() - other.
load());
696 store(load() * other.
load());
701 store(load() / other.
load());
712 explicit operator float()
const {
return load(); }
857 return (u & 0x7C00) == 0x7C00 && (u & 0x3FF) != 0;
863 return (u & 0x7C00) != 0x7C00;
869 return (u & 0x7C00) == 0x7C00 && (u & 0x3FF) == 0;
878 return a < b ? a : b;
887 return a > b ? a : b;
918 float res =
F32_modf(
float(x), &ipf);
925 return half(
F32_fma(
float(a),
float(b),
float(c)));
946 if ((u & 0x7FFF) == 0)
948 return (u & 0x8000) != 0 ? -1 : 1;
960#if SLANG_GCC_FAMILY && !defined(SLANG_LLVM)
961 return __builtin_popcount(uint32_t(v));
962#elif SLANG_PROCESSOR_X86_64 && SLANG_VC
963 return __popcnt16(v);
1010 return a < b ? a : b;
1014 return a > b ? a : b;
1031 u.
u = (uint64_t(hi) << 32) | low;
1037#if SLANG_GCC_FAMILY && !defined(SLANG_LLVM)
1038 return __builtin_popcount(v);
1039#elif SLANG_PROCESSOR_X86_64 && SLANG_VC
1057#if SLANG_GCC_FAMILY && !defined(SLANG_LLVM)
1059 return __builtin_ctz(v);
1060#elif SLANG_PROCESSOR_X86_64 && SLANG_VC
1062 unsigned long index;
1063 return _BitScanForward(&index, v) ? index : ~0u;
1066 uint32_t result = 0;
1067 while (result < 32 && !(v & (1u << result)))
1077#if SLANG_GCC_FAMILY && !defined(SLANG_LLVM)
1080 return 31 - __builtin_clz(v);
1081#elif SLANG_PROCESSOR_X86_64 && SLANG_VC
1083 unsigned long index;
1084 return _BitScanReverse(&index, v) ? index : ~0u;
1088 while (result >= 0 && !(v & (1u << result)))
1096 v = ((v >> 1) & 0x55555555u) | ((v & 0x55555555u) << 1);
1097 v = ((v >> 2) & 0x33333333u) | ((v & 0x33333333u) << 2);
1098 v = ((v >> 4) & 0x0F0F0F0Fu) | ((v & 0x0F0F0F0Fu) << 4);
1099 v = ((v >> 8) & 0x00FF00FFu) | ((v & 0x00FF00FFu) << 8);
1100 v = (v >> 16) | (v << 16);
1108 return (f < 0) ? -f : f;
1113 return a < b ? a : b;
1117 return a > b ? a : b;
1133 u.
u = (uint64_t(hi) << 32) | uint32_t(low);
1168 return a < b ? a : b;
1172 return a > b ? a : b;
1177#if SLANG_GCC_FAMILY && !defined(SLANG_LLVM)
1178 return uint32_t(__builtin_popcountll(v));
1179#elif SLANG_PROCESSOR_X86_64 && SLANG_VC
1180 return uint32_t(__popcnt64(v));
1195 return ~uint32_t(0);
1197#if SLANG_GCC_FAMILY && !defined(SLANG_LLVM)
1199 return __builtin_ctz(v);
1200#elif SLANG_PROCESSOR_X86_64 && SLANG_VC
1202 unsigned long index;
1203 return _BitScanForward64(&index, v) ? index : ~uint32_t(0);
1206 uint32_t result = 0;
1207 while (result < 64 && !(v & (uint64_t(1) << result)))
1216 return ~uint32_t(0);
1218#if SLANG_GCC_FAMILY && !defined(SLANG_LLVM)
1221 return 63 - __builtin_clz(v);
1222#elif SLANG_PROCESSOR_X86_64 && SLANG_VC
1224 unsigned long index;
1225 return _BitScanReverse64(&index, v) ? index : ~uint32_t(0);
1229 while (result >= 0 && !(v & (uint64_t(1) << result)))
1237 v = ((v >> 1) & 0x5555555555555555ull) | ((v & 0x5555555555555555ull) << 1);
1238 v = ((v >> 2) & 0x3333333333333333ull) | ((v & 0x3333333333333333ull) << 2);
1239 v = ((v >> 4) & 0x0F0F0F0F0F0F0F0Full) | ((v & 0x0F0F0F0F0F0F0F0Full) << 4);
1240 v = ((v >> 8) & 0x00FF00FF00FF00FFull) | ((v & 0x00FF00FF00FF00FFull) << 8);
1241 v = ((v >> 16) & 0x0000FFFF0000FFFFull) | ((v & 0x0000FFFF0000FFFFull) << 16);
1242 v = (v >> 32) | (v << 32);
1250 return (f < 0) ? -f : f;
1255 return a < b ? a : b;
1259 return a > b ? a : b;
1293 return a < b ? a : b;
1298 return a > b ? a : b;
1305 return (f < 0) ? -f : f;
1310 return a < b ? a : b;
1315 return a > b ? a : b;
1331 *oldValue = _InterlockedExchangeAdd((
long*)dest, (
long)value);
1333 *oldValue = __sync_fetch_and_add(dest, value);
1350#ifdef SLANG_PRELUDE_NAMESPACE
#define SLANG_PRELUDE_EXTERN_C_END
Definition slang-cpp-host-prelude.h:55
#define SLANG_PRELUDE_STD
Definition slang-cpp-host-prelude.h:22
#define SLANG_PRELUDE_EXTERN_C_START
Definition slang-cpp-host-prelude.h:54
#define SLANG_FORCE_INLINE
Definition slang-cpp-prelude.h:286
SLANG_FORCE_INLINE uint32_t U32_reversebits(uint32_t v)
Definition slang-cpp-scalar-intrinsics.h:1094
SLANG_FORCE_INLINE int32_t I32_abs(int32_t f)
Definition slang-cpp-scalar-intrinsics.h:1106
half U16_ashalf(uint16_t x)
Definition slang-cpp-scalar-intrinsics.h:975
SLANG_FORCE_INLINE float F32_rsqrt(float f)
Definition slang-cpp-scalar-intrinsics.h:290
SLANG_FORCE_INLINE int16_t F16_asint(half h)
Definition slang-cpp-scalar-intrinsics.h:732
SLANG_FORCE_INLINE double F64_modf(double x, double *ip)
Definition slang-cpp-scalar-intrinsics.h:508
SLANG_FORCE_INLINE half F16_exp(half f)
Definition slang-cpp-scalar-intrinsics.h:834
SLANG_FORCE_INLINE double F64_frexp(double x, int *e)
Definition slang-cpp-scalar-intrinsics.h:503
SLANG_FORCE_INLINE double F64_atan2(double a, double b)
Definition slang-cpp-scalar-intrinsics.h:498
SLANG_FORCE_INLINE uint32_t U32_max(uint32_t a, uint32_t b)
Definition slang-cpp-scalar-intrinsics.h:1012
SLANG_FORCE_INLINE intptr_t IPTR_max(intptr_t a, intptr_t b)
Definition slang-cpp-scalar-intrinsics.h:1313
SLANG_FORCE_INLINE double U32_asdouble(uint32_t low, uint32_t hi)
Definition slang-cpp-scalar-intrinsics.h:1028
SLANG_FORCE_INLINE double F64_exp(double f)
Definition slang-cpp-scalar-intrinsics.h:446
SLANG_FORCE_INLINE double F64_trunc(double f)
Definition slang-cpp-scalar-intrinsics.h:454
SLANG_FORCE_INLINE uintptr_t UPTR_max(uintptr_t a, uintptr_t b)
Definition slang-cpp-scalar-intrinsics.h:1296
SLANG_FORCE_INLINE half F16_acosh(half f)
Definition slang-cpp-scalar-intrinsics.h:804
SLANG_FORCE_INLINE half F16_fmod(half a, half b)
Definition slang-cpp-scalar-intrinsics.h:895
SLANG_FORCE_INLINE float F32_calcSafeRadians(float radians)
Definition slang-cpp-scalar-intrinsics.h:280
SLANG_FORCE_INLINE void F64_asint(double d, int32_t *low, int32_t *hi)
Definition slang-cpp-scalar-intrinsics.h:542
SLANG_FORCE_INLINE uint32_t I32_countbits(int32_t v)
Definition slang-cpp-scalar-intrinsics.h:1137
SLANG_FORCE_INLINE float F32_ceil(float f)
Definition slang-cpp-scalar-intrinsics.h:130
SLANG_FORCE_INLINE double F64_asin(double f)
Definition slang-cpp-scalar-intrinsics.h:406
SLANG_FORCE_INLINE uint32_t I64_firstbithigh(int64_t v)
Definition slang-cpp-scalar-intrinsics.h:1272
SLANG_FORCE_INLINE half F16_tan(half f)
Definition slang-cpp-scalar-intrinsics.h:764
SLANG_FORCE_INLINE intptr_t IPTR_min(intptr_t a, intptr_t b)
Definition slang-cpp-scalar-intrinsics.h:1308
SLANG_FORCE_INLINE int32_t I32_min(int32_t a, int32_t b)
Definition slang-cpp-scalar-intrinsics.h:1111
SLANG_FORCE_INLINE half F16_tanh(half f)
Definition slang-cpp-scalar-intrinsics.h:794
SLANG_FORCE_INLINE float F32_log2(float f)
Definition slang-cpp-scalar-intrinsics.h:190
SLANG_FORCE_INLINE uint32_t U64_firstbitlow(uint64_t v)
Definition slang-cpp-scalar-intrinsics.h:1192
SLANG_FORCE_INLINE uintptr_t UPTR_min(uintptr_t a, uintptr_t b)
Definition slang-cpp-scalar-intrinsics.h:1291
SLANG_FORCE_INLINE float F32_pow(float a, float b)
Definition slang-cpp-scalar-intrinsics.h:245
SLANG_FORCE_INLINE uintptr_t UPTR_abs(uintptr_t f)
Definition slang-cpp-scalar-intrinsics.h:1286
SLANG_FORCE_INLINE uint32_t I16_countbits(int16_t v)
Definition slang-cpp-scalar-intrinsics.h:983
SLANG_FORCE_INLINE float F32_log(float f)
Definition slang-cpp-scalar-intrinsics.h:194
SLANG_FORCE_INLINE uint32_t f32tof16(const float value)
Definition slang-cpp-scalar-intrinsics.h:563
SLANG_FORCE_INLINE float F32_log10(float f)
Definition slang-cpp-scalar-intrinsics.h:198
SLANG_FORCE_INLINE double F64_fma(double a, double b, double c)
Definition slang-cpp-scalar-intrinsics.h:514
SLANG_FORCE_INLINE double F64_pow(double a, double b)
Definition slang-cpp-scalar-intrinsics.h:486
SLANG_FORCE_INLINE half F16_atan2(half a, half b)
Definition slang-cpp-scalar-intrinsics.h:905
SLANG_FORCE_INLINE bool F16_isnan(half f)
Definition slang-cpp-scalar-intrinsics.h:854
SLANG_FORCE_INLINE double F64_log10(float f)
Definition slang-cpp-scalar-intrinsics.h:438
SLANG_FORCE_INLINE float F32_asinh(float f)
Definition slang-cpp-scalar-intrinsics.h:178
SLANG_FORCE_INLINE double F64_frac(double f)
Definition slang-cpp-scalar-intrinsics.h:529
SLANG_FORCE_INLINE uint32_t U32_firstbitlow(uint32_t v)
Definition slang-cpp-scalar-intrinsics.h:1052
SLANG_FORCE_INLINE float F32_asin(float f)
Definition slang-cpp-scalar-intrinsics.h:154
SLANG_FORCE_INLINE float F32_max(float a, float b)
Definition slang-cpp-scalar-intrinsics.h:241
SLANG_FORCE_INLINE half F16_frac(half h)
Definition slang-cpp-scalar-intrinsics.h:951
SLANG_FORCE_INLINE bool F16_isinf(half f)
Definition slang-cpp-scalar-intrinsics.h:866
SLANG_FORCE_INLINE half F16_frexp(half x, int *e)
Definition slang-cpp-scalar-intrinsics.h:910
SLANG_FORCE_INLINE double F64_cos(double f)
Definition slang-cpp-scalar-intrinsics.h:398
SLANG_FORCE_INLINE float F32_atan2(float a, float b)
Definition slang-cpp-scalar-intrinsics.h:257
SLANG_FORCE_INLINE bool F16_isfinite(half f)
Definition slang-cpp-scalar-intrinsics.h:860
SLANG_FORCE_INLINE float F32_frexp(float x, int *e)
Definition slang-cpp-scalar-intrinsics.h:262
SLANG_FORCE_INLINE float F32_exp2(float f)
Definition slang-cpp-scalar-intrinsics.h:202
SLANG_FORCE_INLINE bool F64_isnan(double f)
Definition slang-cpp-scalar-intrinsics.h:464
SLANG_FORCE_INLINE uint32_t U32_firstbithigh(uint32_t v)
Definition slang-cpp-scalar-intrinsics.h:1073
SLANG_FORCE_INLINE half F16_pow(half a, half b)
Definition slang-cpp-scalar-intrinsics.h:890
SLANG_FORCE_INLINE float _slang_fmod(float x, float y)
Definition slang-cpp-scalar-intrinsics.h:1341
SLANG_FORCE_INLINE half F16_cos(half f)
Definition slang-cpp-scalar-intrinsics.h:759
SLANG_FORCE_INLINE float F32_min(float a, float b)
Definition slang-cpp-scalar-intrinsics.h:237
SLANG_FORCE_INLINE half F16_sinh(half f)
Definition slang-cpp-scalar-intrinsics.h:784
SLANG_FORCE_INLINE uint32_t I64_firstbitlow(int64_t v)
Definition slang-cpp-scalar-intrinsics.h:1267
SLANG_FORCE_INLINE float F32_cos(float f)
Definition slang-cpp-scalar-intrinsics.h:146
SLANG_FORCE_INLINE int64_t I64_abs(int64_t f)
Definition slang-cpp-scalar-intrinsics.h:1248
SLANG_FORCE_INLINE double F64_acos(double f)
Definition slang-cpp-scalar-intrinsics.h:410
SLANG_FORCE_INLINE uint32_t U64_countbits(uint64_t v)
Definition slang-cpp-scalar-intrinsics.h:1175
SLANG_FORCE_INLINE half F16_asin(half f)
Definition slang-cpp-scalar-intrinsics.h:769
SLANG_FORCE_INLINE int64_t I64_min(int64_t a, int64_t b)
Definition slang-cpp-scalar-intrinsics.h:1253
SLANG_FORCE_INLINE uint64_t U64_reversebits(uint64_t v)
Definition slang-cpp-scalar-intrinsics.h:1235
SLANG_FORCE_INLINE half F16_modf(half x, half *ip)
Definition slang-cpp-scalar-intrinsics.h:915
SLANG_FORCE_INLINE double F64_log(double f)
Definition slang-cpp-scalar-intrinsics.h:434
SLANG_FORCE_INLINE half F16_sin(half f)
Definition slang-cpp-scalar-intrinsics.h:754
SLANG_FORCE_INLINE half F16_exp2(half f)
Definition slang-cpp-scalar-intrinsics.h:829
SLANG_FORCE_INLINE double F64_ceil(double f)
Definition slang-cpp-scalar-intrinsics.h:382
SLANG_FORCE_INLINE uint32_t _bitCastFloatToUInt(float f)
Definition slang-cpp-scalar-intrinsics.h:50
SLANG_FORCE_INLINE half F16_trunc(half f)
Definition slang-cpp-scalar-intrinsics.h:844
SLANG_FORCE_INLINE float F32_acos(float f)
Definition slang-cpp-scalar-intrinsics.h:158
SLANG_FORCE_INLINE half F16_log2(half f)
Definition slang-cpp-scalar-intrinsics.h:814
SLANG_FORCE_INLINE double F64_calcSafeRadians(double radians)
Definition slang-cpp-scalar-intrinsics.h:550
SLANG_FORCE_INLINE uint32_t U32_abs(uint32_t f)
Definition slang-cpp-scalar-intrinsics.h:1003
static const float g_f16tof32Magic
Definition slang-cpp-scalar-intrinsics.h:615
SLANG_FORCE_INLINE int F64_sign(double f)
Definition slang-cpp-scalar-intrinsics.h:525
SLANG_FORCE_INLINE int F16_sign(half f)
Definition slang-cpp-scalar-intrinsics.h:943
SLANG_FORCE_INLINE float F32_trunc(float f)
Definition slang-cpp-scalar-intrinsics.h:214
SLANG_FORCE_INLINE uint32_t U32_asint(int32_t x)
Definition slang-cpp-scalar-intrinsics.h:1023
SLANG_FORCE_INLINE double F64_tan(double f)
Definition slang-cpp-scalar-intrinsics.h:402
SLANG_FORCE_INLINE uint64_t U64_max(uint64_t a, uint64_t b)
Definition slang-cpp-scalar-intrinsics.h:1170
SLANG_FORCE_INLINE bool F64_isinf(double f)
Definition slang-cpp-scalar-intrinsics.h:472
SLANG_FORCE_INLINE uint32_t U16_countbits(uint16_t v)
Definition slang-cpp-scalar-intrinsics.h:958
SLANG_FORCE_INLINE half F16_round(half f)
Definition slang-cpp-scalar-intrinsics.h:749
SLANG_FORCE_INLINE bool F64_isfinite(double f)
Definition slang-cpp-scalar-intrinsics.h:468
SLANG_FORCE_INLINE uint32_t I8_countbits(int16_t v)
Definition slang-cpp-scalar-intrinsics.h:996
SLANG_FORCE_INLINE float F32_exp(float f)
Definition slang-cpp-scalar-intrinsics.h:206
SLANG_FORCE_INLINE float F32_fma(float a, float b, float c)
Definition slang-cpp-scalar-intrinsics.h:273
SLANG_FORCE_INLINE float F32_atan(float f)
Definition slang-cpp-scalar-intrinsics.h:162
SLANG_FORCE_INLINE void InterlockedAdd(uint32_t *dest, uint32_t value, uint32_t *oldValue)
Definition slang-cpp-scalar-intrinsics.h:1328
SLANG_FORCE_INLINE half F16_calcSafeRadians(half radians)
Definition slang-cpp-scalar-intrinsics.h:928
SLANG_FORCE_INLINE float f16tof32(const uint32_t value)
Definition slang-cpp-scalar-intrinsics.h:617
SLANG_FORCE_INLINE float F32_sin(float f)
Definition slang-cpp-scalar-intrinsics.h:142
SLANG_FORCE_INLINE float F32_floor(float f)
Definition slang-cpp-scalar-intrinsics.h:134
SLANG_FORCE_INLINE half F16_max(half a, half b)
Definition slang-cpp-scalar-intrinsics.h:881
SLANG_FORCE_INLINE half F16_log(half f)
Definition slang-cpp-scalar-intrinsics.h:819
SLANG_FORCE_INLINE float F32_tan(float f)
Definition slang-cpp-scalar-intrinsics.h:150
SLANG_FORCE_INLINE double F64_round(double f)
Definition slang-cpp-scalar-intrinsics.h:390
SLANG_FORCE_INLINE half F16_acos(half f)
Definition slang-cpp-scalar-intrinsics.h:774
SLANG_FORCE_INLINE float F32_cosh(float f)
Definition slang-cpp-scalar-intrinsics.h:170
SLANG_FORCE_INLINE float _bitCastIntToFloat(int32_t i)
Definition slang-cpp-scalar-intrinsics.h:44
SLANG_FORCE_INLINE float F32_atanh(float f)
Definition slang-cpp-scalar-intrinsics.h:186
SLANG_FORCE_INLINE double F64_remainder(double a, double b)
Definition slang-cpp-scalar-intrinsics.h:494
SLANG_FORCE_INLINE uint32_t I32_firstbitlow(int32_t v)
Definition slang-cpp-scalar-intrinsics.h:1142
SLANG_FORCE_INLINE bool F32_isnan(float f)
Definition slang-cpp-scalar-intrinsics.h:223
SLANG_FORCE_INLINE uint32_t F32_asuint(float f)
Definition slang-cpp-scalar-intrinsics.h:303
SLANG_FORCE_INLINE uint32_t I32_firstbithigh(int32_t v)
Definition slang-cpp-scalar-intrinsics.h:1147
SLANG_FORCE_INLINE int64_t I64_max(int64_t a, int64_t b)
Definition slang-cpp-scalar-intrinsics.h:1257
SLANG_FORCE_INLINE float F32_modf(float x, float *ip)
Definition slang-cpp-scalar-intrinsics.h:267
SLANG_FORCE_INLINE float _bitCastUIntToFloat(uint32_t ui)
Definition slang-cpp-scalar-intrinsics.h:56
SLANG_FORCE_INLINE double F64_atan(double f)
Definition slang-cpp-scalar-intrinsics.h:414
SLANG_FORCE_INLINE float F32_tanh(float f)
Definition slang-cpp-scalar-intrinsics.h:174
SLANG_FORCE_INLINE float F32_remainder(float a, float b)
Definition slang-cpp-scalar-intrinsics.h:253
SLANG_FORCE_INLINE int32_t F32_asint(float f)
Definition slang-cpp-scalar-intrinsics.h:309
SLANG_FORCE_INLINE half F16_atanh(half f)
Definition slang-cpp-scalar-intrinsics.h:809
SLANG_FORCE_INLINE float I32_asfloat(int32_t x)
Definition slang-cpp-scalar-intrinsics.h:1120
SLANG_FORCE_INLINE int F32_sign(float f)
Definition slang-cpp-scalar-intrinsics.h:294
SLANG_FORCE_INLINE float F32_fmod(float a, float b)
Definition slang-cpp-scalar-intrinsics.h:249
SLANG_FORCE_INLINE uint32_t U32_min(uint32_t a, uint32_t b)
Definition slang-cpp-scalar-intrinsics.h:1008
SLANG_FORCE_INLINE uint32_t U64_firstbithigh(uint64_t v)
Definition slang-cpp-scalar-intrinsics.h:1213
SLANG_FORCE_INLINE half F16_sqrt(half f)
Definition slang-cpp-scalar-intrinsics.h:849
SLANG_FORCE_INLINE uint32_t U8_countbits(uint8_t v)
Definition slang-cpp-scalar-intrinsics.h:989
SLANG_FORCE_INLINE half F16_cosh(half f)
Definition slang-cpp-scalar-intrinsics.h:789
SLANG_FORCE_INLINE half F16_asinh(half f)
Definition slang-cpp-scalar-intrinsics.h:799
SLANG_FORCE_INLINE uint32_t I64_countbits(int64_t v)
Definition slang-cpp-scalar-intrinsics.h:1262
SLANG_FORCE_INLINE intptr_t IPTR_abs(intptr_t f)
Definition slang-cpp-scalar-intrinsics.h:1303
SLANG_FORCE_INLINE float F32_abs(float f)
Definition slang-cpp-scalar-intrinsics.h:210
SLANG_FORCE_INLINE int32_t I32_max(int32_t a, int32_t b)
Definition slang-cpp-scalar-intrinsics.h:1115
SLANG_FORCE_INLINE half F16_abs(half f)
Definition slang-cpp-scalar-intrinsics.h:839
SLANG_FORCE_INLINE double F64_min(double a, double b)
Definition slang-cpp-scalar-intrinsics.h:478
SLANG_FORCE_INLINE float U32_asfloat(uint32_t x)
Definition slang-cpp-scalar-intrinsics.h:1017
SLANG_FORCE_INLINE uint32_t U32_countbits(uint32_t v)
Definition slang-cpp-scalar-intrinsics.h:1035
#define SLANG_PRELUDE_PI
Definition slang-cpp-scalar-intrinsics.h:20
SLANG_FORCE_INLINE uint32_t I32_asuint(int32_t x)
Definition slang-cpp-scalar-intrinsics.h:1126
SLANG_FORCE_INLINE void F64_asuint(double d, uint32_t *low, uint32_t *hi)
Definition slang-cpp-scalar-intrinsics.h:534
SLANG_FORCE_INLINE int32_t _bitCastFloatToInt(float f)
Definition slang-cpp-scalar-intrinsics.h:38
SLANG_FORCE_INLINE double F64_sinh(double f)
Definition slang-cpp-scalar-intrinsics.h:418
SLANG_FORCE_INLINE double F64_log2(double f)
Definition slang-cpp-scalar-intrinsics.h:430
SLANG_FORCE_INLINE bool F32_isinf(float f)
Definition slang-cpp-scalar-intrinsics.h:231
SLANG_FORCE_INLINE uint16_t F16_asuint(half h)
Definition slang-cpp-scalar-intrinsics.h:725
SLANG_FORCE_INLINE float F32_acosh(float f)
Definition slang-cpp-scalar-intrinsics.h:182
SLANG_FORCE_INLINE double F64_abs(double f)
Definition slang-cpp-scalar-intrinsics.h:450
SLANG_FORCE_INLINE double F64_exp2(double f)
Definition slang-cpp-scalar-intrinsics.h:442
SLANG_FORCE_INLINE half F16_rsqrt(half f)
Definition slang-cpp-scalar-intrinsics.h:938
SLANG_FORCE_INLINE double F64_sin(double f)
Definition slang-cpp-scalar-intrinsics.h:394
SLANG_FORCE_INLINE float F32_sinh(float f)
Definition slang-cpp-scalar-intrinsics.h:166
SLANG_FORCE_INLINE int32_t I32_reversebits(int32_t v)
Definition slang-cpp-scalar-intrinsics.h:1154
SLANG_FORCE_INLINE double F64_tanh(double f)
Definition slang-cpp-scalar-intrinsics.h:426
SLANG_FORCE_INLINE uint64_t U64_abs(uint64_t f)
Definition slang-cpp-scalar-intrinsics.h:1161
SLANG_FORCE_INLINE half F16_fma(half a, half b, half c)
Definition slang-cpp-scalar-intrinsics.h:923
SLANG_FORCE_INLINE double F64_cosh(double f)
Definition slang-cpp-scalar-intrinsics.h:422
SLANG_FORCE_INLINE half F16_min(half a, half b)
Definition slang-cpp-scalar-intrinsics.h:872
SLANG_FORCE_INLINE double I32_asdouble(int32_t low, int32_t hi)
Definition slang-cpp-scalar-intrinsics.h:1130
SLANG_FORCE_INLINE double F64_fmod(double a, double b)
Definition slang-cpp-scalar-intrinsics.h:490
SLANG_FORCE_INLINE half F16_atan(half f)
Definition slang-cpp-scalar-intrinsics.h:779
SLANG_FORCE_INLINE half F16_floor(half f)
Definition slang-cpp-scalar-intrinsics.h:744
SLANG_FORCE_INLINE uint64_t U64_min(uint64_t a, uint64_t b)
Definition slang-cpp-scalar-intrinsics.h:1166
SLANG_FORCE_INLINE double F64_sqrt(double f)
Definition slang-cpp-scalar-intrinsics.h:458
SLANG_FORCE_INLINE bool F32_isfinite(float f)
Definition slang-cpp-scalar-intrinsics.h:227
SLANG_FORCE_INLINE float F32_frac(float f)
Definition slang-cpp-scalar-intrinsics.h:298
SLANG_FORCE_INLINE float F32_sqrt(float f)
Definition slang-cpp-scalar-intrinsics.h:218
SLANG_FORCE_INLINE int64_t I64_reversebits(int64_t v)
Definition slang-cpp-scalar-intrinsics.h:1279
SLANG_FORCE_INLINE half F16_log10(half f)
Definition slang-cpp-scalar-intrinsics.h:824
SLANG_FORCE_INLINE float F32_round(float f)
Definition slang-cpp-scalar-intrinsics.h:138
SLANG_FORCE_INLINE double F64_max(double a, double b)
Definition slang-cpp-scalar-intrinsics.h:482
SLANG_FORCE_INLINE double F64_rsqrt(double f)
Definition slang-cpp-scalar-intrinsics.h:521
SLANG_FORCE_INLINE double F64_floor(double f)
Definition slang-cpp-scalar-intrinsics.h:386
SLANG_FORCE_INLINE half F16_remainder(half a, half b)
Definition slang-cpp-scalar-intrinsics.h:900
SLANG_FORCE_INLINE half F16_ceil(half f)
Definition slang-cpp-scalar-intrinsics.h:739
__INTPTR_TYPE__ intptr_t
Definition slang-llvm.h:146
__UINTPTR_TYPE__ uintptr_t
Definition slang-llvm.h:153
#define SLANG_PRELUDE_NAMESPACE
Definition slang-torch-prelude.h:52
Definition slang-cpp-scalar-intrinsics.h:671
half & operator*=(half other)
Definition slang-cpp-scalar-intrinsics.h:694
half operator*(half other) const
Definition slang-cpp-scalar-intrinsics.h:682
uint16_t data
Definition slang-cpp-scalar-intrinsics.h:672
half operator+(half other) const
Definition slang-cpp-scalar-intrinsics.h:680
half & operator/=(half other)
Definition slang-cpp-scalar-intrinsics.h:699
bool operator<(half other) const
Definition slang-cpp-scalar-intrinsics.h:705
SLANG_FORCE_INLINE void store(float f)
Definition slang-cpp-scalar-intrinsics.h:677
half & operator-=(half other)
Definition slang-cpp-scalar-intrinsics.h:689
half operator/(half other) const
Definition slang-cpp-scalar-intrinsics.h:683
half(float f)
Definition slang-cpp-scalar-intrinsics.h:675
bool operator>=(half other) const
Definition slang-cpp-scalar-intrinsics.h:708
SLANG_FORCE_INLINE float load() const
Definition slang-cpp-scalar-intrinsics.h:678
bool operator!=(half other) const
Definition slang-cpp-scalar-intrinsics.h:710
bool operator==(half other) const
Definition slang-cpp-scalar-intrinsics.h:709
bool operator<=(half other) const
Definition slang-cpp-scalar-intrinsics.h:707
bool operator>(half other) const
Definition slang-cpp-scalar-intrinsics.h:706
half operator-(half other) const
Definition slang-cpp-scalar-intrinsics.h:681
half & operator+=(half other)
Definition slang-cpp-scalar-intrinsics.h:684
Definition slang-cpp-scalar-intrinsics.h:719
half h
Definition slang-cpp-scalar-intrinsics.h:722
int16_t i
Definition slang-cpp-scalar-intrinsics.h:721
uint16_t u
Definition slang-cpp-scalar-intrinsics.h:720
Definition slang-cpp-scalar-intrinsics.h:24
uint32_t u
Definition slang-cpp-scalar-intrinsics.h:25
int32_t i
Definition slang-cpp-scalar-intrinsics.h:26
float f
Definition slang-cpp-scalar-intrinsics.h:27
Definition slang-cpp-scalar-intrinsics.h:31
int64_t i
Definition slang-cpp-scalar-intrinsics.h:33
double d
Definition slang-cpp-scalar-intrinsics.h:34
uint64_t u
Definition slang-cpp-scalar-intrinsics.h:32