9#ifndef _HLSL_HLSL_ALIAS_INTRINSICS_H_
10#define _HLSL_HLSL_ALIAS_INTRINSICS_H_
19#define _HLSL_BUILTIN_ALIAS(builtin) \
20 __attribute__((clang_builtin_alias(builtin)))
21#define _HLSL_AVAILABILITY(platform, version) \
22 __attribute__((availability(platform, introduced = version)))
23#define _HLSL_AVAILABILITY_STAGE(platform, version, stage) \
25 availability(platform, introduced = version, environment = stage)))
27#ifdef __HLSL_ENABLE_16_BIT
28#define _HLSL_16BIT_AVAILABILITY(platform, version) \
29 __attribute__((availability(platform, introduced = version)))
30#define _HLSL_16BIT_AVAILABILITY_STAGE(platform, version, stage) \
32 availability(platform, introduced = version, environment = stage)))
34#define _HLSL_16BIT_AVAILABILITY(environment, version)
35#define _HLSL_16BIT_AVAILABILITY_STAGE(environment, version, stage)
46#ifdef __HLSL_ENABLE_16_BIT
52int16_t2
abs(int16_t2);
55int16_t3
abs(int16_t3);
58int16_t4
abs(int16_t4);
61constexpr uint16_t
abs(uint16_t
V) {
return V; }
63constexpr uint16_t2
abs(uint16_t2
V) {
return V; }
65constexpr uint16_t3
abs(uint16_t3
V) {
return V; }
67constexpr uint16_t4
abs(uint16_t4
V) {
return V; }
188#ifdef __HLSL_ENABLE_16_BIT
322#ifdef __HLSL_ENABLE_16_BIT
595#ifdef __HLSL_ENABLE_16_BIT
598int16_t
clamp(int16_t, int16_t, int16_t);
601int16_t2
clamp(int16_t2, int16_t2, int16_t2);
604int16_t3
clamp(int16_t3, int16_t3, int16_t3);
607int16_t4
clamp(int16_t4, int16_t4, int16_t4);
611uint16_t
clamp(uint16_t, uint16_t, uint16_t);
614uint16_t2
clamp(uint16_t2, uint16_t2, uint16_t2);
617uint16_t3
clamp(uint16_t3, uint16_t3, uint16_t3);
620uint16_t4
clamp(uint16_t4, uint16_t4, uint16_t4);
669double clamp(
double,
double,
double);
762#ifdef __HLSL_ENABLE_16_BIT
765 return __builtin_elementwise_popcount(x);
769 return __builtin_elementwise_popcount(x);
773 return __builtin_elementwise_popcount(x);
777 return __builtin_elementwise_popcount(x);
781 return __builtin_elementwise_popcount(x);
785 return __builtin_elementwise_popcount(x);
789 return __builtin_elementwise_popcount(x);
793 return __builtin_elementwise_popcount(x);
797const inline uint countbits(
int x) {
return __builtin_elementwise_popcount(x); }
799 return __builtin_elementwise_popcount(x);
802 return __builtin_elementwise_popcount(x);
805 return __builtin_elementwise_popcount(x);
809 return __builtin_elementwise_popcount(x);
812 return __builtin_elementwise_popcount(x);
815 return __builtin_elementwise_popcount(x);
818 return __builtin_elementwise_popcount(x);
822 return __builtin_elementwise_popcount(x);
825 return __builtin_elementwise_popcount(x);
828 return __builtin_elementwise_popcount(x);
831 return __builtin_elementwise_popcount(x);
835 return __builtin_elementwise_popcount(x);
838 return __builtin_elementwise_popcount(x);
841 return __builtin_elementwise_popcount(x);
844 return __builtin_elementwise_popcount(x);
899#ifdef __HLSL_ENABLE_16_BIT
902int16_t
dot(int16_t, int16_t);
905int16_t
dot(int16_t2, int16_t2);
908int16_t
dot(int16_t3, int16_t3);
911int16_t
dot(int16_t4, int16_t4);
915uint16_t
dot(uint16_t, uint16_t);
918uint16_t
dot(uint16_t2, uint16_t2);
921uint16_t
dot(uint16_t3, uint16_t3);
924uint16_t
dot(uint16_t4, uint16_t4);
937double dot(
double,
double);
1064#ifdef __HLSL_ENABLE_16_BIT
1136#ifdef __HLSL_ENABLE_16_BIT
1453#ifdef __HLSL_ENABLE_16_BIT
1456int16_t
mad(int16_t, int16_t, int16_t);
1459int16_t2
mad(int16_t2, int16_t2, int16_t2);
1462int16_t3
mad(int16_t3, int16_t3, int16_t3);
1465int16_t4
mad(int16_t4, int16_t4, int16_t4);
1469uint16_t
mad(uint16_t, uint16_t, uint16_t);
1472uint16_t2
mad(uint16_t2, uint16_t2, uint16_t2);
1475uint16_t3
mad(uint16_t3, uint16_t3, uint16_t3);
1478uint16_t4
mad(uint16_t4, uint16_t4, uint16_t4);
1518float mad(
float,
float,
float);
1527double mad(
double,
double,
double);
1557#ifdef __HLSL_ENABLE_16_BIT
1560int16_t
max(int16_t, int16_t);
1563int16_t2
max(int16_t2, int16_t2);
1566int16_t3
max(int16_t3, int16_t3);
1569int16_t4
max(int16_t4, int16_t4);
1573uint16_t
max(uint16_t, uint16_t);
1576uint16_t2
max(uint16_t2, uint16_t2);
1579uint16_t3
max(uint16_t3, uint16_t3);
1582uint16_t4
max(uint16_t4, uint16_t4);
1661#ifdef __HLSL_ENABLE_16_BIT
1664int16_t
min(int16_t, int16_t);
1667int16_t2
min(int16_t2, int16_t2);
1670int16_t3
min(int16_t3, int16_t3);
1673int16_t4
min(int16_t4, int16_t4);
1677uint16_t
min(uint16_t, uint16_t);
1680uint16_t2
min(uint16_t2, uint16_t2);
1683uint16_t3
min(uint16_t3, uint16_t3);
1686uint16_t4
min(uint16_t4, uint16_t4);
1836#ifdef __HLSL_ENABLE_16_BIT
2048template <typename T>
2060template <typename T,
int Sz>
2062vector<T, Sz>
select(vector<
bool, Sz>, vector<T, Sz>, vector<T, Sz>);
2072template <typename T,
int Sz>
2074vector<T, Sz>
select(vector<
bool, Sz>, T, vector<T, Sz>);
2083template <typename T,
int Sz>
2085vector<T, Sz>
select(vector<
bool, Sz>, vector<T, Sz>, T);
2094template <typename T,
int Sz>
2096__detail::enable_if_t<__detail::is_arithmetic<T>::
Value, vector<T, Sz>>
select(
2097 vector<
bool, Sz>, T, T);
2332__attribute__((convergent))
bool WaveActiveAnyTrue(
bool Val);
2373#ifdef __HLSL_ENABLE_16_BIT
2485#ifdef __HLSL_ENABLE_16_BIT
2491__attribute__((convergent)) int16_t2 WaveActiveMax(int16_t2);
2494__attribute__((convergent)) int16_t3 WaveActiveMax(int16_t3);
2497__attribute__((convergent)) int16_t4 WaveActiveMax(int16_t4);
2501__attribute__((convergent)) uint16_t WaveActiveMax(uint16_t);
2504__attribute__((convergent)) uint16_t2 WaveActiveMax(uint16_t2);
2507__attribute__((convergent)) uint16_t3 WaveActiveMax(uint16_t3);
2510__attribute__((convergent)) uint16_t4 WaveActiveMax(uint16_t4);
2584#ifdef __HLSL_ENABLE_16_BIT
2590__attribute__((convergent)) int16_t2 WaveActiveSum(int16_t2);
2593__attribute__((convergent)) int16_t3 WaveActiveSum(int16_t3);
2596__attribute__((convergent)) int16_t4 WaveActiveSum(int16_t4);
2600__attribute__((convergent)) uint16_t WaveActiveSum(uint16_t);
2603__attribute__((convergent)) uint16_t2 WaveActiveSum(uint16_t2);
2606__attribute__((convergent)) uint16_t3 WaveActiveSum(uint16_t3);
2609__attribute__((convergent)) uint16_t4 WaveActiveSum(uint16_t4);
2674#ifdef __HLSL_ENABLE_16_BIT
_Float16 __2f16 __attribute__((ext_vector_type(2)))
Zeroes the upper 128 bits (bits 255:128) of all YMM registers.
#define _HLSL_BUILTIN_ALIAS(builtin)
#define _HLSL_AVAILABILITY(platform, version)
#define _HLSL_16BIT_AVAILABILITY(environment, version)
double asdouble(uint, uint)
Reinterprets a cast value (two 32-bit values) into a double.
half mad(half, half, half)
T select(bool, T, T)
ternary operator.
const uint countbits(int x)
vector< uint64_t, 2 > uint64_t2
half3 cross(half3, half3)
vector< float, 4 > float4
vector< int64_t, 4 > int64_t4
int dot4add_i8packed(uint, uint, int)
vector< uint64_t, 3 > uint64_t3
half lerp(half, half, half)
void GroupMemoryBarrierWithGroupSync(void)
Blocks execution of all threads in a group until all group shared accesses have been completed and al...
vector< int64_t, 3 > int64_t3
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< uint32_t, 2 > uint32_t2
vector< double, 4 > double4
vector< double, 2 > double2
uint dot4add_u8packed(uint, uint, uint)
vector< uint32_t, 4 > uint32_t4
uint32_t2 AddUint64(uint32_t2, uint32_t2)
unsigned int uint
An unsigned 32-bit integer.