9 #ifndef _HLSL_HLSL_INTRINSICS_H_
10 #define _HLSL_HLSL_INTRINSICS_H_
19 #define _HLSL_BUILTIN_ALIAS(builtin) \
20 __attribute__((clang_builtin_alias(builtin)))
21 #define _HLSL_AVAILABILITY(platform, version) \
22 __attribute__((availability(platform, introduced = version)))
23 #define _HLSL_AVAILABILITY_STAGE(platform, version, stage) \
25 availability(platform, introduced = version, environment = stage)))
27 #ifdef __HLSL_ENABLE_16_BIT
28 #define _HLSL_16BIT_AVAILABILITY(platform, version) \
29 __attribute__((availability(platform, introduced = version)))
30 #define _HLSL_16BIT_AVAILABILITY_STAGE(platform, version, stage) \
32 availability(platform, introduced = version, environment = stage)))
34 #define _HLSL_16BIT_AVAILABILITY(environment, version)
35 #define _HLSL_16BIT_AVAILABILITY_STAGE(environment, version, stage)
46 #ifdef __HLSL_ENABLE_16_BIT
52 int16_t2
abs(int16_t2);
55 int16_t3
abs(int16_t3);
58 int16_t4
abs(int16_t4);
118 #ifdef __HLSL_ENABLE_16_BIT
146 #ifdef __HLSL_ENABLE_16_BIT
258 #ifdef __HLSL_ENABLE_16_BIT
370 #ifdef __HLSL_ENABLE_16_BIT
398 #ifdef __HLSL_ENABLE_16_BIT
477 #ifdef __HLSL_ENABLE_16_BIT
480 int16_t
clamp(int16_t, int16_t, int16_t);
483 int16_t2
clamp(int16_t2, int16_t2, int16_t2);
486 int16_t3
clamp(int16_t3, int16_t3, int16_t3);
489 int16_t4
clamp(int16_t4, int16_t4, int16_t4);
493 uint16_t
clamp(uint16_t, uint16_t, uint16_t);
496 uint16_t2
clamp(uint16_t2, uint16_t2, uint16_t2);
499 uint16_t3
clamp(uint16_t3, uint16_t3, uint16_t3);
502 uint16_t4
clamp(uint16_t4, uint16_t4, uint16_t4);
551 double clamp(
double,
double,
double);
597 #ifdef __HLSL_ENABLE_16_BIT
639 #ifdef __HLSL_ENABLE_16_BIT
642 int16_t
dot(int16_t, int16_t);
645 int16_t
dot(int16_t2, int16_t2);
648 int16_t
dot(int16_t3, int16_t3);
651 int16_t
dot(int16_t4, int16_t4);
655 uint16_t
dot(uint16_t, uint16_t);
658 uint16_t
dot(uint16_t2, uint16_t2);
661 uint16_t
dot(uint16_t3, uint16_t3);
664 uint16_t
dot(uint16_t4, uint16_t4);
677 double dot(
double,
double);
903 float lerp(
float,
float,
float);
1065 #ifdef __HLSL_ENABLE_16_BIT
1068 int16_t
mad(int16_t, int16_t, int16_t);
1071 int16_t2
mad(int16_t2, int16_t2, int16_t2);
1074 int16_t3
mad(int16_t3, int16_t3, int16_t3);
1077 int16_t4
mad(int16_t4, int16_t4, int16_t4);
1081 uint16_t
mad(uint16_t, uint16_t, uint16_t);
1084 uint16_t2
mad(uint16_t2, uint16_t2, uint16_t2);
1087 uint16_t3
mad(uint16_t3, uint16_t3, uint16_t3);
1090 uint16_t4
mad(uint16_t4, uint16_t4, uint16_t4);
1130 float mad(
float,
float,
float);
1139 double mad(
double,
double,
double);
1169 #ifdef __HLSL_ENABLE_16_BIT
1172 int16_t
max(int16_t, int16_t);
1175 int16_t2
max(int16_t2, int16_t2);
1178 int16_t3
max(int16_t3, int16_t3);
1181 int16_t4
max(int16_t4, int16_t4);
1185 uint16_t
max(uint16_t, uint16_t);
1188 uint16_t2
max(uint16_t2, uint16_t2);
1191 uint16_t3
max(uint16_t3, uint16_t3);
1194 uint16_t4
max(uint16_t4, uint16_t4);
1273 #ifdef __HLSL_ENABLE_16_BIT
1276 int16_t
min(int16_t, int16_t);
1279 int16_t2
min(int16_t2, int16_t2);
1282 int16_t3
min(int16_t3, int16_t3);
1285 int16_t4
min(int16_t4, int16_t4);
1289 uint16_t
min(uint16_t, uint16_t);
1292 uint16_t2
min(uint16_t2, uint16_t2);
1295 uint16_t3
min(uint16_t3, uint16_t3);
1298 uint16_t4
min(uint16_t4, uint16_t4);
1426 #ifdef __HLSL_ENABLE_16_BIT
1605 #ifdef __HLSL_ENABLE_16_BIT
1663 #ifdef __HLSL_ENABLE_16_BIT
1691 #ifdef __HLSL_ENABLE_16_BIT
#define _HLSL_BUILTIN_ALIAS(builtin)
#define _HLSL_AVAILABILITY(platform, version)
#define _HLSL_16BIT_AVAILABILITY(environment, version)
half mad(half, half, half)
__attribute__((convergent)) uint WaveActiveCountBits(bool Val)
Counts the number of boolean variables which evaluate to true across all active lanes in the current ...
vector< uint64_t, 2 > uint64_t2
vector< float, 4 > float4
vector< int64_t, 4 > int64_t4
vector< uint64_t, 3 > uint64_t3
half lerp(half, half, half)
vector< int64_t, 3 > int64_t3
half clamp(half, half, half)
vector< uint64_t, 4 > uint64_t4
vector< double, 3 > double3
vector< float, 2 > float2
vector< float, 3 > float3
vector< int64_t, 2 > int64_t2
vector< double, 4 > double4
vector< double, 2 > double2