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);
1085#ifdef __HLSL_ENABLE_16_BIT
1435#ifdef __HLSL_ENABLE_16_BIT
1438int16_t
mad(int16_t, int16_t, int16_t);
1441int16_t2
mad(int16_t2, int16_t2, int16_t2);
1444int16_t3
mad(int16_t3, int16_t3, int16_t3);
1447int16_t4
mad(int16_t4, int16_t4, int16_t4);
1451uint16_t
mad(uint16_t, uint16_t, uint16_t);
1454uint16_t2
mad(uint16_t2, uint16_t2, uint16_t2);
1457uint16_t3
mad(uint16_t3, uint16_t3, uint16_t3);
1460uint16_t4
mad(uint16_t4, uint16_t4, uint16_t4);
1500float mad(
float,
float,
float);
1509double mad(
double,
double,
double);
1539#ifdef __HLSL_ENABLE_16_BIT
1542int16_t
max(int16_t, int16_t);
1545int16_t2
max(int16_t2, int16_t2);
1548int16_t3
max(int16_t3, int16_t3);
1551int16_t4
max(int16_t4, int16_t4);
1555uint16_t
max(uint16_t, uint16_t);
1558uint16_t2
max(uint16_t2, uint16_t2);
1561uint16_t3
max(uint16_t3, uint16_t3);
1564uint16_t4
max(uint16_t4, uint16_t4);
1643#ifdef __HLSL_ENABLE_16_BIT
1646int16_t
min(int16_t, int16_t);
1649int16_t2
min(int16_t2, int16_t2);
1652int16_t3
min(int16_t3, int16_t3);
1655int16_t4
min(int16_t4, int16_t4);
1659uint16_t
min(uint16_t, uint16_t);
1662uint16_t2
min(uint16_t2, uint16_t2);
1665uint16_t3
min(uint16_t3, uint16_t3);
1668uint16_t4
min(uint16_t4, uint16_t4);
1818#ifdef __HLSL_ENABLE_16_BIT
2030template <typename T>
2042template <typename T>
2044vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, vector<T, 2>);
2046template <typename T>
2048vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, vector<T, 3>);
2050template <typename T>
2052vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, vector<T, 4>);
2062template <typename T>
2064vector<T, 2>
select(vector<
bool, 2>, T, vector<T, 2>);
2066template <typename T>
2068vector<T, 3>
select(vector<
bool, 3>, T, vector<T, 3>);
2070template <typename T>
2072vector<T, 4>
select(vector<
bool, 4>, T, vector<T, 4>);
2081template <typename T>
2083vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, T);
2085template <typename T>
2087vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, T);
2089template <typename T>
2091vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, T);
2100template <typename T>
2103 vector<
bool, 2>, T, T);
2105template <typename T>
2108 vector<
bool, 3>, T, T);
2110template <typename T>
2113 vector<
bool, 4>, T, T);
2348__attribute__((convergent))
bool WaveActiveAnyTrue(
bool Val);
2389#ifdef __HLSL_ENABLE_16_BIT
2501#ifdef __HLSL_ENABLE_16_BIT
2507__attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2510__attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2513__attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2517__attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2520__attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2523__attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2526__attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2600#ifdef __HLSL_ENABLE_16_BIT
2606__attribute__((convergent)) int16_t2 WaveActiveMin(int16_t2);
2609__attribute__((convergent)) int16_t3 WaveActiveMin(int16_t3);
2612__attribute__((convergent)) int16_t4 WaveActiveMin(int16_t4);
2616__attribute__((convergent)) uint16_t WaveActiveMin(uint16_t);
2619__attribute__((convergent)) uint16_t2 WaveActiveMin(uint16_t2);
2622__attribute__((convergent)) uint16_t3 WaveActiveMin(uint16_t3);
2625__attribute__((convergent)) uint16_t4 WaveActiveMin(uint16_t4);
2723#ifdef __HLSL_ENABLE_16_BIT
2729__attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
2732__attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
2735__attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
2739__attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
2742__attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
2745__attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
2748__attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
2813#ifdef __HLSL_ENABLE_16_BIT
2947__attribute__((convergent))
void GroupMemoryBarrierWithGroupSync(
void);