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
354#ifdef __HLSL_ENABLE_16_BIT
627#ifdef __HLSL_ENABLE_16_BIT
630int16_t
clamp(int16_t, int16_t, int16_t);
633int16_t2
clamp(int16_t2, int16_t2, int16_t2);
636int16_t3
clamp(int16_t3, int16_t3, int16_t3);
639int16_t4
clamp(int16_t4, int16_t4, int16_t4);
643uint16_t
clamp(uint16_t, uint16_t, uint16_t);
646uint16_t2
clamp(uint16_t2, uint16_t2, uint16_t2);
649uint16_t3
clamp(uint16_t3, uint16_t3, uint16_t3);
652uint16_t4
clamp(uint16_t4, uint16_t4, uint16_t4);
701double clamp(
double,
double,
double);
794#ifdef __HLSL_ENABLE_16_BIT
797 return __builtin_elementwise_popcount(x);
801 return __builtin_elementwise_popcount(x);
805 return __builtin_elementwise_popcount(x);
809 return __builtin_elementwise_popcount(x);
813 return __builtin_elementwise_popcount(x);
817 return __builtin_elementwise_popcount(x);
821 return __builtin_elementwise_popcount(x);
825 return __builtin_elementwise_popcount(x);
829const inline uint countbits(
int x) {
return __builtin_elementwise_popcount(x); }
831 return __builtin_elementwise_popcount(x);
834 return __builtin_elementwise_popcount(x);
837 return __builtin_elementwise_popcount(x);
841 return __builtin_elementwise_popcount(x);
844 return __builtin_elementwise_popcount(x);
847 return __builtin_elementwise_popcount(x);
850 return __builtin_elementwise_popcount(x);
854 return __builtin_elementwise_popcount(x);
857 return __builtin_elementwise_popcount(x);
860 return __builtin_elementwise_popcount(x);
863 return __builtin_elementwise_popcount(x);
867 return __builtin_elementwise_popcount(x);
870 return __builtin_elementwise_popcount(x);
873 return __builtin_elementwise_popcount(x);
876 return __builtin_elementwise_popcount(x);
931#ifdef __HLSL_ENABLE_16_BIT
934int16_t
dot(int16_t, int16_t);
937int16_t
dot(int16_t2, int16_t2);
940int16_t
dot(int16_t3, int16_t3);
943int16_t
dot(int16_t4, int16_t4);
947uint16_t
dot(uint16_t, uint16_t);
950uint16_t
dot(uint16_t2, uint16_t2);
953uint16_t
dot(uint16_t3, uint16_t3);
956uint16_t
dot(uint16_t4, uint16_t4);
969double dot(
double,
double);
1117#ifdef __HLSL_ENABLE_16_BIT
1467#ifdef __HLSL_ENABLE_16_BIT
1470int16_t
mad(int16_t, int16_t, int16_t);
1473int16_t2
mad(int16_t2, int16_t2, int16_t2);
1476int16_t3
mad(int16_t3, int16_t3, int16_t3);
1479int16_t4
mad(int16_t4, int16_t4, int16_t4);
1483uint16_t
mad(uint16_t, uint16_t, uint16_t);
1486uint16_t2
mad(uint16_t2, uint16_t2, uint16_t2);
1489uint16_t3
mad(uint16_t3, uint16_t3, uint16_t3);
1492uint16_t4
mad(uint16_t4, uint16_t4, uint16_t4);
1532float mad(
float,
float,
float);
1541double mad(
double,
double,
double);
1571#ifdef __HLSL_ENABLE_16_BIT
1574int16_t
max(int16_t, int16_t);
1577int16_t2
max(int16_t2, int16_t2);
1580int16_t3
max(int16_t3, int16_t3);
1583int16_t4
max(int16_t4, int16_t4);
1587uint16_t
max(uint16_t, uint16_t);
1590uint16_t2
max(uint16_t2, uint16_t2);
1593uint16_t3
max(uint16_t3, uint16_t3);
1596uint16_t4
max(uint16_t4, uint16_t4);
1675#ifdef __HLSL_ENABLE_16_BIT
1678int16_t
min(int16_t, int16_t);
1681int16_t2
min(int16_t2, int16_t2);
1684int16_t3
min(int16_t3, int16_t3);
1687int16_t4
min(int16_t4, int16_t4);
1691uint16_t
min(uint16_t, uint16_t);
1694uint16_t2
min(uint16_t2, uint16_t2);
1697uint16_t3
min(uint16_t3, uint16_t3);
1700uint16_t4
min(uint16_t4, uint16_t4);
1881#ifdef __HLSL_ENABLE_16_BIT
2093template <typename T>
2105template <typename T>
2107vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, vector<T, 2>);
2109template <typename T>
2111vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, vector<T, 3>);
2113template <typename T>
2115vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, vector<T, 4>);
2125template <typename T>
2127vector<T, 2>
select(vector<
bool, 2>, T, vector<T, 2>);
2129template <typename T>
2131vector<T, 3>
select(vector<
bool, 3>, T, vector<T, 3>);
2133template <typename T>
2135vector<T, 4>
select(vector<
bool, 4>, T, vector<T, 4>);
2144template <typename T>
2146vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, T);
2148template <typename T>
2150vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, T);
2152template <typename T>
2154vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, T);
2163template <typename T>
2166 vector<
bool, 2>, T, T);
2168template <typename T>
2171 vector<
bool, 3>, T, T);
2173template <typename T>
2176 vector<
bool, 4>, T, T);
2411__attribute__((convergent))
bool WaveActiveAnyTrue(
bool Val);
2464#ifdef __HLSL_ENABLE_16_BIT
2576#ifdef __HLSL_ENABLE_16_BIT
2582__attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2585__attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2588__attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2592__attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2595__attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2598__attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2601__attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2675#ifdef __HLSL_ENABLE_16_BIT
2681__attribute__((convergent)) int16_t2 WaveActiveMin(int16_t2);
2684__attribute__((convergent)) int16_t3 WaveActiveMin(int16_t3);
2687__attribute__((convergent)) int16_t4 WaveActiveMin(int16_t4);
2691__attribute__((convergent)) uint16_t WaveActiveMin(uint16_t);
2694__attribute__((convergent)) uint16_t2 WaveActiveMin(uint16_t2);
2697__attribute__((convergent)) uint16_t3 WaveActiveMin(uint16_t3);
2700__attribute__((convergent)) uint16_t4 WaveActiveMin(uint16_t4);
2798#ifdef __HLSL_ENABLE_16_BIT
2804__attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
2807__attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
2810__attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
2814__attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
2817__attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
2820__attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
2823__attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
2888#ifdef __HLSL_ENABLE_16_BIT
3022__attribute__((convergent))
void GroupMemoryBarrierWithGroupSync(
void);