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)))
33#define _HLSL_16BIT_AVAILABILITY_SHADERMODEL_DEFAULT() \
34 _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
36#define _HLSL_16BIT_AVAILABILITY(environment, version)
37#define _HLSL_16BIT_AVAILABILITY_STAGE(environment, version, stage)
38#define _HLSL_16BIT_AVAILABILITY_SHADERMODEL_DEFAULT()
49#ifdef __HLSL_ENABLE_16_BIT
55int16_t2
abs(int16_t2);
58int16_t3
abs(int16_t3);
61int16_t4
abs(int16_t4);
64constexpr uint16_t
abs(uint16_t
V) {
return V; }
66constexpr uint16_t2
abs(uint16_t2
V) {
return V; }
68constexpr uint16_t3
abs(uint16_t3
V) {
return V; }
70constexpr uint16_t4
abs(uint16_t4
V) {
return V; }
191#ifdef __HLSL_ENABLE_16_BIT
357#ifdef __HLSL_ENABLE_16_BIT
630#ifdef __HLSL_ENABLE_16_BIT
633int16_t
clamp(int16_t, int16_t, int16_t);
636int16_t2
clamp(int16_t2, int16_t2, int16_t2);
639int16_t3
clamp(int16_t3, int16_t3, int16_t3);
642int16_t4
clamp(int16_t4, int16_t4, int16_t4);
646uint16_t
clamp(uint16_t, uint16_t, uint16_t);
649uint16_t2
clamp(uint16_t2, uint16_t2, uint16_t2);
652uint16_t3
clamp(uint16_t3, uint16_t3, uint16_t3);
655uint16_t4
clamp(uint16_t4, uint16_t4, uint16_t4);
704double clamp(
double,
double,
double);
797#ifdef __HLSL_ENABLE_16_BIT
800 return __builtin_elementwise_popcount(x);
804 return __builtin_elementwise_popcount(x);
808 return __builtin_elementwise_popcount(x);
812 return __builtin_elementwise_popcount(x);
816 return __builtin_elementwise_popcount(x);
820 return __builtin_elementwise_popcount(x);
824 return __builtin_elementwise_popcount(x);
828 return __builtin_elementwise_popcount(x);
832const inline uint countbits(
int x) {
return __builtin_elementwise_popcount(x); }
834 return __builtin_elementwise_popcount(x);
837 return __builtin_elementwise_popcount(x);
840 return __builtin_elementwise_popcount(x);
844 return __builtin_elementwise_popcount(x);
847 return __builtin_elementwise_popcount(x);
850 return __builtin_elementwise_popcount(x);
853 return __builtin_elementwise_popcount(x);
857 return __builtin_elementwise_popcount(x);
860 return __builtin_elementwise_popcount(x);
863 return __builtin_elementwise_popcount(x);
866 return __builtin_elementwise_popcount(x);
870 return __builtin_elementwise_popcount(x);
873 return __builtin_elementwise_popcount(x);
876 return __builtin_elementwise_popcount(x);
879 return __builtin_elementwise_popcount(x);
934#ifdef __HLSL_ENABLE_16_BIT
937int16_t
dot(int16_t, int16_t);
940int16_t
dot(int16_t2, int16_t2);
943int16_t
dot(int16_t3, int16_t3);
946int16_t
dot(int16_t4, int16_t4);
950uint16_t
dot(uint16_t, uint16_t);
953uint16_t
dot(uint16_t2, uint16_t2);
956uint16_t
dot(uint16_t3, uint16_t3);
959uint16_t
dot(uint16_t4, uint16_t4);
972double dot(
double,
double);
1141#ifdef __HLSL_ENABLE_16_BIT
1491#ifdef __HLSL_ENABLE_16_BIT
1494int16_t
mad(int16_t, int16_t, int16_t);
1497int16_t2
mad(int16_t2, int16_t2, int16_t2);
1500int16_t3
mad(int16_t3, int16_t3, int16_t3);
1503int16_t4
mad(int16_t4, int16_t4, int16_t4);
1507uint16_t
mad(uint16_t, uint16_t, uint16_t);
1510uint16_t2
mad(uint16_t2, uint16_t2, uint16_t2);
1513uint16_t3
mad(uint16_t3, uint16_t3, uint16_t3);
1516uint16_t4
mad(uint16_t4, uint16_t4, uint16_t4);
1556float mad(
float,
float,
float);
1565double mad(
double,
double,
double);
1595#ifdef __HLSL_ENABLE_16_BIT
1598int16_t
max(int16_t, int16_t);
1601int16_t2
max(int16_t2, int16_t2);
1604int16_t3
max(int16_t3, int16_t3);
1607int16_t4
max(int16_t4, int16_t4);
1611uint16_t
max(uint16_t, uint16_t);
1614uint16_t2
max(uint16_t2, uint16_t2);
1617uint16_t3
max(uint16_t3, uint16_t3);
1620uint16_t4
max(uint16_t4, uint16_t4);
1699#ifdef __HLSL_ENABLE_16_BIT
1702int16_t
min(int16_t, int16_t);
1705int16_t2
min(int16_t2, int16_t2);
1708int16_t3
min(int16_t3, int16_t3);
1711int16_t4
min(int16_t4, int16_t4);
1715uint16_t
min(uint16_t, uint16_t);
1718uint16_t2
min(uint16_t2, uint16_t2);
1721uint16_t3
min(uint16_t3, uint16_t3);
1724uint16_t4
min(uint16_t4, uint16_t4);
1816template <
int R,
int C>
1819 matrix<half,
R,
C>);
1821template <typename T,
int R,
int C>
1826template <
int R,
int C>
1831template <typename T,
int R,
int C>
1836template <
int R,
int K,
int C>
1839 matrix<half,
R, K>, matrix<half, K,
C>);
1841template <typename T,
int R,
int K,
int C>
1843matrix<T,
R,
C>
mul(matrix<T,
R, K>, matrix<T, K,
C>);
1853template <
int R,
int C>
1856 matrix<half,
R,
C>);
1858template <typename T,
int R,
int C>
1986#ifdef __HLSL_ENABLE_16_BIT
2198template <typename T>
2210template <typename T>
2212vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, vector<T, 2>);
2214template <typename T>
2216vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, vector<T, 3>);
2218template <typename T>
2220vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, vector<T, 4>);
2230template <typename T>
2232vector<T, 2>
select(vector<
bool, 2>, T, vector<T, 2>);
2234template <typename T>
2236vector<T, 3>
select(vector<
bool, 3>, T, vector<T, 3>);
2238template <typename T>
2240vector<T, 4>
select(vector<
bool, 4>, T, vector<T, 4>);
2249template <typename T>
2251vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, T);
2253template <typename T>
2255vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, T);
2257template <typename T>
2259vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, T);
2268template <typename T>
2271 vector<
bool, 2>, T, T);
2273template <typename T>
2276 vector<
bool, 3>, T, T);
2278template <typename T>
2281 vector<
bool, 4>, T, T);
2518#ifdef __HLSL_ENABLE_16_BIT
2521__attribute__((convergent))
bool WaveActiveAllEqual(int16_t);
2534__attribute__((convergent))
bool WaveActiveAllEqual(uint16_t);
2631__attribute__((convergent))
bool WaveActiveAllTrue(
bool Val);
2640__attribute__((convergent))
bool WaveActiveAnyTrue(
bool Val);
2703#ifdef __HLSL_ENABLE_16_BIT
2883#ifdef __HLSL_ENABLE_16_BIT
2889__attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2892__attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2895__attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2899__attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2902__attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2905__attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2908__attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2982#ifdef __HLSL_ENABLE_16_BIT
2988__attribute__((convergent)) int16_t2 WaveActiveMin(int16_t2);
2991__attribute__((convergent)) int16_t3 WaveActiveMin(int16_t3);
2994__attribute__((convergent)) int16_t4 WaveActiveMin(int16_t4);
2998__attribute__((convergent)) uint16_t WaveActiveMin(uint16_t);
3001__attribute__((convergent)) uint16_t2 WaveActiveMin(uint16_t2);
3004__attribute__((convergent)) uint16_t3 WaveActiveMin(uint16_t3);
3007__attribute__((convergent)) uint16_t4 WaveActiveMin(uint16_t4);
3105#ifdef __HLSL_ENABLE_16_BIT
3111__attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
3114__attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
3117__attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
3121__attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
3124__attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
3127__attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
3130__attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
3204#ifdef __HLSL_ENABLE_16_BIT
3207__attribute__((convergent)) int16_t WaveActiveProduct(int16_t);
3210__attribute__((convergent)) int16_t2 WaveActiveProduct(int16_t2);
3213__attribute__((convergent)) int16_t3 WaveActiveProduct(int16_t3);
3216__attribute__((convergent)) int16_t4 WaveActiveProduct(int16_t4);
3220__attribute__((convergent)) uint16_t WaveActiveProduct(uint16_t);
3223__attribute__((convergent)) uint16_t2 WaveActiveProduct(uint16_t2);
3226__attribute__((convergent)) uint16_t3 WaveActiveProduct(uint16_t3);
3229__attribute__((convergent)) uint16_t4 WaveActiveProduct(uint16_t4);
3299__attribute__((convergent))
double WaveActiveProduct(
double);
3327#ifdef __HLSL_ENABLE_16_BIT
3333__attribute__((convergent)) int16_t2 WavePrefixSum(int16_t2);
3336__attribute__((convergent)) int16_t3 WavePrefixSum(int16_t3);
3339__attribute__((convergent)) int16_t4 WavePrefixSum(int16_t4);
3343__attribute__((convergent)) uint16_t WavePrefixSum(uint16_t);
3346__attribute__((convergent)) uint16_t2 WavePrefixSum(uint16_t2);
3349__attribute__((convergent)) uint16_t3 WavePrefixSum(uint16_t3);
3352__attribute__((convergent)) uint16_t4 WavePrefixSum(uint16_t4);
3426#ifdef __HLSL_ENABLE_16_BIT
3429__attribute__((convergent)) int16_t WavePrefixProduct(int16_t);
3432__attribute__((convergent)) int16_t2 WavePrefixProduct(int16_t2);
3435__attribute__((convergent)) int16_t3 WavePrefixProduct(int16_t3);
3438__attribute__((convergent)) int16_t4 WavePrefixProduct(int16_t4);
3442__attribute__((convergent)) uint16_t WavePrefixProduct(uint16_t);
3445__attribute__((convergent)) uint16_t2 WavePrefixProduct(uint16_t2);
3448__attribute__((convergent)) uint16_t3 WavePrefixProduct(uint16_t3);
3451__attribute__((convergent)) uint16_t4 WavePrefixProduct(uint16_t4);
3500__attribute__((convergent))
double WavePrefixProduct(
double);
3525#ifdef __HLSL_ENABLE_16_BIT
3528__attribute__((convergent)) int16_t QuadReadAcrossX(int16_t);
3531__attribute__((convergent)) int16_t2 QuadReadAcrossX(int16_t2);
3534__attribute__((convergent)) int16_t3 QuadReadAcrossX(int16_t3);
3537__attribute__((convergent)) int16_t4 QuadReadAcrossX(int16_t4);
3541__attribute__((convergent)) uint16_t QuadReadAcrossX(uint16_t);
3544__attribute__((convergent)) uint16_t2 QuadReadAcrossX(uint16_t2);
3547__attribute__((convergent)) uint16_t3 QuadReadAcrossX(uint16_t3);
3550__attribute__((convergent)) uint16_t4 QuadReadAcrossX(uint16_t4);
3615#ifdef __HLSL_ENABLE_16_BIT
3749__attribute__((convergent))
void GroupMemoryBarrierWithGroupSync(
void);