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
52int16_t2
abs(int16_t2);
55int16_t3
abs(int16_t3);
58int16_t4
abs(int16_t4);
61constexpr uint16_t
abs(uint16_t
V) {
return V; }
63constexpr uint16_t2
abs(uint16_t2
V) {
return V; }
65constexpr uint16_t3
abs(uint16_t3
V) {
return V; }
67constexpr uint16_t4
abs(uint16_t4
V) {
return V; }
188#ifdef __HLSL_ENABLE_16_BIT
322#ifdef __HLSL_ENABLE_16_BIT
595#ifdef __HLSL_ENABLE_16_BIT
598int16_t
clamp(int16_t, int16_t, int16_t);
601int16_t2
clamp(int16_t2, int16_t2, int16_t2);
604int16_t3
clamp(int16_t3, int16_t3, int16_t3);
607int16_t4
clamp(int16_t4, int16_t4, int16_t4);
611uint16_t
clamp(uint16_t, uint16_t, uint16_t);
614uint16_t2
clamp(uint16_t2, uint16_t2, uint16_t2);
617uint16_t3
clamp(uint16_t3, uint16_t3, uint16_t3);
620uint16_t4
clamp(uint16_t4, uint16_t4, uint16_t4);
669double clamp(
double,
double,
double);
762#ifdef __HLSL_ENABLE_16_BIT
765 return __builtin_elementwise_popcount(x);
769 return __builtin_elementwise_popcount(x);
773 return __builtin_elementwise_popcount(x);
777 return __builtin_elementwise_popcount(x);
781 return __builtin_elementwise_popcount(x);
785 return __builtin_elementwise_popcount(x);
789 return __builtin_elementwise_popcount(x);
793 return __builtin_elementwise_popcount(x);
797const inline uint countbits(
int x) {
return __builtin_elementwise_popcount(x); }
799 return __builtin_elementwise_popcount(x);
802 return __builtin_elementwise_popcount(x);
805 return __builtin_elementwise_popcount(x);
809 return __builtin_elementwise_popcount(x);
812 return __builtin_elementwise_popcount(x);
815 return __builtin_elementwise_popcount(x);
818 return __builtin_elementwise_popcount(x);
822 return __builtin_elementwise_popcount(x);
825 return __builtin_elementwise_popcount(x);
828 return __builtin_elementwise_popcount(x);
831 return __builtin_elementwise_popcount(x);
835 return __builtin_elementwise_popcount(x);
838 return __builtin_elementwise_popcount(x);
841 return __builtin_elementwise_popcount(x);
844 return __builtin_elementwise_popcount(x);
899#ifdef __HLSL_ENABLE_16_BIT
902int16_t
dot(int16_t, int16_t);
905int16_t
dot(int16_t2, int16_t2);
908int16_t
dot(int16_t3, int16_t3);
911int16_t
dot(int16_t4, int16_t4);
915uint16_t
dot(uint16_t, uint16_t);
918uint16_t
dot(uint16_t2, uint16_t2);
921uint16_t
dot(uint16_t3, uint16_t3);
924uint16_t
dot(uint16_t4, uint16_t4);
937double dot(
double,
double);
1064#ifdef __HLSL_ENABLE_16_BIT
1136#ifdef __HLSL_ENABLE_16_BIT
1486#ifdef __HLSL_ENABLE_16_BIT
1489int16_t
mad(int16_t, int16_t, int16_t);
1492int16_t2
mad(int16_t2, int16_t2, int16_t2);
1495int16_t3
mad(int16_t3, int16_t3, int16_t3);
1498int16_t4
mad(int16_t4, int16_t4, int16_t4);
1502uint16_t
mad(uint16_t, uint16_t, uint16_t);
1505uint16_t2
mad(uint16_t2, uint16_t2, uint16_t2);
1508uint16_t3
mad(uint16_t3, uint16_t3, uint16_t3);
1511uint16_t4
mad(uint16_t4, uint16_t4, uint16_t4);
1551float mad(
float,
float,
float);
1560double mad(
double,
double,
double);
1590#ifdef __HLSL_ENABLE_16_BIT
1593int16_t
max(int16_t, int16_t);
1596int16_t2
max(int16_t2, int16_t2);
1599int16_t3
max(int16_t3, int16_t3);
1602int16_t4
max(int16_t4, int16_t4);
1606uint16_t
max(uint16_t, uint16_t);
1609uint16_t2
max(uint16_t2, uint16_t2);
1612uint16_t3
max(uint16_t3, uint16_t3);
1615uint16_t4
max(uint16_t4, uint16_t4);
1694#ifdef __HLSL_ENABLE_16_BIT
1697int16_t
min(int16_t, int16_t);
1700int16_t2
min(int16_t2, int16_t2);
1703int16_t3
min(int16_t3, int16_t3);
1706int16_t4
min(int16_t4, int16_t4);
1710uint16_t
min(uint16_t, uint16_t);
1713uint16_t2
min(uint16_t2, uint16_t2);
1716uint16_t3
min(uint16_t3, uint16_t3);
1719uint16_t4
min(uint16_t4, uint16_t4);
1869#ifdef __HLSL_ENABLE_16_BIT
2081template <typename T>
2093template <typename T,
int Sz>
2095vector<T, Sz>
select(vector<
bool, Sz>, vector<T, Sz>, vector<T, Sz>);
2105template <typename T,
int Sz>
2107vector<T, Sz>
select(vector<
bool, Sz>, T, vector<T, Sz>);
2116template <typename T,
int Sz>
2118vector<T, Sz>
select(vector<
bool, Sz>, vector<T, Sz>, T);
2127template <typename T,
int Sz>
2130 vector<
bool, Sz>, T, T);
2365__attribute__((convergent))
bool WaveActiveAnyTrue(
bool Val);
2406#ifdef __HLSL_ENABLE_16_BIT
2518#ifdef __HLSL_ENABLE_16_BIT
2524__attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2527__attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2530__attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2534__attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2537__attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2540__attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2543__attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2617#ifdef __HLSL_ENABLE_16_BIT
2623__attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
2626__attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
2629__attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
2633__attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
2636__attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
2639__attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
2642__attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
2707#ifdef __HLSL_ENABLE_16_BIT
2841__attribute__((convergent))
void GroupMemoryBarrierWithGroupSync(
void);