@@ -35,35 +35,40 @@ namespace hlsl {
3535#define _HLSL_16BIT_AVAILABILITY_STAGE (environment, version, stage )
3636#endif
3737
38- #define _HLSL_CAT (a,b ) a##b
39- #define _HLSL_VEC_SCALAR_OVERLOADS (NAME, BASE_T, AVAIL ) \
40- _HLSL_ALL_OVERLOADS (NAME, BASE_T, AVAIL, _HLSL_CAT(_HLSL_NUM_ARGS_,NAME))
41-
42- #define _HLSL_ALL_OVERLOADS (NAME, BASE_T, AVAIL, NUM_ARGS ) \
43- _HLSL_CAT (_HLSL_BOTH_OVERLOADS_,NUM_ARGS)(NAME, BASE_T, _HLSL_CAT(BASE_T,2 ), AVAIL) \
44- _HLSL_CAT(_HLSL_BOTH_OVERLOADS_,NUM_ARGS)(NAME, BASE_T, _HLSL_CAT(BASE_T,3 ), AVAIL) \
45- _HLSL_CAT(_HLSL_BOTH_OVERLOADS_,NUM_ARGS)(NAME, BASE_T, _HLSL_CAT(BASE_T,4 ), AVAIL)
46-
47- #define _HLSL_BOTH_OVERLOADS_2 (NAME, BASE_T, VECTOR_T, AVAIL ) \
48- _HLSL_CAT (_HLSL_IF_TRUE_,AVAIL)( \
49- _HLSL_16BIT_AVAILABILITY (shadermodel, 6.2 )) constexpr VECTOR_T \
50- NAME(VECTOR_T p0, BASE_T p1) { \
51- return _HLSL_CAT (__builtin_elementwise_,NAME)(p0, (VECTOR_T)p1); \
38+ #define _HLSL_CAT (a, b ) a##b
39+ #define _HLSL_VEC_SCALAR_OVERLOADS (NAME, BASE_T, AVAIL ) \
40+ _HLSL_ALL_OVERLOADS (NAME, BASE_T, AVAIL, _HLSL_CAT(_HLSL_NUM_ARGS_, NAME))
41+
42+ #define _HLSL_ALL_OVERLOADS (NAME, BASE_T, AVAIL, NUM_ARGS ) \
43+ _HLSL_CAT (_HLSL_BOTH_OVERLOADS_, NUM_ARGS) \
44+ (NAME, BASE_T, _HLSL_CAT(BASE_T, 2 ), AVAIL) \
45+ _HLSL_CAT(_HLSL_BOTH_OVERLOADS_, NUM_ARGS)(NAME, BASE_T, \
46+ _HLSL_CAT (BASE_T, 3 ), AVAIL) \
47+ _HLSL_CAT(_HLSL_BOTH_OVERLOADS_, \
48+ NUM_ARGS)(NAME, BASE_T, _HLSL_CAT(BASE_T, 4 ), AVAIL)
49+
50+ #define _HLSL_BOTH_OVERLOADS_2 (NAME, BASE_T, VECTOR_T, AVAIL ) \
51+ _HLSL_CAT (_HLSL_IF_TRUE_, AVAIL) \
52+ (_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) constexpr VECTOR_T NAME( \
53+ VECTOR_T p0, BASE_T p1) { \
54+ return _HLSL_CAT (__builtin_elementwise_, NAME)(p0, (VECTOR_T)p1); \
5255 } \
53- _HLSL_CAT (_HLSL_IF_TRUE_,AVAIL)( \
54- _HLSL_16BIT_AVAILABILITY (shadermodel, 6.2 )) constexpr VECTOR_T \
55- NAME( BASE_T p0, VECTOR_T p1) { \
56- return _HLSL_CAT (__builtin_elementwise_,NAME)((VECTOR_T)p0, p1); \
56+ _HLSL_CAT (_HLSL_IF_TRUE_, AVAIL) \
57+ ( _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) constexpr VECTOR_T NAME( \
58+ BASE_T p0, VECTOR_T p1) { \
59+ return _HLSL_CAT (__builtin_elementwise_, NAME)((VECTOR_T)p0, p1); \
5760 }
5861
59- #define _HLSL_BOTH_OVERLOADS_3 (NAME, BASE_T, VECTOR_T, AVAIL ) \
60- _HLSL_CAT (_HLSL_IF_TRUE_,AVAIL)(_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) \
61- constexpr VECTOR_T NAME(VECTOR_T p0, VECTOR_T p1, BASE_T p2) { \
62- return _HLSL_CAT (__builtin_hlsl_elementwise_,NAME)(p0, p1, (VECTOR_T)p2); \
63- } \
64- _HLSL_CAT (_HLSL_IF_TRUE_,AVAIL)(_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) \
65- constexpr VECTOR_T NAME(VECTOR_T p0, BASE_T p1, VECTOR_T p2) { \
66- return _HLSL_CAT (__builtin_hlsl_elementwise_,NAME)(p0, (VECTOR_T)p1, p2); \
62+ #define _HLSL_BOTH_OVERLOADS_3 (NAME, BASE_T, VECTOR_T, AVAIL ) \
63+ _HLSL_CAT (_HLSL_IF_TRUE_, AVAIL) \
64+ (_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) constexpr VECTOR_T NAME( \
65+ VECTOR_T p0, VECTOR_T p1, BASE_T p2) { \
66+ return _HLSL_CAT (__builtin_hlsl_elementwise_, NAME)(p0, p1, (VECTOR_T)p2); \
67+ } \
68+ _HLSL_CAT (_HLSL_IF_TRUE_, AVAIL) \
69+ (_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2 )) constexpr VECTOR_T NAME( \
70+ VECTOR_T p0, BASE_T p1, VECTOR_T p2) { \
71+ return _HLSL_CAT (__builtin_hlsl_elementwise_, NAME)(p0, (VECTOR_T)p1, p2); \
6772 }
6873
6974#define _HLSL_IF_TRUE_0 (EXPR )
@@ -72,7 +77,7 @@ namespace hlsl {
7277#define _HLSL_NUM_ARGS_min 2
7378#define _HLSL_NUM_ARGS_max 2
7479#define _HLSL_NUM_ARGS_clamp 3
75-
80+
7681// ===----------------------------------------------------------------------===//
7782// abs builtins
7883// ===----------------------------------------------------------------------===//
@@ -601,7 +606,7 @@ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
601606_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
602607half4 clamp(half4, half4, half4);
603608_HLSL_VEC_SCALAR_OVERLOADS (clamp, half, 1 )
604-
609+
605610#ifdef __HLSL_ENABLE_16_BIT
606611_HLSL_AVAILABILITY (shadermodel, 6.2 )
607612_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
@@ -616,7 +621,7 @@ _HLSL_AVAILABILITY(shadermodel, 6.2)
616621_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
617622int16_t4 clamp(int16_t4, int16_t4, int16_t4);
618623_HLSL_VEC_SCALAR_OVERLOADS (clamp, int16_t , 1 )
619-
624+
620625_HLSL_AVAILABILITY(shadermodel, 6.2 )
621626_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
622627uint16_t clamp(uint16_t , uint16_t , uint16_t );
0 commit comments