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__attribute__((availability(shadermodel, introduced = 6.0))) 15__attribute__((clang_builtin_alias(__builtin_hlsl_wave_active_count_bits))) uint 16WaveActiveCountBits(bool bBit); 17 18// abs builtins 19#ifdef __HLSL_ENABLE_16_BIT 20__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 21int16_t abs(int16_t); 22__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 23int16_t2 abs(int16_t2); 24__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 25int16_t3 abs(int16_t3); 26__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 27int16_t4 abs(int16_t4); 28__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) half abs(half); 29__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 30half2 abs(half2); 31__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 32half3 abs(half3); 33__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 34half4 abs(half4); 35#endif 36 37__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) int abs(int); 38__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) int2 abs(int2); 39__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) int3 abs(int3); 40__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) int4 abs(int4); 41__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) float 42abs(float); 43__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 44float2 abs(float2); 45__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 46float3 abs(float3); 47__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 48float4 abs(float4); 49__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 50int64_t abs(int64_t); 51__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 52int64_t2 abs(int64_t2); 53__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 54int64_t3 abs(int64_t3); 55__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 56int64_t4 abs(int64_t4); 57__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) double 58abs(double); 59__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 60double2 abs(double2); 61__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 62double3 abs(double3); 63__attribute__((clang_builtin_alias(__builtin_elementwise_abs))) 64double4 abs(double4); 65 66// sqrt builtins 67__attribute__((clang_builtin_alias(__builtin_sqrt))) double sqrt(double In); 68__attribute__((clang_builtin_alias(__builtin_sqrtf))) float sqrt(float In); 69 70#ifdef __HLSL_ENABLE_16_BIT 71__attribute__((clang_builtin_alias(__builtin_sqrtf16))) half sqrt(half In); 72#endif 73 74// ceil builtins 75#ifdef __HLSL_ENABLE_16_BIT 76__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 77half ceil(half); 78__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 79half2 ceil(half2); 80__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 81half3 ceil(half3); 82__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 83half4 ceil(half4); 84#endif 85 86__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) float 87ceil(float); 88__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 89float2 ceil(float2); 90__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 91float3 ceil(float3); 92__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 93float4 ceil(float4); 94 95__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) double 96ceil(double); 97__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 98double2 ceil(double2); 99__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 100double3 ceil(double3); 101__attribute__((clang_builtin_alias(__builtin_elementwise_ceil))) 102double4 ceil(double4); 103 104// floor builtins 105#ifdef __HLSL_ENABLE_16_BIT 106__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 107half floor(half); 108__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 109half2 floor(half2); 110__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 111half3 floor(half3); 112__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 113half4 floor(half4); 114#endif 115 116__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) float 117floor(float); 118__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 119float2 floor(float2); 120__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 121float3 floor(float3); 122__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 123float4 floor(float4); 124 125__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) double 126floor(double); 127__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 128double2 floor(double2); 129__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 130double3 floor(double3); 131__attribute__((clang_builtin_alias(__builtin_elementwise_floor))) 132double4 floor(double4); 133 134// cos builtins 135#ifdef __HLSL_ENABLE_16_BIT 136__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) half cos(half); 137__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 138half2 cos(half2); 139__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 140half3 cos(half3); 141__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 142half4 cos(half4); 143#endif 144 145__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) float 146cos(float); 147__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 148float2 cos(float2); 149__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 150float3 cos(float3); 151__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 152float4 cos(float4); 153 154__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) double 155cos(double); 156__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 157double2 cos(double2); 158__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 159double3 cos(double3); 160__attribute__((clang_builtin_alias(__builtin_elementwise_cos))) 161double4 cos(double4); 162 163// sin builtins 164#ifdef __HLSL_ENABLE_16_BIT 165__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) half sin(half); 166__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 167half2 sin(half2); 168__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 169half3 sin(half3); 170__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 171half4 sin(half4); 172#endif 173 174__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) float 175sin(float); 176__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 177float2 sin(float2); 178__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 179float3 sin(float3); 180__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 181float4 sin(float4); 182 183__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) double 184sin(double); 185__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 186double2 sin(double2); 187__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 188double3 sin(double3); 189__attribute__((clang_builtin_alias(__builtin_elementwise_sin))) 190double4 sin(double4); 191 192// trunc builtins 193#ifdef __HLSL_ENABLE_16_BIT 194__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 195half trunc(half); 196__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 197half2 trunc(half2); 198__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 199half3 trunc(half3); 200__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 201half4 trunc(half4); 202#endif 203 204__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) float 205trunc(float); 206__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 207float2 trunc(float2); 208__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 209float3 trunc(float3); 210__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 211float4 trunc(float4); 212 213__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) double 214trunc(double); 215__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 216double2 trunc(double2); 217__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 218double3 trunc(double3); 219__attribute__((clang_builtin_alias(__builtin_elementwise_trunc))) 220double4 trunc(double4); 221 222} // namespace hlsl 223#endif //_HLSL_HLSL_INTRINSICS_H_ 224