clang 19.0.0git
hlsl_intrinsics.h
Go to the documentation of this file.
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)
60_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
61_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
63_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
64_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
66
67_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
68int abs(int);
69_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
71_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
73_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
75
76_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
77float abs(float);
78_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
80_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
82_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
84
85_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
87_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
89_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
91_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
93
94_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
95double abs(double);
96_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
98_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
100_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs)
102
103//===----------------------------------------------------------------------===//
104// any builtins
105//===----------------------------------------------------------------------===//
106
107/// \fn bool any(T x)
108/// \brief Returns True if any 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_any)
114bool any(int16_t);
115_HLSL_AVAILABILITY(shadermodel, 6.2)
116_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
117bool any(int16_t2);
118_HLSL_AVAILABILITY(shadermodel, 6.2)
119_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
120bool any(int16_t3);
121_HLSL_AVAILABILITY(shadermodel, 6.2)
122_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
123bool any(int16_t4);
124_HLSL_AVAILABILITY(shadermodel, 6.2)
125_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
126bool any(uint16_t);
127_HLSL_AVAILABILITY(shadermodel, 6.2)
128_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
129bool any(uint16_t2);
130_HLSL_AVAILABILITY(shadermodel, 6.2)
131_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
132bool any(uint16_t3);
133_HLSL_AVAILABILITY(shadermodel, 6.2)
134_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
135bool any(uint16_t4);
136#endif
137
138_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
139_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
140bool any(half);
141_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
142_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
143bool any(half2);
144_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
145_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
146bool any(half3);
147_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
148_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
149bool any(half4);
150
151_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
152bool any(bool);
153_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
154bool any(bool2);
155_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
156bool any(bool3);
157_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
158bool any(bool4);
159_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
160
161_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
162bool any(int);
163_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
164bool any(int2);
165_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
166bool any(int3);
167_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
168bool any(int4);
169
170_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
171bool any(uint);
172_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
173bool any(uint2);
174_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
175bool any(uint3);
176_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
177bool any(uint4);
178
179_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
180bool any(float);
181_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
183_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
185_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
187
188_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
190_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
192_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
194_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
196
197_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
199_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
201_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
203_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
205
206_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
207bool any(double);
208_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
210_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
212_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
214
215//===----------------------------------------------------------------------===//
216// ceil builtins
217//===----------------------------------------------------------------------===//
218
219/// \fn T ceil(T Val)
220/// \brief Returns the smallest integer value that is greater than or equal to
221/// the input value, \a Val.
222/// \param Val The input value.
223
224_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
225_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
226half ceil(half);
227_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
228_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
230_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
231_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
233_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
234_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
236
237_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
238float ceil(float);
239_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
241_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
243_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
245
246_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
247double ceil(double);
248_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
250_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
252_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
254
255//===----------------------------------------------------------------------===//
256// clamp builtins
257//===----------------------------------------------------------------------===//
258
259/// \fn T clamp(T X, T Min, T Max)
260/// \brief Clamps the specified value \a X to the specified
261/// minimum ( \a Min) and maximum ( \a Max) range.
262/// \param X A value to clamp.
263/// \param Min The specified minimum range.
264/// \param Max The specified maximum range.
265///
266/// Returns The clamped value for the \a X parameter.
267/// For values of -INF or INF, clamp will behave as expected.
268/// However for values of NaN, the results are undefined.
269
270_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
271_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
272half clamp(half, half, half);
273_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
274_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
276_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
277_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
279_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
280_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
282
283#ifdef __HLSL_ENABLE_16_BIT
284_HLSL_AVAILABILITY(shadermodel, 6.2)
285_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
286int16_t clamp(int16_t, int16_t, int16_t);
287_HLSL_AVAILABILITY(shadermodel, 6.2)
288_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
289int16_t2 clamp(int16_t2, int16_t2, int16_t2);
290_HLSL_AVAILABILITY(shadermodel, 6.2)
291_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
292int16_t3 clamp(int16_t3, int16_t3, int16_t3);
293_HLSL_AVAILABILITY(shadermodel, 6.2)
294_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
295int16_t4 clamp(int16_t4, int16_t4, int16_t4);
296
297_HLSL_AVAILABILITY(shadermodel, 6.2)
298_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
299uint16_t clamp(uint16_t, uint16_t, uint16_t);
300_HLSL_AVAILABILITY(shadermodel, 6.2)
301_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
302uint16_t2 clamp(uint16_t2, uint16_t2, uint16_t2);
303_HLSL_AVAILABILITY(shadermodel, 6.2)
304_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
305uint16_t3 clamp(uint16_t3, uint16_t3, uint16_t3);
306_HLSL_AVAILABILITY(shadermodel, 6.2)
307_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
308uint16_t4 clamp(uint16_t4, uint16_t4, uint16_t4);
309#endif
310
311_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
312int clamp(int, int, int);
313_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
315_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
317_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
319
320_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
322_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
324_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
326_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
328
329_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
331_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
333_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
335_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
337
338_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
340_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
342_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
344_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
346
347_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
348float clamp(float, float, float);
349_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
351_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
353_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
355
356_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
357double clamp(double, double, double);
358_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
360_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
362_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
364
365//===----------------------------------------------------------------------===//
366// cos builtins
367//===----------------------------------------------------------------------===//
368
369/// \fn T cos(T Val)
370/// \brief Returns the cosine of the input value, \a Val.
371/// \param Val The input value.
372
373_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
374_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
375half cos(half);
376_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
377_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
379_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
380_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
382_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
383_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
385
386_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
387float cos(float);
388_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
390_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
392_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
394
395//===----------------------------------------------------------------------===//
396// dot product builtins
397//===----------------------------------------------------------------------===//
398
399/// \fn K dot(T X, T Y)
400/// \brief Return the dot product (a scalar value) of \a X and \a Y.
401/// \param X The X input value.
402/// \param Y The Y input value.
403
404_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
405_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
406half dot(half, half);
407_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
408_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
410_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
411_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
413_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
414_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
416
417#ifdef __HLSL_ENABLE_16_BIT
418_HLSL_AVAILABILITY(shadermodel, 6.2)
419_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
420int16_t dot(int16_t, int16_t);
421_HLSL_AVAILABILITY(shadermodel, 6.2)
422_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
423int16_t dot(int16_t2, int16_t2);
424_HLSL_AVAILABILITY(shadermodel, 6.2)
425_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
426int16_t dot(int16_t3, int16_t3);
427_HLSL_AVAILABILITY(shadermodel, 6.2)
428_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
429int16_t dot(int16_t4, int16_t4);
430
431_HLSL_AVAILABILITY(shadermodel, 6.2)
432_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
433uint16_t dot(uint16_t, uint16_t);
434_HLSL_AVAILABILITY(shadermodel, 6.2)
435_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
436uint16_t dot(uint16_t2, uint16_t2);
437_HLSL_AVAILABILITY(shadermodel, 6.2)
438_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
439uint16_t dot(uint16_t3, uint16_t3);
440_HLSL_AVAILABILITY(shadermodel, 6.2)
441_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
442uint16_t dot(uint16_t4, uint16_t4);
443#endif
444
445_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
446float dot(float, float);
447_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
449_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
451_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
453
454_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
455double dot(double, double);
456
457_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
458int dot(int, int);
459_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
461_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
463_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
465
466_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
468_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
470_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
472_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
474
475_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
477_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
479_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
481_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
483
484_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
486_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
488_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
490_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
492
493//===----------------------------------------------------------------------===//
494// exp builtins
495//===----------------------------------------------------------------------===//
496
497/// \fn T exp(T x)
498/// \brief Returns the base-e exponential, or \a e**x, of the specified value.
499/// \param x The specified input value.
500///
501/// The return value is the base-e exponential of the \a x parameter.
502
503_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
504_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
505half exp(half);
506_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
507_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
509_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
510_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
512_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
513_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
515
516_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
517float exp(float);
518_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
520_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
522_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
524
525//===----------------------------------------------------------------------===//
526// exp2 builtins
527//===----------------------------------------------------------------------===//
528
529/// \fn T exp2(T x)
530/// \brief Returns the base 2 exponential, or \a 2**x, of the specified value.
531/// \param x The specified input value.
532///
533/// The base 2 exponential of the \a x parameter.
534
535_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
536_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
537half exp2(half);
538_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
539_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
541_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
542_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
544_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
545_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
547
548_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
549float exp2(float);
550_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
552_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
554_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
556
557//===----------------------------------------------------------------------===//
558// floor builtins
559//===----------------------------------------------------------------------===//
560
561/// \fn T floor(T Val)
562/// \brief Returns the largest integer that is less than or equal to the input
563/// value, \a Val.
564/// \param Val The input value.
565
566_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
567_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
568half floor(half);
569_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
570_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
572_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
573_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
575_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
576_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
578
579_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
580float floor(float);
581_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
583_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
585_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
587
588_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
589double floor(double);
590_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
592_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
594_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
596
597//===----------------------------------------------------------------------===//
598// frac builtins
599//===----------------------------------------------------------------------===//
600
601/// \fn T frac(T x)
602/// \brief Returns the fractional (or decimal) part of x. \a x parameter.
603/// \param x The specified input value.
604///
605/// If \a the return value is greater than or equal to 0 and less than 1.
606
607_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
608_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
609half frac(half);
610_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
611_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
613_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
614_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
616_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
617_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
619
620_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
621float frac(float);
622_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
624_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
626_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
628
629//===----------------------------------------------------------------------===//
630// isinf builtins
631//===----------------------------------------------------------------------===//
632
633/// \fn T isinf(T x)
634/// \brief Determines if the specified value \a x is infinite.
635/// \param x The specified input value.
636///
637/// Returns a value of the same size as the input, with a value set
638/// to True if the x parameter is +INF or -INF. Otherwise, False.
639
640_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
641_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
642bool isinf(half);
643_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
644_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
646_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
647_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
649_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
650_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
652
653_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
654bool isinf(float);
655_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
657_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
659_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
661
662//===----------------------------------------------------------------------===//
663// lerp builtins
664//===----------------------------------------------------------------------===//
665
666/// \fn T lerp(T x, T y, T s)
667/// \brief Returns the linear interpolation of x to y by s.
668/// \param x [in] The first-floating point value.
669/// \param y [in] The second-floating point value.
670/// \param s [in] A value that linearly interpolates between the x parameter and
671/// the y parameter.
672///
673/// Linear interpolation is based on the following formula: x*(1-s) + y*s which
674/// can equivalently be written as x + s(y-x).
675
676_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
677_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
678half lerp(half, half, half);
679_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
680_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
682_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
683_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
685_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
686_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
688
689_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
690float lerp(float, float, float);
691_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
693_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
695_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
697
698//===----------------------------------------------------------------------===//
699// log builtins
700//===----------------------------------------------------------------------===//
701
702/// \fn T log(T Val)
703/// \brief The base-e logarithm of the input value, \a Val parameter.
704/// \param Val The input value.
705///
706/// If \a Val is negative, this result is undefined. If \a Val is 0, this
707/// function returns negative infinity.
708
709_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
710_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
711half log(half);
712_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
713_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
715_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
716_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
718_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
719_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
721
722_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
723float log(float);
724_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
726_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
728_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
730
731//===----------------------------------------------------------------------===//
732// log10 builtins
733//===----------------------------------------------------------------------===//
734
735/// \fn T log10(T Val)
736/// \brief The base-10 logarithm of the input value, \a Val parameter.
737/// \param Val The input value.
738///
739/// If \a Val is negative, this result is undefined. If \a Val is 0, this
740/// function returns negative infinity.
741
742_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
743_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
744half log10(half);
745_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
746_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
748_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
749_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
751_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
752_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
754
755_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
756float log10(float);
757_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
759_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
761_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
763
764//===----------------------------------------------------------------------===//
765// log2 builtins
766//===----------------------------------------------------------------------===//
767
768/// \fn T log2(T Val)
769/// \brief The base-2 logarithm of the input value, \a Val parameter.
770/// \param Val The input value.
771///
772/// If \a Val is negative, this result is undefined. If \a Val is 0, this
773/// function returns negative infinity.
774
775_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
776_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
777half log2(half);
778_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
779_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
781_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
782_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
784_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
785_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
787
788_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
789float log2(float);
790_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
792_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
794_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
796
797//===----------------------------------------------------------------------===//
798// mad builtins
799//===----------------------------------------------------------------------===//
800
801/// \fn T mad(T M, T A, T B)
802/// \brief The result of \a M * \a A + \a B.
803/// \param M The multiplication value.
804/// \param A The first addition value.
805/// \param B The second addition value.
806
807_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
808_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
809half mad(half, half, half);
810_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
811_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
813_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
814_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
816_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
817_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
819
820#ifdef __HLSL_ENABLE_16_BIT
821_HLSL_AVAILABILITY(shadermodel, 6.2)
822_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
823int16_t mad(int16_t, int16_t, int16_t);
824_HLSL_AVAILABILITY(shadermodel, 6.2)
825_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
826int16_t2 mad(int16_t2, int16_t2, int16_t2);
827_HLSL_AVAILABILITY(shadermodel, 6.2)
828_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
829int16_t3 mad(int16_t3, int16_t3, int16_t3);
830_HLSL_AVAILABILITY(shadermodel, 6.2)
831_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
832int16_t4 mad(int16_t4, int16_t4, int16_t4);
833
834_HLSL_AVAILABILITY(shadermodel, 6.2)
835_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
836uint16_t mad(uint16_t, uint16_t, uint16_t);
837_HLSL_AVAILABILITY(shadermodel, 6.2)
838_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
839uint16_t2 mad(uint16_t2, uint16_t2, uint16_t2);
840_HLSL_AVAILABILITY(shadermodel, 6.2)
841_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
842uint16_t3 mad(uint16_t3, uint16_t3, uint16_t3);
843_HLSL_AVAILABILITY(shadermodel, 6.2)
844_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
845uint16_t4 mad(uint16_t4, uint16_t4, uint16_t4);
846#endif
847
848_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
849int mad(int, int, int);
850_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
852_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
854_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
856
857_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
859_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
861_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
863_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
865
866_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
868_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
870_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
872_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
874
875_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
877_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
879_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
881_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
883
884_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
885float mad(float, float, float);
886_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
888_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
890_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
892
893_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
894double mad(double, double, double);
895_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
897_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
899_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
901
902//===----------------------------------------------------------------------===//
903// max builtins
904//===----------------------------------------------------------------------===//
905
906/// \fn T max(T X, T Y)
907/// \brief Return the greater of \a X and \a Y.
908/// \param X The X input value.
909/// \param Y The Y input value.
910
911_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
912_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
913half max(half, half);
914_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
915_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
917_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
918_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
920_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
921_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
923
924#ifdef __HLSL_ENABLE_16_BIT
925_HLSL_AVAILABILITY(shadermodel, 6.2)
926_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
927int16_t max(int16_t, int16_t);
928_HLSL_AVAILABILITY(shadermodel, 6.2)
929_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
930int16_t2 max(int16_t2, int16_t2);
931_HLSL_AVAILABILITY(shadermodel, 6.2)
932_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
933int16_t3 max(int16_t3, int16_t3);
934_HLSL_AVAILABILITY(shadermodel, 6.2)
935_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
936int16_t4 max(int16_t4, int16_t4);
937
938_HLSL_AVAILABILITY(shadermodel, 6.2)
939_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
940uint16_t max(uint16_t, uint16_t);
941_HLSL_AVAILABILITY(shadermodel, 6.2)
942_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
943uint16_t2 max(uint16_t2, uint16_t2);
944_HLSL_AVAILABILITY(shadermodel, 6.2)
945_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
946uint16_t3 max(uint16_t3, uint16_t3);
947_HLSL_AVAILABILITY(shadermodel, 6.2)
948_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
949uint16_t4 max(uint16_t4, uint16_t4);
950#endif
951
952_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
953int max(int, int);
954_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
956_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
958_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
960
961_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
963_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
965_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
967_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
969
970_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
972_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
974_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
976_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
978
979_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
981_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
983_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
985_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
987
988_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
989float max(float, float);
990_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
992_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
994_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
996
997_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
998double max(double, double);
999_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1001_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1003_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1005
1006//===----------------------------------------------------------------------===//
1007// min builtins
1008//===----------------------------------------------------------------------===//
1009
1010/// \fn T min(T X, T Y)
1011/// \brief Return the lesser of \a X and \a Y.
1012/// \param X The X input value.
1013/// \param Y The Y input value.
1014
1015_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1016_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1017half min(half, half);
1018_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1019_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1021_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1022_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1024_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1025_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1027
1028#ifdef __HLSL_ENABLE_16_BIT
1029_HLSL_AVAILABILITY(shadermodel, 6.2)
1030_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1031int16_t min(int16_t, int16_t);
1032_HLSL_AVAILABILITY(shadermodel, 6.2)
1033_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1034int16_t2 min(int16_t2, int16_t2);
1035_HLSL_AVAILABILITY(shadermodel, 6.2)
1036_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1037int16_t3 min(int16_t3, int16_t3);
1038_HLSL_AVAILABILITY(shadermodel, 6.2)
1039_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1040int16_t4 min(int16_t4, int16_t4);
1041
1042_HLSL_AVAILABILITY(shadermodel, 6.2)
1043_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1044uint16_t min(uint16_t, uint16_t);
1045_HLSL_AVAILABILITY(shadermodel, 6.2)
1046_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1047uint16_t2 min(uint16_t2, uint16_t2);
1048_HLSL_AVAILABILITY(shadermodel, 6.2)
1049_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1050uint16_t3 min(uint16_t3, uint16_t3);
1051_HLSL_AVAILABILITY(shadermodel, 6.2)
1052_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1053uint16_t4 min(uint16_t4, uint16_t4);
1054#endif
1055
1056_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1057int min(int, int);
1058_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1060_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1062_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1064
1065_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1067_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1069_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1071_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1073
1074_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1075float min(float, float);
1076_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1078_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1080_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1082
1083_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1085_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1087_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1089_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1091
1092_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1094_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1096_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1098_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1100
1101_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1102double min(double, double);
1103_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1105_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1107_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1109
1110//===----------------------------------------------------------------------===//
1111// pow builtins
1112//===----------------------------------------------------------------------===//
1113
1114/// \fn T pow(T Val, T Pow)
1115/// \brief Return the value \a Val, raised to the power \a Pow.
1116/// \param Val The input value.
1117/// \param Pow The specified power.
1118
1119_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1120_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1121half pow(half, half);
1122_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1123_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1125_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1126_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1128_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1129_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1131
1132_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1133float pow(float, float);
1134_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1136_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1138_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1140
1141//===----------------------------------------------------------------------===//
1142// reversebits builtins
1143//===----------------------------------------------------------------------===//
1144
1145/// \fn T reversebits(T Val)
1146/// \brief Return the value \a Val with the bit order reversed.
1147/// \param Val The input value.
1148
1149#ifdef __HLSL_ENABLE_16_BIT
1150_HLSL_AVAILABILITY(shadermodel, 6.2)
1151_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1152int16_t reversebits(int16_t);
1153_HLSL_AVAILABILITY(shadermodel, 6.2)
1154_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1155int16_t2 reversebits(int16_t2);
1156_HLSL_AVAILABILITY(shadermodel, 6.2)
1157_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1158int16_t3 reversebits(int16_t3);
1159_HLSL_AVAILABILITY(shadermodel, 6.2)
1160_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1161int16_t4 reversebits(int16_t4);
1162
1163_HLSL_AVAILABILITY(shadermodel, 6.2)
1164_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1165uint16_t reversebits(uint16_t);
1166_HLSL_AVAILABILITY(shadermodel, 6.2)
1167_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1168uint16_t2 reversebits(uint16_t2);
1169_HLSL_AVAILABILITY(shadermodel, 6.2)
1170_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1171uint16_t3 reversebits(uint16_t3);
1172_HLSL_AVAILABILITY(shadermodel, 6.2)
1173_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1174uint16_t4 reversebits(uint16_t4);
1175#endif
1176
1177_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1179_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1181_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1183_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1185
1186_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1188_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1190_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1192_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1194
1195_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1197_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1199_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1201_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1203
1204_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1206_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1208_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1210_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1212
1213//===----------------------------------------------------------------------===//
1214// rcp builtins
1215//===----------------------------------------------------------------------===//
1216
1217/// \fn T rcp(T x)
1218/// \brief Calculates a fast, approximate, per-component reciprocal ie 1 / \a x.
1219/// \param x The specified input value.
1220///
1221/// The return value is the reciprocal of the \a x parameter.
1222
1223_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1224_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1225half rcp(half);
1226_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1227_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1229_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1230_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1232_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1233_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1235
1236_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1237float rcp(float);
1238_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1240_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1242_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1244
1245_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1246double rcp(double);
1247_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1249_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1251_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1253
1254//===----------------------------------------------------------------------===//
1255// rsqrt builtins
1256//===----------------------------------------------------------------------===//
1257
1258/// \fn T rsqrt(T x)
1259/// \brief Returns the reciprocal of the square root of the specified value.
1260/// ie 1 / sqrt( \a x).
1261/// \param x The specified input value.
1262///
1263/// This function uses the following formula: 1 / sqrt(x).
1264
1265_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1266_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1267half rsqrt(half);
1268_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1269_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1271_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1272_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1274_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1275_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1277
1278_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1279float rsqrt(float);
1280_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1282_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1284_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1286
1287//===----------------------------------------------------------------------===//
1288// round builtins
1289//===----------------------------------------------------------------------===//
1290
1291/// \fn T round(T x)
1292/// \brief Rounds the specified value \a x to the nearest integer.
1293/// \param x The specified input value.
1294///
1295/// The return value is the \a x parameter, rounded to the nearest integer
1296/// within a floating-point type. Halfway cases are
1297/// rounded to the nearest even value.
1298
1299_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1300_HLSL_BUILTIN_ALIAS(__builtin_elementwise_round)
1301half round(half);
1302_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1303_HLSL_BUILTIN_ALIAS(__builtin_elementwise_round)
1305_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1306_HLSL_BUILTIN_ALIAS(__builtin_elementwise_round)
1308_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1309_HLSL_BUILTIN_ALIAS(__builtin_elementwise_round)
1311
1312_HLSL_BUILTIN_ALIAS(__builtin_elementwise_round)
1313float round(float);
1314_HLSL_BUILTIN_ALIAS(__builtin_elementwise_round)
1316_HLSL_BUILTIN_ALIAS(__builtin_elementwise_round)
1318_HLSL_BUILTIN_ALIAS(__builtin_elementwise_round)
1320
1321//===----------------------------------------------------------------------===//
1322// sin builtins
1323//===----------------------------------------------------------------------===//
1324
1325/// \fn T sin(T Val)
1326/// \brief Returns the sine of the input value, \a Val.
1327/// \param Val The input value.
1328
1329_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1330_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1331half sin(half);
1332_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1333_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1335_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1336_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1338_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1339_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1341
1342_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1343float sin(float);
1344_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1346_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1348_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1350
1351//===----------------------------------------------------------------------===//
1352// sqrt builtins
1353//===----------------------------------------------------------------------===//
1354
1355/// \fn T sqrt(T Val)
1356/// \brief Returns the square root of the input value, \a Val.
1357/// \param Val The input value.
1358
1359_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1360_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1361half sqrt(half);
1362_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1363_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1365_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1366_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1368_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1369_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1371
1372_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1373float sqrt(float);
1374_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1376_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1378_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1380
1381//===----------------------------------------------------------------------===//
1382// trunc builtins
1383//===----------------------------------------------------------------------===//
1384
1385/// \fn T trunc(T Val)
1386/// \brief Returns the truncated integer value of the input value, \a Val.
1387/// \param Val The input value.
1388
1389_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1390_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1391half trunc(half);
1392_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1393_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1395_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1396_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1398_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1399_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1401
1402_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1403float trunc(float);
1404_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1406_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1408_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1410
1411//===----------------------------------------------------------------------===//
1412// Wave* builtins
1413//===----------------------------------------------------------------------===//
1414
1415/// \brief Counts the number of boolean variables which evaluate to true across
1416/// all active lanes in the current wave.
1417///
1418/// \param Val The input boolean value.
1419/// \return The number of lanes for which the boolean variable evaluates to
1420/// true, across all active lanes in the current wave.
1421_HLSL_AVAILABILITY(shadermodel, 6.0)
1422_HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_count_bits)
1424
1425} // namespace hlsl
1426#endif //_HLSL_HLSL_INTRINSICS_H_
__device__ int
__device__ float
#define _HLSL_BUILTIN_ALIAS(builtin)
#define _HLSL_16BIT_AVAILABILITY(environment, version)
#define _HLSL_AVAILABILITY(environment, version)
unsigned int uint
vector< half, 4 > half4
half mad(half, half, half)
bool any(half)
vector< half, 2 > half2
vector< uint, 2 > uint2
vector< int, 3 > int3
vector< uint64_t, 2 > uint64_t2
half rsqrt(half)
half max(half, half)
half abs(half)
vector< float, 4 > float4
half dot(half, half)
vector< int64_t, 4 > int64_t4
unsigned long uint64_t
vector< uint64_t, 3 > uint64_t3
half lerp(half, half, half)
vector< bool, 4 > bool4
long int64_t
vector< int64_t, 3 > int64_t3
vector< int, 4 > int4
vector< bool, 3 > bool3
half clamp(half, half, half)
vector< uint64_t, 4 > uint64_t4
uint WaveActiveCountBits(bool Val)
Counts the number of boolean variables which evaluate to true across all active lanes in the current ...
vector< double, 3 > double3
vector< float, 2 > float2
vector< float, 3 > float3
vector< int64_t, 2 > int64_t2
vector< uint, 3 > uint3
half rcp(half)
vector< double, 4 > double4
vector< double, 2 > double2
vector< bool, 2 > bool2
vector< int, 2 > int2
half min(half, half)
vector< uint, 4 > uint4
vector< half, 3 > half3
int reversebits(int)
half frac(half)
bool isinf(half)
#define sqrt(__x)
Definition: tgmath.h:520
#define exp(__x)
Definition: tgmath.h:431
#define exp2(__x)
Definition: tgmath.h:670
#define sin(__x)
Definition: tgmath.h:286
#define log2(__x)
Definition: tgmath.h:970
#define trunc(__x)
Definition: tgmath.h:1216
#define round(__x)
Definition: tgmath.h:1148
#define cos(__x)
Definition: tgmath.h:257
#define log10(__x)
Definition: tgmath.h:936
#define pow(__x, __y)
Definition: tgmath.h:490
#define floor(__x)
Definition: tgmath.h:722
#define ceil(__x)
Definition: tgmath.h:601
#define log(__x)
Definition: tgmath.h:460