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// 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)
183_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
185_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
187
188_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
190_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
192_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
194_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
196
197_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
199_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
201_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
203_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
205
206_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
207bool all(double);
208_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
210_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
212_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_all)
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)
295_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
297_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
299
300_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
302_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
304_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
306_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
308
309_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
311_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
313_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
315_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
317
318_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
319bool any(double);
320_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
322_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
324_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_any)
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)
342_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
343_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
345_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
346_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
348
349_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
350float ceil(float);
351_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
353_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
355_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil)
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)
379_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
380_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
382_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
383_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
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)
418_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
420_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
422
423_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
425_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
427_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
429_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
431
432_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
434_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
436_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
438_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
440
441_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
443_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
445_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
447_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
449
450_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
451float clamp(float, float, float);
452_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
454_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
456_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
458
459_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
460double clamp(double, double, double);
461_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
463_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
465_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_clamp)
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)
482_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
483_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
485_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
486_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
488
489_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
490float cos(float);
491_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
493_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
495_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos)
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)
513_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
514_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
516_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
517_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
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)
552_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
554_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
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)
564_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
566_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
568
569_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
571_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
573_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
575_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
577
578_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
580_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
582_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
584_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
586
587_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
589_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
591_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
593_HLSL_BUILTIN_ALIAS(__builtin_hlsl_dot)
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)
612_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
613_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
615_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
616_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
618
619_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
620float exp(float);
621_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
623_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
625_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp)
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)
644_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
645_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
647_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
648_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
650
651_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
652float exp2(float);
653_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
655_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
657_HLSL_BUILTIN_ALIAS(__builtin_elementwise_exp2)
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)
675_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
676_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
678_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
679_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
681
682_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
683float floor(float);
684_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
686_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
688_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor)
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)
707_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
708_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
710_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
711_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
713
714_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
715float frac(float);
716_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
718_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
720_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_frac)
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)
740_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
741_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
743_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
744_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
746
747_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
748bool isinf(float);
749_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
751_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
753_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_isinf)
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)
776_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
777_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
779_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
780_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
782
783_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
784float lerp(float, float, float);
785_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
787_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
789_HLSL_BUILTIN_ALIAS(__builtin_hlsl_lerp)
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)
809_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
810_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
812_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
813_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
815
816_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
817float log(float);
818_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
820_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
822_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log)
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)
842_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
843_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
845_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
846_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
848
849_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
850float log10(float);
851_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
853_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
855_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10)
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)
875_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
876_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
878_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
879_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
881
882_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
883float log2(float);
884_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
886_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
888_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2)
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)
907_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
908_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
910_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
911_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
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)
946_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
948_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
950
951_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
953_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
955_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
957_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
959
960_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
962_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
964_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
966_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
968
969_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
971_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
973_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
975_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
977
978_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
979float mad(float, float, float);
980_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
982_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
984_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
986
987_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
988double mad(double, double, double);
989_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
991_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
993_HLSL_BUILTIN_ALIAS(__builtin_hlsl_mad)
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)
1011_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1012_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1014_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1015_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
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)
1050_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1052_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1054
1055_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1057_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1059_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1061_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1063
1064_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1066_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1068_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1070_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1072
1073_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1075_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1077_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1079_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1081
1082_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1083float max(float, float);
1084_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1086_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1088_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1090
1091_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1092double max(double, double);
1093_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1095_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
1097_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max)
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)
1115_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1116_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1118_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1119_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
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)
1154_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1156_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1158
1159_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1161_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1163_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1165_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1167
1168_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1169float min(float, float);
1170_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1172_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1174_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1176
1177_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1179_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1181_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1183_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1185
1186_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1188_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1190_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1192_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1194
1195_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1196double min(double, double);
1197_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1199_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
1201_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min)
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)
1219_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1220_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1222_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1223_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1225
1226_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1227float pow(float, float);
1228_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1230_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
1232_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow)
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)
1260_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1262_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1264_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1266
1267_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1269_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1271_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
1273_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse)
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)
1292_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1293_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1295_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1296_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1298
1299_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1300float rcp(float);
1301_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1303_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1305_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1307
1308_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1309double rcp(double);
1310_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1312_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
1314_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rcp)
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)
1334_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1335_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1337_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1338_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1340
1341_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1342float rsqrt(float);
1343_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1345_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
1347_HLSL_BUILTIN_ALIAS(__builtin_hlsl_elementwise_rsqrt)
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)
1368_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1369_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1371_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1372_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1374
1375_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1376float round(float);
1377_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1379_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
1381_HLSL_BUILTIN_ALIAS(__builtin_elementwise_roundeven)
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)
1398_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1399_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1401_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1402_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1404
1405_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1406float sin(float);
1407_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1409_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
1411_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin)
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)
1428_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1429_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1431_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1432_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1434
1435_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1436float sqrt(float);
1437_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1439_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1441_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sqrt)
1443
1444//===----------------------------------------------------------------------===//
1445// tan builtins
1446//===----------------------------------------------------------------------===//
1447#ifdef __HLSL_ENABLE_16_BIT
1448_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
1449half tan(half);
1450_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
1451half2 tan(half2);
1452_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
1453half3 tan(half3);
1454_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
1455half4 tan(half4);
1456#endif
1457
1458_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
1459float tan(float);
1460_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
1462_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
1464_HLSL_BUILTIN_ALIAS(__builtin_elementwise_tan)
1466
1467//===----------------------------------------------------------------------===//
1468// trunc builtins
1469//===----------------------------------------------------------------------===//
1470
1471/// \fn T trunc(T Val)
1472/// \brief Returns the truncated integer value of the input value, \a Val.
1473/// \param Val The input value.
1474
1475_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1476_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1477half trunc(half);
1478_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1479_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1481_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1482_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1484_HLSL_16BIT_AVAILABILITY(shadermodel, 6.2)
1485_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1487
1488_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1489float trunc(float);
1490_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1492_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1494_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc)
1496
1497//===----------------------------------------------------------------------===//
1498// Wave* builtins
1499//===----------------------------------------------------------------------===//
1500
1501/// \brief Counts the number of boolean variables which evaluate to true across
1502/// all active lanes in the current wave.
1503///
1504/// \param Val The input boolean value.
1505/// \return The number of lanes for which the boolean variable evaluates to
1506/// true, across all active lanes in the current wave.
1507_HLSL_AVAILABILITY(shadermodel, 6.0)
1508_HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_count_bits)
1509__attribute__((convergent)) uint WaveActiveCountBits(bool Val);
1510
1511/// \brief Returns the index of the current lane within the current wave.
1512_HLSL_AVAILABILITY(shadermodel, 6.0)
1513_HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_get_lane_index)
1514__attribute__((convergent)) uint WaveGetLaneIndex();
1515
1516} // namespace hlsl
1517#endif //_HLSL_HLSL_INTRINSICS_H_
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
__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
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
half frac(half)
bool all(half)
bool isinf(half)
uint reversebits(uint)
#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 tan(__x)
Definition: tgmath.h:315
#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