@@ -16,6 +16,70 @@ namespace hlsl {
16
16
// unsigned integer and floating point. Keeping this ordering consistent will
17
17
// help keep this file manageable as it grows.
18
18
19
+ #define _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (fn ) \
20
+ constexpr float fn (double V) { return fn ((float )V); } \
21
+ constexpr float2 fn (double2 V) { return fn ((float2)V); } \
22
+ constexpr float3 fn (double3 V) { return fn ((float3)V); } \
23
+ constexpr float4 fn (double4 V) { return fn ((float4)V); }
24
+
25
+ #define _DXC_COMPAT_BINARY_DOUBLE_OVERLOADS (fn ) \
26
+ constexpr float fn (double V1, double V2) { \
27
+ return fn ((float )V1, (float )V2); \
28
+ } \
29
+ constexpr float2 fn (double2 V1, double2 V2) { \
30
+ return fn ((float2)V1, (float2)V2); \
31
+ } \
32
+ constexpr float3 fn (double3 V1, double3 V2) { \
33
+ return fn ((float3)V1, (float3)V2); \
34
+ } \
35
+ constexpr float4 fn (double4 V1, double4 V2) { \
36
+ return fn ((float4)V1, (float4)V2); \
37
+ }
38
+
39
+ #define _DXC_COMPAT_TERNARY_DOUBLE_OVERLOADS (fn ) \
40
+ constexpr float fn (double V1, double V2, double V3) { \
41
+ return fn ((float )V1, (float )V2, (float )V3); \
42
+ } \
43
+ constexpr float2 fn (double2 V1, double2 V2, double2 V3) { \
44
+ return fn ((float2)V1, (float2)V2, (float2)V3); \
45
+ } \
46
+ constexpr float3 fn (double3 V1, double3 V2, double3 V3) { \
47
+ return fn ((float3)V1, (float3)V2, (float3)V3); \
48
+ } \
49
+ constexpr float4 fn (double4 V1, double4 V2, double4 V3) { \
50
+ return fn ((float4)V1, (float4)V2, (float4)V3); \
51
+ }
52
+
53
+ // ===----------------------------------------------------------------------===//
54
+ // acos builtins overloads
55
+ // ===----------------------------------------------------------------------===//
56
+
57
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (acos)
58
+
59
+ // ===----------------------------------------------------------------------===//
60
+ // asin builtins overloads
61
+ // ===----------------------------------------------------------------------===//
62
+
63
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (asin)
64
+
65
+ // ===----------------------------------------------------------------------===//
66
+ // atan builtins overloads
67
+ // ===----------------------------------------------------------------------===//
68
+
69
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (atan)
70
+
71
+ // ===----------------------------------------------------------------------===//
72
+ // atan2 builtins overloads
73
+ // ===----------------------------------------------------------------------===//
74
+
75
+ _DXC_COMPAT_BINARY_DOUBLE_OVERLOADS (atan2)
76
+
77
+ // ===----------------------------------------------------------------------===//
78
+ // ceil builtins overloads
79
+ // ===----------------------------------------------------------------------===//
80
+
81
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (ceil)
82
+
19
83
// ===----------------------------------------------------------------------===//
20
84
// clamp builtins overloads
21
85
// ===----------------------------------------------------------------------===//
@@ -39,7 +103,82 @@ clamp(vector<T, N> p0, T p1, T p2) {
39
103
}
40
104
41
105
// ===----------------------------------------------------------------------===//
42
- // max builtin overloads
106
+ // cos builtins overloads
107
+ // ===----------------------------------------------------------------------===//
108
+
109
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (cos)
110
+
111
+ // ===----------------------------------------------------------------------===//
112
+ // cosh builtins overloads
113
+ // ===----------------------------------------------------------------------===//
114
+
115
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (cosh)
116
+
117
+ // ===----------------------------------------------------------------------===//
118
+ // degrees builtins overloads
119
+ // ===----------------------------------------------------------------------===//
120
+
121
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (degrees)
122
+
123
+ // ===----------------------------------------------------------------------===//
124
+ // exp builtins overloads
125
+ // ===----------------------------------------------------------------------===//
126
+
127
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (exp)
128
+
129
+ // ===----------------------------------------------------------------------===//
130
+ // exp2 builtins overloads
131
+ // ===----------------------------------------------------------------------===//
132
+
133
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (exp2)
134
+
135
+ // ===----------------------------------------------------------------------===//
136
+ // floor builtins overloads
137
+ // ===----------------------------------------------------------------------===//
138
+
139
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (floor)
140
+
141
+ // ===----------------------------------------------------------------------===//
142
+ // frac builtins overloads
143
+ // ===----------------------------------------------------------------------===//
144
+
145
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (frac)
146
+
147
+ // ===----------------------------------------------------------------------===//
148
+ // isinf builtins overloads
149
+ // ===----------------------------------------------------------------------===//
150
+
151
+ constexpr bool isinf (double V) { return isinf ((float )V); }
152
+ constexpr bool2 isinf (double2 V) { return isinf ((float2)V); }
153
+ constexpr bool3 isinf (double3 V) { return isinf ((float3)V); }
154
+ constexpr bool4 isinf (double4 V) { return isinf ((float4)V); }
155
+
156
+ // ===----------------------------------------------------------------------===//
157
+ // lerp builtins overloads
158
+ // ===----------------------------------------------------------------------===//
159
+
160
+ _DXC_COMPAT_TERNARY_DOUBLE_OVERLOADS (lerp)
161
+
162
+ // ===----------------------------------------------------------------------===//
163
+ // log builtins overloads
164
+ // ===----------------------------------------------------------------------===//
165
+
166
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (log)
167
+
168
+ // ===----------------------------------------------------------------------===//
169
+ // log10 builtins overloads
170
+ // ===----------------------------------------------------------------------===//
171
+
172
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (log10)
173
+
174
+ // ===----------------------------------------------------------------------===//
175
+ // log2 builtins overloads
176
+ // ===----------------------------------------------------------------------===//
177
+
178
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (log2)
179
+
180
+ // ===----------------------------------------------------------------------===//
181
+ // max builtins overloads
43
182
// ===----------------------------------------------------------------------===//
44
183
45
184
template <typename T, uint N>
@@ -55,7 +194,7 @@ max(T p0, vector<T, N> p1) {
55
194
}
56
195
57
196
// ===----------------------------------------------------------------------===//
58
- // min builtin overloads
197
+ // min builtins overloads
59
198
// ===----------------------------------------------------------------------===//
60
199
61
200
template <typename T, uint N>
@@ -70,5 +209,77 @@ min(T p0, vector<T, N> p1) {
70
209
return min ((vector<T, N>)p0, p1);
71
210
}
72
211
212
+ // ===----------------------------------------------------------------------===//
213
+ // normalize builtins overloads
214
+ // ===----------------------------------------------------------------------===//
215
+
216
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (normalize)
217
+
218
+ // ===----------------------------------------------------------------------===//
219
+ // pow builtins overloads
220
+ // ===----------------------------------------------------------------------===//
221
+
222
+ _DXC_COMPAT_BINARY_DOUBLE_OVERLOADS (pow)
223
+
224
+ // ===----------------------------------------------------------------------===//
225
+ // rsqrt builtins overloads
226
+ // ===----------------------------------------------------------------------===//
227
+
228
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (rsqrt)
229
+
230
+ // ===----------------------------------------------------------------------===//
231
+ // round builtins overloads
232
+ // ===----------------------------------------------------------------------===//
233
+
234
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (round)
235
+
236
+ // ===----------------------------------------------------------------------===//
237
+ // sin builtins overloads
238
+ // ===----------------------------------------------------------------------===//
239
+
240
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (sin)
241
+
242
+ // ===----------------------------------------------------------------------===//
243
+ // sinh builtins overloads
244
+ // ===----------------------------------------------------------------------===//
245
+
246
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (sinh)
247
+
248
+ // ===----------------------------------------------------------------------===//
249
+ // sqrt builtins overloads
250
+ // ===----------------------------------------------------------------------===//
251
+
252
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (sqrt)
253
+
254
+ // ===----------------------------------------------------------------------===//
255
+ // step builtins overloads
256
+ // ===----------------------------------------------------------------------===//
257
+
258
+ _DXC_COMPAT_BINARY_DOUBLE_OVERLOADS (step)
259
+
260
+ // ===----------------------------------------------------------------------===//
261
+ // tan builtins overloads
262
+ // ===----------------------------------------------------------------------===//
263
+
264
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (tan)
265
+
266
+ // ===----------------------------------------------------------------------===//
267
+ // tanh builtins overloads
268
+ // ===----------------------------------------------------------------------===//
269
+
270
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (tanh)
271
+
272
+ // ===----------------------------------------------------------------------===//
273
+ // trunc builtins overloads
274
+ // ===----------------------------------------------------------------------===//
275
+
276
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (trunc)
277
+
278
+ // ===----------------------------------------------------------------------===//
279
+ // radians builtins overloads
280
+ // ===----------------------------------------------------------------------===//
281
+
282
+ _DXC_COMPAT_UNARY_DOUBLE_OVERLOADS (radians)
283
+
73
284
} // namespace hlsl
74
285
#endif // _HLSL_COMPAT_OVERLOADS_H_
0 commit comments