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);
1138#ifdef __HLSL_ENABLE_16_BIT
1488#ifdef __HLSL_ENABLE_16_BIT
1491int16_t
mad(int16_t, int16_t, int16_t);
1494int16_t2
mad(int16_t2, int16_t2, int16_t2);
1497int16_t3
mad(int16_t3, int16_t3, int16_t3);
1500int16_t4
mad(int16_t4, int16_t4, int16_t4);
1504uint16_t
mad(uint16_t, uint16_t, uint16_t);
1507uint16_t2
mad(uint16_t2, uint16_t2, uint16_t2);
1510uint16_t3
mad(uint16_t3, uint16_t3, uint16_t3);
1513uint16_t4
mad(uint16_t4, uint16_t4, uint16_t4);
1553float mad(
float,
float,
float);
1562double mad(
double,
double,
double);
1592#ifdef __HLSL_ENABLE_16_BIT
1595int16_t
max(int16_t, int16_t);
1598int16_t2
max(int16_t2, int16_t2);
1601int16_t3
max(int16_t3, int16_t3);
1604int16_t4
max(int16_t4, int16_t4);
1608uint16_t
max(uint16_t, uint16_t);
1611uint16_t2
max(uint16_t2, uint16_t2);
1614uint16_t3
max(uint16_t3, uint16_t3);
1617uint16_t4
max(uint16_t4, uint16_t4);
1696#ifdef __HLSL_ENABLE_16_BIT
1699int16_t
min(int16_t, int16_t);
1702int16_t2
min(int16_t2, int16_t2);
1705int16_t3
min(int16_t3, int16_t3);
1708int16_t4
min(int16_t4, int16_t4);
1712uint16_t
min(uint16_t, uint16_t);
1715uint16_t2
min(uint16_t2, uint16_t2);
1718uint16_t3
min(uint16_t3, uint16_t3);
1721uint16_t4
min(uint16_t4, uint16_t4);
1902#ifdef __HLSL_ENABLE_16_BIT
2114template <typename T>
2126template <typename T>
2128vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, vector<T, 2>);
2130template <typename T>
2132vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, vector<T, 3>);
2134template <typename T>
2136vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, vector<T, 4>);
2146template <typename T>
2148vector<T, 2>
select(vector<
bool, 2>, T, vector<T, 2>);
2150template <typename T>
2152vector<T, 3>
select(vector<
bool, 3>, T, vector<T, 3>);
2154template <typename T>
2156vector<T, 4>
select(vector<
bool, 4>, T, vector<T, 4>);
2165template <typename T>
2167vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, T);
2169template <typename T>
2171vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, T);
2173template <typename T>
2175vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, T);
2184template <typename T>
2187 vector<
bool, 2>, T, T);
2189template <typename T>
2192 vector<
bool, 3>, T, T);
2194template <typename T>
2197 vector<
bool, 4>, T, T);
2432__attribute__((convergent))
bool WaveActiveAnyTrue(
bool Val);
2495#ifdef __HLSL_ENABLE_16_BIT
2607#ifdef __HLSL_ENABLE_16_BIT
2613__attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2616__attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2619__attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2623__attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2626__attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2629__attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2632__attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2706#ifdef __HLSL_ENABLE_16_BIT
2712__attribute__((convergent)) int16_t2 WaveActiveMin(int16_t2);
2715__attribute__((convergent)) int16_t3 WaveActiveMin(int16_t3);
2718__attribute__((convergent)) int16_t4 WaveActiveMin(int16_t4);
2722__attribute__((convergent)) uint16_t WaveActiveMin(uint16_t);
2725__attribute__((convergent)) uint16_t2 WaveActiveMin(uint16_t2);
2728__attribute__((convergent)) uint16_t3 WaveActiveMin(uint16_t3);
2731__attribute__((convergent)) uint16_t4 WaveActiveMin(uint16_t4);
2829#ifdef __HLSL_ENABLE_16_BIT
2835__attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
2838__attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
2841__attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
2845__attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
2848__attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
2851__attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
2854__attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
2919#ifdef __HLSL_ENABLE_16_BIT
3053__attribute__((convergent))
void GroupMemoryBarrierWithGroupSync(
void);