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>
148template <typename T,
int N>
161template <typename T,
int N>
173template <typename T,
int N>
185template <typename T, typename
U,
int N>
188select(vector<
U, N> Conds, T TrueVal, T FalseVal) {
189 return __builtin_hlsl_select((vector<bool, N>)Conds, TrueVal, FalseVal);