@@ -35,35 +35,40 @@ namespace hlsl {
35
35
#define _HLSL_16BIT_AVAILABILITY_STAGE (environment, version, stage )
36
36
#endif
37
37
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); \
52
55
} \
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); \
57
60
}
58
61
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); \
67
72
}
68
73
69
74
#define _HLSL_IF_TRUE_0 (EXPR )
@@ -72,7 +77,7 @@ namespace hlsl {
72
77
#define _HLSL_NUM_ARGS_min 2
73
78
#define _HLSL_NUM_ARGS_max 2
74
79
#define _HLSL_NUM_ARGS_clamp 3
75
-
80
+
76
81
// ===----------------------------------------------------------------------===//
77
82
// abs builtins
78
83
// ===----------------------------------------------------------------------===//
@@ -601,7 +606,7 @@ _HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
601
606
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
602
607
half4 clamp(half4, half4, half4);
603
608
_HLSL_VEC_SCALAR_OVERLOADS (clamp, half, 1 )
604
-
609
+
605
610
#ifdef __HLSL_ENABLE_16_BIT
606
611
_HLSL_AVAILABILITY (shadermodel, 6.2 )
607
612
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
@@ -616,7 +621,7 @@ _HLSL_AVAILABILITY(shadermodel, 6.2)
616
621
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
617
622
int16_t4 clamp(int16_t4, int16_t4, int16_t4);
618
623
_HLSL_VEC_SCALAR_OVERLOADS (clamp, int16_t , 1 )
619
-
624
+
620
625
_HLSL_AVAILABILITY(shadermodel, 6.2 )
621
626
_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
622
627
uint16_t clamp(uint16_t , uint16_t , uint16_t );
0 commit comments