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);
2452#ifdef __HLSL_ENABLE_16_BIT
2564#ifdef __HLSL_ENABLE_16_BIT
2570__attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2573__attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2576__attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2580__attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2583__attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2586__attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2589__attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2663#ifdef __HLSL_ENABLE_16_BIT
2669__attribute__((convergent)) int16_t2 WaveActiveMin(int16_t2);
2672__attribute__((convergent)) int16_t3 WaveActiveMin(int16_t3);
2675__attribute__((convergent)) int16_t4 WaveActiveMin(int16_t4);
2679__attribute__((convergent)) uint16_t WaveActiveMin(uint16_t);
2682__attribute__((convergent)) uint16_t2 WaveActiveMin(uint16_t2);
2685__attribute__((convergent)) uint16_t3 WaveActiveMin(uint16_t3);
2688__attribute__((convergent)) uint16_t4 WaveActiveMin(uint16_t4);
2786#ifdef __HLSL_ENABLE_16_BIT
2792__attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
2795__attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
2798__attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
2802__attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
2805__attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
2808__attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
2811__attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
2876#ifdef __HLSL_ENABLE_16_BIT
3010__attribute__((convergent))
void GroupMemoryBarrierWithGroupSync(
void);