Warning: This file is not a C or C++ file. It does not have highlighting.

1//===----- hlsl_intrinsics.h - HLSL definitions for intrinsics ----------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef _HLSL_HLSL_INTRINSICS_H_
10#define _HLSL_HLSL_INTRINSICS_H_
11
12namespace hlsl {
13
14// Note: Functions in this file are sorted alphabetically, then grouped by base
15// element type, and the element types are sorted by size, then singed integer,
16// unsigned integer and floating point. Keeping this ordering consistent will
17// help keep this file manageable as it grows.
18
19#define _HLSL_BUILTIN_ALIAS(builtin) \
20 __attribute__((clang_builtin_alias(builtin)))
21#define _HLSL_AVAILABILITY(environment, version) \
22 __attribute__((availability(environment, introduced = version)))
23
24#ifdef __HLSL_ENABLE_16_BIT
25#define _HLSL_16BIT_AVAILABILITY(environment, version) \
26 __attribute__((availability(environment, introduced = version)))
27#else
28#define _HLSL_16BIT_AVAILABILITY(environment, version)
29#endif
30
31//===----------------------------------------------------------------------===//
32// abs builtins
33//===----------------------------------------------------------------------===//
34
35/// \fn T abs(T Val)
36/// \brief Returns the absolute value of the input value, \a Val.
37/// \param Val The input value.
38
39#ifdef __HLSL_ENABLE_16_BIT
40_HLSL_AVAILABILITY(shadermodel, 6.2)
41_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
42int16_t abs(int16_t);
43_HLSL_AVAILABILITY(shadermodel, 6.2)
44_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
45int16_t2 abs(int16_t2);
46_HLSL_AVAILABILITY(shadermodel, 6.2)
47_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
48int16_t3 abs(int16_t3);
49_HLSL_AVAILABILITY(shadermodel, 6.2)
50_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
51int16_t4 abs(int16_t4);
52#endif
53
54_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
55_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
56half abs(half);
57_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
58_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
59half2 abs(half2);
60_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
61_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
62half3 abs(half3);
63_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
64_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
65half4 abs(half4);
66
67_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
68int abs(int);
69_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
70int2 abs(int2);
71_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
72int3 abs(int3);
73_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
74int4 abs(int4);
75
76_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
77float abs(float);
78_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
79float2 abs(float2);
80_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
81float3 abs(float3);
82_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
83float4 abs(float4);
84
85_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
86int64_t abs(int64_t);
87_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
88int64_t2 abs(int64_t2);
89_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
90int64_t3 abs(int64_t3);
91_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
92int64_t4 abs(int64_t4);
93
94_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
95double abs(double);
96_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
97double2 abs(double2);
98_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
99double3 abs(double3);
100_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
101double4 abs(double4);
102
103//===----------------------------------------------------------------------===//
104// all builtins
105//===----------------------------------------------------------------------===//
106
107/// \fn bool all(T x)
108/// \brief Returns True if all components of the \a x parameter are non-zero;
109/// otherwise, false. \param x The input value.
110
111#ifdef __HLSL_ENABLE_16_BIT
112_HLSL_AVAILABILITY(shadermodel, 6.2)
113_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
114bool all(int16_t);
115_HLSL_AVAILABILITY(shadermodel, 6.2)
116_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
117bool all(int16_t2);
118_HLSL_AVAILABILITY(shadermodel, 6.2)
119_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
120bool all(int16_t3);
121_HLSL_AVAILABILITY(shadermodel, 6.2)
122_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
123bool all(int16_t4);
124_HLSL_AVAILABILITY(shadermodel, 6.2)
125_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
126bool all(uint16_t);
127_HLSL_AVAILABILITY(shadermodel, 6.2)
128_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
129bool all(uint16_t2);
130_HLSL_AVAILABILITY(shadermodel, 6.2)
131_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
132bool all(uint16_t3);
133_HLSL_AVAILABILITY(shadermodel, 6.2)
134_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
135bool all(uint16_t4);
136#endif
137
138_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
139_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
140bool all(half);
141_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
142_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
143bool all(half2);
144_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
145_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
146bool all(half3);
147_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
148_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
149bool all(half4);
150
151_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
152bool all(bool);
153_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
154bool all(bool2);
155_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
156bool all(bool3);
157_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
158bool all(bool4);
159_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
160
161_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
162bool all(int);
163_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
164bool all(int2);
165_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
166bool all(int3);
167_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
168bool all(int4);
169
170_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
171bool all(uint);
172_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
173bool all(uint2);
174_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
175bool all(uint3);
176_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
177bool all(uint4);
178
179_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
180bool all(float);
181_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
182bool all(float2);
183_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
184bool all(float3);
185_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
186bool all(float4);
187
188_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
189bool all(int64_t);
190_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
191bool all(int64_t2);
192_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
193bool all(int64_t3);
194_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
195bool all(int64_t4);
196
197_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
198bool all(uint64_t);
199_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
200bool all(uint64_t2);
201_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
202bool all(uint64_t3);
203_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
204bool all(uint64_t4);
205
206_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
207bool all(double);
208_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
209bool all(double2);
210_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
211bool all(double3);
212_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
213bool all(double4);
214
215//===----------------------------------------------------------------------===//
216// any builtins
217//===----------------------------------------------------------------------===//
218
219/// \fn bool any(T x)
220/// \brief Returns True if any components of the \a x parameter are non-zero;
221/// otherwise, false. \param x The input value.
222
223#ifdef __HLSL_ENABLE_16_BIT
224_HLSL_AVAILABILITY(shadermodel, 6.2)
225_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
226bool any(int16_t);
227_HLSL_AVAILABILITY(shadermodel, 6.2)
228_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
229bool any(int16_t2);
230_HLSL_AVAILABILITY(shadermodel, 6.2)
231_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
232bool any(int16_t3);
233_HLSL_AVAILABILITY(shadermodel, 6.2)
234_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
235bool any(int16_t4);
236_HLSL_AVAILABILITY(shadermodel, 6.2)
237_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
238bool any(uint16_t);
239_HLSL_AVAILABILITY(shadermodel, 6.2)
240_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
241bool any(uint16_t2);
242_HLSL_AVAILABILITY(shadermodel, 6.2)
243_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
244bool any(uint16_t3);
245_HLSL_AVAILABILITY(shadermodel, 6.2)
246_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
247bool any(uint16_t4);
248#endif
249
250_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
251_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
252bool any(half);
253_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
254_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
255bool any(half2);
256_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
257_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
258bool any(half3);
259_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
260_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
261bool any(half4);
262
263_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
264bool any(bool);
265_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
266bool any(bool2);
267_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
268bool any(bool3);
269_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
270bool any(bool4);
271_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
272
273_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
274bool any(int);
275_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
276bool any(int2);
277_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
278bool any(int3);
279_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
280bool any(int4);
281
282_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
283bool any(uint);
284_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
285bool any(uint2);
286_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
287bool any(uint3);
288_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
289bool any(uint4);
290
291_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
292bool any(float);
293_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
294bool any(float2);
295_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
296bool any(float3);
297_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
298bool any(float4);
299
300_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
301bool any(int64_t);
302_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
303bool any(int64_t2);
304_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
305bool any(int64_t3);
306_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
307bool any(int64_t4);
308
309_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
310bool any(uint64_t);
311_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
312bool any(uint64_t2);
313_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
314bool any(uint64_t3);
315_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
316bool any(uint64_t4);
317
318_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
319bool any(double);
320_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
321bool any(double2);
322_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
323bool any(double3);
324_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
325bool any(double4);
326
327//===----------------------------------------------------------------------===//
328// ceil builtins
329//===----------------------------------------------------------------------===//
330
331/// \fn T ceil(T Val)
332/// \brief Returns the smallest integer value that is greater than or equal to
333/// the input value, \a Val.
334/// \param Val The input value.
335
336_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
337_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
338half ceil(half);
339_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
340_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
341half2 ceil(half2);
342_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
343_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
344half3 ceil(half3);
345_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
346_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
347half4 ceil(half4);
348
349_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
350float ceil(float);
351_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
352float2 ceil(float2);
353_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
354float3 ceil(float3);
355_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
356float4 ceil(float4);
357
358//===----------------------------------------------------------------------===//
359// clamp builtins
360//===----------------------------------------------------------------------===//
361
362/// \fn T clamp(T X, T Min, T Max)
363/// \brief Clamps the specified value \a X to the specified
364/// minimum ( \a Min) and maximum ( \a Max) range.
365/// \param X A value to clamp.
366/// \param Min The specified minimum range.
367/// \param Max The specified maximum range.
368///
369/// Returns The clamped value for the \a X parameter.
370/// For values of -INF or INF, clamp will behave as expected.
371/// However for values of NaN, the results are undefined.
372
373_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
374_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
375half clamp(half, half, half);
376_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
377_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
378half2 clamp(half2, half2, half2);
379_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
380_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
381half3 clamp(half3, half3, half3);
382_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
383_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
384half4 clamp(half4, half4, half4);
385
386#ifdef __HLSL_ENABLE_16_BIT
387_HLSL_AVAILABILITY(shadermodel, 6.2)
388_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
389int16_t clamp(int16_t, int16_t, int16_t);
390_HLSL_AVAILABILITY(shadermodel, 6.2)
391_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
392int16_t2 clamp(int16_t2, int16_t2, int16_t2);
393_HLSL_AVAILABILITY(shadermodel, 6.2)
394_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
395int16_t3 clamp(int16_t3, int16_t3, int16_t3);
396_HLSL_AVAILABILITY(shadermodel, 6.2)
397_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
398int16_t4 clamp(int16_t4, int16_t4, int16_t4);
399
400_HLSL_AVAILABILITY(shadermodel, 6.2)
401_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
402uint16_t clamp(uint16_t, uint16_t, uint16_t);
403_HLSL_AVAILABILITY(shadermodel, 6.2)
404_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
405uint16_t2 clamp(uint16_t2, uint16_t2, uint16_t2);
406_HLSL_AVAILABILITY(shadermodel, 6.2)
407_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
408uint16_t3 clamp(uint16_t3, uint16_t3, uint16_t3);
409_HLSL_AVAILABILITY(shadermodel, 6.2)
410_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
411uint16_t4 clamp(uint16_t4, uint16_t4, uint16_t4);
412#endif
413
414_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
415int clamp(int, int, int);
416_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
417int2 clamp(int2, int2, int2);
418_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
419int3 clamp(int3, int3, int3);
420_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
421int4 clamp(int4, int4, int4);
422
423_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
424uint clamp(uint, uint, uint);
425_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
426uint2 clamp(uint2, uint2, uint2);
427_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
428uint3 clamp(uint3, uint3, uint3);
429_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
430uint4 clamp(uint4, uint4, uint4);
431
432_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
433int64_t clamp(int64_t, int64_t, int64_t);
434_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
435int64_t2 clamp(int64_t2, int64_t2, int64_t2);
436_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
437int64_t3 clamp(int64_t3, int64_t3, int64_t3);
438_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
439int64_t4 clamp(int64_t4, int64_t4, int64_t4);
440
441_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
442uint64_t clamp(uint64_t, uint64_t, uint64_t);
443_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
444uint64_t2 clamp(uint64_t2, uint64_t2, uint64_t2);
445_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
446uint64_t3 clamp(uint64_t3, uint64_t3, uint64_t3);
447_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
448uint64_t4 clamp(uint64_t4, uint64_t4, uint64_t4);
449
450_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
451float clamp(float, float, float);
452_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
453float2 clamp(float2, float2, float2);
454_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
455float3 clamp(float3, float3, float3);
456_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
457float4 clamp(float4, float4, float4);
458
459_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
460double clamp(double, double, double);
461_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
462double2 clamp(double2, double2, double2);
463_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
464double3 clamp(double3, double3, double3);
465_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
466double4 clamp(double4, double4, double4);
467
468//===----------------------------------------------------------------------===//
469// cos builtins
470//===----------------------------------------------------------------------===//
471
472/// \fn T cos(T Val)
473/// \brief Returns the cosine of the input value, \a Val.
474/// \param Val The input value.
475
476_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
477_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
478half cos(half);
479_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
480_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
481half2 cos(half2);
482_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
483_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
484half3 cos(half3);
485_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
486_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
487half4 cos(half4);
488
489_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
490float cos(float);
491_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
492float2 cos(float2);
493_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
494float3 cos(float3);
495_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
496float4 cos(float4);
497
498//===----------------------------------------------------------------------===//
499// dot product builtins
500//===----------------------------------------------------------------------===//
501
502/// \fn K dot(T X, T Y)
503/// \brief Return the dot product (a scalar value) of \a X and \a Y.
504/// \param X The X input value.
505/// \param Y The Y input value.
506
507_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
508_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
509half dot(half, half);
510_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
511_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
512half dot(half2, half2);
513_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
514_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
515half dot(half3, half3);
516_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
517_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
518half dot(half4, half4);
519
520#ifdef __HLSL_ENABLE_16_BIT
521_HLSL_AVAILABILITY(shadermodel, 6.2)
522_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
523int16_t dot(int16_t, int16_t);
524_HLSL_AVAILABILITY(shadermodel, 6.2)
525_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
526int16_t dot(int16_t2, int16_t2);
527_HLSL_AVAILABILITY(shadermodel, 6.2)
528_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
529int16_t dot(int16_t3, int16_t3);
530_HLSL_AVAILABILITY(shadermodel, 6.2)
531_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
532int16_t dot(int16_t4, int16_t4);
533
534_HLSL_AVAILABILITY(shadermodel, 6.2)
535_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
536uint16_t dot(uint16_t, uint16_t);
537_HLSL_AVAILABILITY(shadermodel, 6.2)
538_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
539uint16_t dot(uint16_t2, uint16_t2);
540_HLSL_AVAILABILITY(shadermodel, 6.2)
541_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
542uint16_t dot(uint16_t3, uint16_t3);
543_HLSL_AVAILABILITY(shadermodel, 6.2)
544_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
545uint16_t dot(uint16_t4, uint16_t4);
546#endif
547
548_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
549float dot(float, float);
550_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
551float dot(float2, float2);
552_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
553float dot(float3, float3);
554_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
555float dot(float4, float4);
556
557_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
558double dot(double, double);
559
560_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
561int dot(int, int);
562_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
563int dot(int2, int2);
564_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
565int dot(int3, int3);
566_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
567int dot(int4, int4);
568
569_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
570uint dot(uint, uint);
571_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
572uint dot(uint2, uint2);
573_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
574uint dot(uint3, uint3);
575_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
576uint dot(uint4, uint4);
577
578_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
579int64_t dot(int64_t, int64_t);
580_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
581int64_t dot(int64_t2, int64_t2);
582_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
583int64_t dot(int64_t3, int64_t3);
584_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
585int64_t dot(int64_t4, int64_t4);
586
587_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
588uint64_t dot(uint64_t, uint64_t);
589_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
590uint64_t dot(uint64_t2, uint64_t2);
591_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
592uint64_t dot(uint64_t3, uint64_t3);
593_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
594uint64_t dot(uint64_t4, uint64_t4);
595
596//===----------------------------------------------------------------------===//
597// exp builtins
598//===----------------------------------------------------------------------===//
599
600/// \fn T exp(T x)
601/// \brief Returns the base-e exponential, or \a e**x, of the specified value.
602/// \param x The specified input value.
603///
604/// The return value is the base-e exponential of the \a x parameter.
605
606_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
607_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
608half exp(half);
609_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
610_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
611half2 exp(half2);
612_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
613_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
614half3 exp(half3);
615_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
616_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
617half4 exp(half4);
618
619_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
620float exp(float);
621_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
622float2 exp(float2);
623_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
624float3 exp(float3);
625_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
626float4 exp(float4);
627
628//===----------------------------------------------------------------------===//
629// exp2 builtins
630//===----------------------------------------------------------------------===//
631
632/// \fn T exp2(T x)
633/// \brief Returns the base 2 exponential, or \a 2**x, of the specified value.
634/// \param x The specified input value.
635///
636/// The base 2 exponential of the \a x parameter.
637
638_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
639_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
640half exp2(half);
641_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
642_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
643half2 exp2(half2);
644_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
645_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
646half3 exp2(half3);
647_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
648_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
649half4 exp2(half4);
650
651_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
652float exp2(float);
653_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
654float2 exp2(float2);
655_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
656float3 exp2(float3);
657_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
658float4 exp2(float4);
659
660//===----------------------------------------------------------------------===//
661// floor builtins
662//===----------------------------------------------------------------------===//
663
664/// \fn T floor(T Val)
665/// \brief Returns the largest integer that is less than or equal to the input
666/// value, \a Val.
667/// \param Val The input value.
668
669_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
670_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
671half floor(half);
672_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
673_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
674half2 floor(half2);
675_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
676_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
677half3 floor(half3);
678_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
679_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
680half4 floor(half4);
681
682_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
683float floor(float);
684_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
685float2 floor(float2);
686_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
687float3 floor(float3);
688_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
689float4 floor(float4);
690
691//===----------------------------------------------------------------------===//
692// frac builtins
693//===----------------------------------------------------------------------===//
694
695/// \fn T frac(T x)
696/// \brief Returns the fractional (or decimal) part of x. \a x parameter.
697/// \param x The specified input value.
698///
699/// If \a the return value is greater than or equal to 0 and less than 1.
700
701_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
702_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
703half frac(half);
704_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
705_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
706half2 frac(half2);
707_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
708_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
709half3 frac(half3);
710_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
711_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
712half4 frac(half4);
713
714_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
715float frac(float);
716_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
717float2 frac(float2);
718_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
719float3 frac(float3);
720_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
721float4 frac(float4);
722
723//===----------------------------------------------------------------------===//
724// isinf builtins
725//===----------------------------------------------------------------------===//
726
727/// \fn T isinf(T x)
728/// \brief Determines if the specified value \a x is infinite.
729/// \param x The specified input value.
730///
731/// Returns a value of the same size as the input, with a value set
732/// to True if the x parameter is +INF or -INF. Otherwise, False.
733
734_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
735_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
736bool isinf(half);
737_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
738_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
739bool2 isinf(half2);
740_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
741_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
742bool3 isinf(half3);
743_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
744_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
745bool4 isinf(half4);
746
747_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
748bool isinf(float);
749_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
750bool2 isinf(float2);
751_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
752bool3 isinf(float3);
753_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
754bool4 isinf(float4);
755
756//===----------------------------------------------------------------------===//
757// lerp builtins
758//===----------------------------------------------------------------------===//
759
760/// \fn T lerp(T x, T y, T s)
761/// \brief Returns the linear interpolation of x to y by s.
762/// \param x [in] The first-floating point value.
763/// \param y [in] The second-floating point value.
764/// \param s [in] A value that linearly interpolates between the x parameter and
765/// the y parameter.
766///
767/// Linear interpolation is based on the following formula: x*(1-s) + y*s which
768/// can equivalently be written as x + s(y-x).
769
770_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
771_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
772half lerp(half, half, half);
773_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
774_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
775half2 lerp(half2, half2, half2);
776_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
777_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
778half3 lerp(half3, half3, half3);
779_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
780_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
781half4 lerp(half4, half4, half4);
782
783_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
784float lerp(float, float, float);
785_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
786float2 lerp(float2, float2, float2);
787_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
788float3 lerp(float3, float3, float3);
789_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
790float4 lerp(float4, float4, float4);
791
792//===----------------------------------------------------------------------===//
793// log builtins
794//===----------------------------------------------------------------------===//
795
796/// \fn T log(T Val)
797/// \brief The base-e logarithm of the input value, \a Val parameter.
798/// \param Val The input value.
799///
800/// If \a Val is negative, this result is undefined. If \a Val is 0, this
801/// function returns negative infinity.
802
803_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
804_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
805half log(half);
806_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
807_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
808half2 log(half2);
809_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
810_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
811half3 log(half3);
812_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
813_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
814half4 log(half4);
815
816_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
817float log(float);
818_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
819float2 log(float2);
820_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
821float3 log(float3);
822_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
823float4 log(float4);
824
825//===----------------------------------------------------------------------===//
826// log10 builtins
827//===----------------------------------------------------------------------===//
828
829/// \fn T log10(T Val)
830/// \brief The base-10 logarithm of the input value, \a Val parameter.
831/// \param Val The input value.
832///
833/// If \a Val is negative, this result is undefined. If \a Val is 0, this
834/// function returns negative infinity.
835
836_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
837_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
838half log10(half);
839_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
840_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
841half2 log10(half2);
842_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
843_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
844half3 log10(half3);
845_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
846_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
847half4 log10(half4);
848
849_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
850float log10(float);
851_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
852float2 log10(float2);
853_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
854float3 log10(float3);
855_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
856float4 log10(float4);
857
858//===----------------------------------------------------------------------===//
859// log2 builtins
860//===----------------------------------------------------------------------===//
861
862/// \fn T log2(T Val)
863/// \brief The base-2 logarithm of the input value, \a Val parameter.
864/// \param Val The input value.
865///
866/// If \a Val is negative, this result is undefined. If \a Val is 0, this
867/// function returns negative infinity.
868
869_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
870_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
871half log2(half);
872_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
873_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
874half2 log2(half2);
875_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
876_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
877half3 log2(half3);
878_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
879_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
880half4 log2(half4);
881
882_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
883float log2(float);
884_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
885float2 log2(float2);
886_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
887float3 log2(float3);
888_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
889float4 log2(float4);
890
891//===----------------------------------------------------------------------===//
892// mad builtins
893//===----------------------------------------------------------------------===//
894
895/// \fn T mad(T M, T A, T B)
896/// \brief The result of \a M * \a A + \a B.
897/// \param M The multiplication value.
898/// \param A The first addition value.
899/// \param B The second addition value.
900
901_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
902_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
903half mad(half, half, half);
904_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
905_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
906half2 mad(half2, half2, half2);
907_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
908_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
909half3 mad(half3, half3, half3);
910_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
911_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
912half4 mad(half4, half4, half4);
913
914#ifdef __HLSL_ENABLE_16_BIT
915_HLSL_AVAILABILITY(shadermodel, 6.2)
916_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
917int16_t mad(int16_t, int16_t, int16_t);
918_HLSL_AVAILABILITY(shadermodel, 6.2)
919_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
920int16_t2 mad(int16_t2, int16_t2, int16_t2);
921_HLSL_AVAILABILITY(shadermodel, 6.2)
922_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
923int16_t3 mad(int16_t3, int16_t3, int16_t3);
924_HLSL_AVAILABILITY(shadermodel, 6.2)
925_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
926int16_t4 mad(int16_t4, int16_t4, int16_t4);
927
928_HLSL_AVAILABILITY(shadermodel, 6.2)
929_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
930uint16_t mad(uint16_t, uint16_t, uint16_t);
931_HLSL_AVAILABILITY(shadermodel, 6.2)
932_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
933uint16_t2 mad(uint16_t2, uint16_t2, uint16_t2);
934_HLSL_AVAILABILITY(shadermodel, 6.2)
935_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
936uint16_t3 mad(uint16_t3, uint16_t3, uint16_t3);
937_HLSL_AVAILABILITY(shadermodel, 6.2)
938_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
939uint16_t4 mad(uint16_t4, uint16_t4, uint16_t4);
940#endif
941
942_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
943int mad(int, int, int);
944_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
945int2 mad(int2, int2, int2);
946_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
947int3 mad(int3, int3, int3);
948_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
949int4 mad(int4, int4, int4);
950
951_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
952uint mad(uint, uint, uint);
953_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
954uint2 mad(uint2, uint2, uint2);
955_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
956uint3 mad(uint3, uint3, uint3);
957_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
958uint4 mad(uint4, uint4, uint4);
959
960_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
961int64_t mad(int64_t, int64_t, int64_t);
962_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
963int64_t2 mad(int64_t2, int64_t2, int64_t2);
964_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
965int64_t3 mad(int64_t3, int64_t3, int64_t3);
966_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
967int64_t4 mad(int64_t4, int64_t4, int64_t4);
968
969_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
970uint64_t mad(uint64_t, uint64_t, uint64_t);
971_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
972uint64_t2 mad(uint64_t2, uint64_t2, uint64_t2);
973_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
974uint64_t3 mad(uint64_t3, uint64_t3, uint64_t3);
975_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
976uint64_t4 mad(uint64_t4, uint64_t4, uint64_t4);
977
978_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
979float mad(float, float, float);
980_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
981float2 mad(float2, float2, float2);
982_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
983float3 mad(float3, float3, float3);
984_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
985float4 mad(float4, float4, float4);
986
987_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
988double mad(double, double, double);
989_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
990double2 mad(double2, double2, double2);
991_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
992double3 mad(double3, double3, double3);
993_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
994double4 mad(double4, double4, double4);
995
996//===----------------------------------------------------------------------===//
997// max builtins
998//===----------------------------------------------------------------------===//
999
1000/// \fn T max(T X, T Y)
1001/// \brief Return the greater of \a X and \a Y.
1002/// \param X The X input value.
1003/// \param Y The Y input value.
1004
1005_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1006_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1007half max(half, half);
1008_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1009_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1010half2 max(half2, half2);
1011_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1012_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1013half3 max(half3, half3);
1014_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1015_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1016half4 max(half4, half4);
1017
1018#ifdef __HLSL_ENABLE_16_BIT
1019_HLSL_AVAILABILITY(shadermodel, 6.2)
1020_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1021int16_t max(int16_t, int16_t);
1022_HLSL_AVAILABILITY(shadermodel, 6.2)
1023_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1024int16_t2 max(int16_t2, int16_t2);
1025_HLSL_AVAILABILITY(shadermodel, 6.2)
1026_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1027int16_t3 max(int16_t3, int16_t3);
1028_HLSL_AVAILABILITY(shadermodel, 6.2)
1029_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1030int16_t4 max(int16_t4, int16_t4);
1031
1032_HLSL_AVAILABILITY(shadermodel, 6.2)
1033_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1034uint16_t max(uint16_t, uint16_t);
1035_HLSL_AVAILABILITY(shadermodel, 6.2)
1036_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1037uint16_t2 max(uint16_t2, uint16_t2);
1038_HLSL_AVAILABILITY(shadermodel, 6.2)
1039_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1040uint16_t3 max(uint16_t3, uint16_t3);
1041_HLSL_AVAILABILITY(shadermodel, 6.2)
1042_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1043uint16_t4 max(uint16_t4, uint16_t4);
1044#endif
1045
1046_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1047int max(int, int);
1048_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1049int2 max(int2, int2);
1050_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1051int3 max(int3, int3);
1052_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1053int4 max(int4, int4);
1054
1055_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1056uint max(uint, uint);
1057_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1058uint2 max(uint2, uint2);
1059_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1060uint3 max(uint3, uint3);
1061_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1062uint4 max(uint4, uint4);
1063
1064_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1065int64_t max(int64_t, int64_t);
1066_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1067int64_t2 max(int64_t2, int64_t2);
1068_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1069int64_t3 max(int64_t3, int64_t3);
1070_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1071int64_t4 max(int64_t4, int64_t4);
1072
1073_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1074uint64_t max(uint64_t, uint64_t);
1075_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1076uint64_t2 max(uint64_t2, uint64_t2);
1077_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1078uint64_t3 max(uint64_t3, uint64_t3);
1079_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1080uint64_t4 max(uint64_t4, uint64_t4);
1081
1082_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1083float max(float, float);
1084_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1085float2 max(float2, float2);
1086_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1087float3 max(float3, float3);
1088_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1089float4 max(float4, float4);
1090
1091_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1092double max(double, double);
1093_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1094double2 max(double2, double2);
1095_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1096double3 max(double3, double3);
1097_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1098double4 max(double4, double4);
1099
1100//===----------------------------------------------------------------------===//
1101// min builtins
1102//===----------------------------------------------------------------------===//
1103
1104/// \fn T min(T X, T Y)
1105/// \brief Return the lesser of \a X and \a Y.
1106/// \param X The X input value.
1107/// \param Y The Y input value.
1108
1109_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1110_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1111half min(half, half);
1112_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1113_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1114half2 min(half2, half2);
1115_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1116_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1117half3 min(half3, half3);
1118_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1119_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1120half4 min(half4, half4);
1121
1122#ifdef __HLSL_ENABLE_16_BIT
1123_HLSL_AVAILABILITY(shadermodel, 6.2)
1124_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1125int16_t min(int16_t, int16_t);
1126_HLSL_AVAILABILITY(shadermodel, 6.2)
1127_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1128int16_t2 min(int16_t2, int16_t2);
1129_HLSL_AVAILABILITY(shadermodel, 6.2)
1130_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1131int16_t3 min(int16_t3, int16_t3);
1132_HLSL_AVAILABILITY(shadermodel, 6.2)
1133_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1134int16_t4 min(int16_t4, int16_t4);
1135
1136_HLSL_AVAILABILITY(shadermodel, 6.2)
1137_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1138uint16_t min(uint16_t, uint16_t);
1139_HLSL_AVAILABILITY(shadermodel, 6.2)
1140_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1141uint16_t2 min(uint16_t2, uint16_t2);
1142_HLSL_AVAILABILITY(shadermodel, 6.2)
1143_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1144uint16_t3 min(uint16_t3, uint16_t3);
1145_HLSL_AVAILABILITY(shadermodel, 6.2)
1146_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1147uint16_t4 min(uint16_t4, uint16_t4);
1148#endif
1149
1150_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1151int min(int, int);
1152_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1153int2 min(int2, int2);
1154_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1155int3 min(int3, int3);
1156_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1157int4 min(int4, int4);
1158
1159_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1160uint min(uint, uint);
1161_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1162uint2 min(uint2, uint2);
1163_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1164uint3 min(uint3, uint3);
1165_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1166uint4 min(uint4, uint4);
1167
1168_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1169float min(float, float);
1170_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1171float2 min(float2, float2);
1172_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1173float3 min(float3, float3);
1174_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1175float4 min(float4, float4);
1176
1177_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1178int64_t min(int64_t, int64_t);
1179_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1180int64_t2 min(int64_t2, int64_t2);
1181_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1182int64_t3 min(int64_t3, int64_t3);
1183_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1184int64_t4 min(int64_t4, int64_t4);
1185
1186_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1187uint64_t min(uint64_t, uint64_t);
1188_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1189uint64_t2 min(uint64_t2, uint64_t2);
1190_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1191uint64_t3 min(uint64_t3, uint64_t3);
1192_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1193uint64_t4 min(uint64_t4, uint64_t4);
1194
1195_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1196double min(double, double);
1197_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1198double2 min(double2, double2);
1199_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1200double3 min(double3, double3);
1201_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1202double4 min(double4, double4);
1203
1204//===----------------------------------------------------------------------===//
1205// pow builtins
1206//===----------------------------------------------------------------------===//
1207
1208/// \fn T pow(T Val, T Pow)
1209/// \brief Return the value \a Val, raised to the power \a Pow.
1210/// \param Val The input value.
1211/// \param Pow The specified power.
1212
1213_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1214_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1215half pow(half, half);
1216_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1217_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1218half2 pow(half2, half2);
1219_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1220_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1221half3 pow(half3, half3);
1222_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1223_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1224half4 pow(half4, half4);
1225
1226_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1227float pow(float, float);
1228_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1229float2 pow(float2, float2);
1230_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1231float3 pow(float3, float3);
1232_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1233float4 pow(float4, float4);
1234
1235//===----------------------------------------------------------------------===//
1236// reversebits builtins
1237//===----------------------------------------------------------------------===//
1238
1239/// \fn T reversebits(T Val)
1240/// \brief Return the value \a Val with the bit order reversed.
1241/// \param Val The input value.
1242
1243#ifdef __HLSL_ENABLE_16_BIT
1244_HLSL_AVAILABILITY(shadermodel, 6.2)
1245_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1246uint16_t reversebits(uint16_t);
1247_HLSL_AVAILABILITY(shadermodel, 6.2)
1248_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1249uint16_t2 reversebits(uint16_t2);
1250_HLSL_AVAILABILITY(shadermodel, 6.2)
1251_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1252uint16_t3 reversebits(uint16_t3);
1253_HLSL_AVAILABILITY(shadermodel, 6.2)
1254_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1255uint16_t4 reversebits(uint16_t4);
1256#endif
1257
1258_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1259uint reversebits(uint);
1260_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1261uint2 reversebits(uint2);
1262_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1263uint3 reversebits(uint3);
1264_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1265uint4 reversebits(uint4);
1266
1267_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1268uint64_t reversebits(uint64_t);
1269_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1270uint64_t2 reversebits(uint64_t2);
1271_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1272uint64_t3 reversebits(uint64_t3);
1273_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1274uint64_t4 reversebits(uint64_t4);
1275
1276//===----------------------------------------------------------------------===//
1277// rcp builtins
1278//===----------------------------------------------------------------------===//
1279
1280/// \fn T rcp(T x)
1281/// \brief Calculates a fast, approximate, per-component reciprocal ie 1 / \a x.
1282/// \param x The specified input value.
1283///
1284/// The return value is the reciprocal of the \a x parameter.
1285
1286_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1287_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1288half rcp(half);
1289_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1290_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1291half2 rcp(half2);
1292_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1293_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1294half3 rcp(half3);
1295_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1296_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1297half4 rcp(half4);
1298
1299_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1300float rcp(float);
1301_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1302float2 rcp(float2);
1303_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1304float3 rcp(float3);
1305_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1306float4 rcp(float4);
1307
1308_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1309double rcp(double);
1310_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1311double2 rcp(double2);
1312_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1313double3 rcp(double3);
1314_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1315double4 rcp(double4);
1316
1317//===----------------------------------------------------------------------===//
1318// rsqrt builtins
1319//===----------------------------------------------------------------------===//
1320
1321/// \fn T rsqrt(T x)
1322/// \brief Returns the reciprocal of the square root of the specified value.
1323/// ie 1 / sqrt( \a x).
1324/// \param x The specified input value.
1325///
1326/// This function uses the following formula: 1 / sqrt(x).
1327
1328_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1329_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1330half rsqrt(half);
1331_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1332_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1333half2 rsqrt(half2);
1334_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1335_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1336half3 rsqrt(half3);
1337_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1338_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1339half4 rsqrt(half4);
1340
1341_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1342float rsqrt(float);
1343_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1344float2 rsqrt(float2);
1345_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1346float3 rsqrt(float3);
1347_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1348float4 rsqrt(float4);
1349
1350//===----------------------------------------------------------------------===//
1351// round builtins
1352//===----------------------------------------------------------------------===//
1353
1354/// \fn T round(T x)
1355/// \brief Rounds the specified value \a x to the nearest integer.
1356/// \param x The specified input value.
1357///
1358/// The return value is the \a x parameter, rounded to the nearest integer
1359/// within a floating-point type. Halfway cases are
1360/// rounded to the nearest even value.
1361
1362_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1363_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1364half round(half);
1365_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1366_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1367half2 round(half2);
1368_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1369_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1370half3 round(half3);
1371_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1372_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1373half4 round(half4);
1374
1375_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1376float round(float);
1377_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1378float2 round(float2);
1379_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1380float3 round(float3);
1381_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1382float4 round(float4);
1383
1384//===----------------------------------------------------------------------===//
1385// sin builtins
1386//===----------------------------------------------------------------------===//
1387
1388/// \fn T sin(T Val)
1389/// \brief Returns the sine of the input value, \a Val.
1390/// \param Val The input value.
1391
1392_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1393_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1394half sin(half);
1395_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1396_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1397half2 sin(half2);
1398_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1399_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1400half3 sin(half3);
1401_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1402_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1403half4 sin(half4);
1404
1405_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1406float sin(float);
1407_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1408float2 sin(float2);
1409_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1410float3 sin(float3);
1411_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1412float4 sin(float4);
1413
1414//===----------------------------------------------------------------------===//
1415// sqrt builtins
1416//===----------------------------------------------------------------------===//
1417
1418/// \fn T sqrt(T Val)
1419/// \brief Returns the square root of the input value, \a Val.
1420/// \param Val The input value.
1421
1422_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1423_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1424half sqrt(half);
1425_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1426_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1427half2 sqrt(half2);
1428_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1429_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1430half3 sqrt(half3);
1431_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1432_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1433half4 sqrt(half4);
1434
1435_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1436float sqrt(float);
1437_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1438float2 sqrt(float2);
1439_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1440float3 sqrt(float3);
1441_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1442float4 sqrt(float4);
1443
1444//===----------------------------------------------------------------------===//
1445// trunc builtins
1446//===----------------------------------------------------------------------===//
1447
1448/// \fn T trunc(T Val)
1449/// \brief Returns the truncated integer value of the input value, \a Val.
1450/// \param Val The input value.
1451
1452_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1453_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1454half trunc(half);
1455_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1456_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1457half2 trunc(half2);
1458_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1459_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1460half3 trunc(half3);
1461_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1462_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1463half4 trunc(half4);
1464
1465_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1466float trunc(float);
1467_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1468float2 trunc(float2);
1469_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1470float3 trunc(float3);
1471_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1472float4 trunc(float4);
1473
1474//===----------------------------------------------------------------------===//
1475// Wave* builtins
1476//===----------------------------------------------------------------------===//
1477
1478/// \brief Counts the number of boolean variables which evaluate to true across
1479/// all active lanes in the current wave.
1480///
1481/// \param Val The input boolean value.
1482/// \return The number of lanes for which the boolean variable evaluates to
1483/// true, across all active lanes in the current wave.
1484_HLSL_AVAILABILITY(shadermodel, 6.0)
1485_HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_count_bits)
1486__attribute__((convergent)) uint WaveActiveCountBits(bool Val);
1487
1488/// \brief Returns the index of the current lane within the current wave.
1489_HLSL_AVAILABILITY(shadermodel, 6.0)
1490_HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_get_lane_index)
1491__attribute__((convergent)) uint WaveGetLaneIndex();
1492
1493} // namespace hlsl
1494#endif //_HLSL_HLSL_INTRINSICS_H_
1495

Warning: This file is not a C or C++ file. It does not have highlighting.

source code of clang/lib/Headers/hlsl/hlsl_intrinsics.h