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(platform, version, ...) \
37 __VA_OPT__(_HLSL_AVAILABILITY(platform, __VA_ARGS__))
38#define _HLSL_16BIT_AVAILABILITY_STAGE(environment, version, stage)
39#define _HLSL_16BIT_AVAILABILITY_SHADERMODEL_DEFAULT()
43#include "hlsl_alias_intrinsics_gen.inc"
80template <
int R,
int C>
85template <typename T,
int R,
int C>
87vector<T,
C>
mul(vector<T,
R>, matrix<T,
R,
C>);
90template <
int R,
int C>
95template <typename T,
int R,
int C>
97vector<T,
R>
mul(matrix<T,
R,
C>, vector<T,
C>);
100template <
int R,
int K,
int C>
103 matrix<half,
R, K>, matrix<half, K,
C>);
105template <typename T,
int R,
int K,
int C>
107matrix<T,
R,
C>
mul(matrix<T,
R, K>, matrix<T, K,
C>);
117template <
int R,
int C>
122template <typename T,
int R,
int C>
150vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, vector<T, 2>);
154vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, vector<T, 3>);
158vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, vector<T, 4>);
170vector<T, 2>
select(vector<
bool, 2>, T, vector<T, 2>);
174vector<T, 3>
select(vector<
bool, 3>, T, vector<T, 3>);
178vector<T, 4>
select(vector<
bool, 4>, T, vector<T, 4>);
189vector<T, 2>
select(vector<
bool, 2>, vector<T, 2>, T);
193vector<T, 3>
select(vector<
bool, 3>, vector<T, 3>, T);
197vector<T, 4>
select(vector<
bool, 4>, vector<T, 4>, T);
209 vector<
bool, 2>, T, T);
214 vector<
bool, 3>, T, T);
219 vector<
bool, 4>, T, T);