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//===----------------------------------------------------------------------===// 25// abs builtins 26//===----------------------------------------------------------------------===// 27#ifdef __HLSL_ENABLE_16_BIT 28_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 29int16_t abs(int16_t); 30_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 31int16_t2 abs(int16_t2); 32_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 33int16_t3 abs(int16_t3); 34_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 35int16_t4 abs(int16_t4); 36_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 37 38half abs(half); 39_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 40half2 abs(half2); 41_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 42half3 abs(half3); 43_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 44half4 abs(half4); 45#endif 46 47_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 48int abs(int); 49_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 50int2 abs(int2); 51_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 52int3 abs(int3); 53_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 54int4 abs(int4); 55 56_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 57float abs(float); 58_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 59float2 abs(float2); 60_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 61float3 abs(float3); 62_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 63float4 abs(float4); 64 65_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 66int64_t abs(int64_t); 67_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 68int64_t2 abs(int64_t2); 69_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 70int64_t3 abs(int64_t3); 71_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 72int64_t4 abs(int64_t4); 73 74_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 75double abs(double); 76_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 77double2 abs(double2); 78_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 79double3 abs(double3); 80_HLSL_BUILTIN_ALIAS(__builtin_elementwise_abs) 81double4 abs(double4); 82 83//===----------------------------------------------------------------------===// 84// ceil builtins 85//===----------------------------------------------------------------------===// 86#ifdef __HLSL_ENABLE_16_BIT 87_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 88half ceil(half); 89_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 90half2 ceil(half2); 91_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 92half3 ceil(half3); 93_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 94half4 ceil(half4); 95#endif 96 97_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 98float ceil(float); 99_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 100float2 ceil(float2); 101_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 102float3 ceil(float3); 103_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 104float4 ceil(float4); 105 106_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 107double ceil(double); 108_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 109double2 ceil(double2); 110_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 111double3 ceil(double3); 112_HLSL_BUILTIN_ALIAS(__builtin_elementwise_ceil) 113double4 ceil(double4); 114 115//===----------------------------------------------------------------------===// 116// cos builtins 117//===----------------------------------------------------------------------===// 118#ifdef __HLSL_ENABLE_16_BIT 119_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 120half cos(half); 121_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 122half2 cos(half2); 123_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 124half3 cos(half3); 125_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 126half4 cos(half4); 127#endif 128 129_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 130float cos(float); 131_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 132float2 cos(float2); 133_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 134float3 cos(float3); 135_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 136float4 cos(float4); 137 138_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 139double cos(double); 140_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 141double2 cos(double2); 142_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 143double3 cos(double3); 144_HLSL_BUILTIN_ALIAS(__builtin_elementwise_cos) 145double4 cos(double4); 146 147//===----------------------------------------------------------------------===// 148// floor builtins 149//===----------------------------------------------------------------------===// 150#ifdef __HLSL_ENABLE_16_BIT 151_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 152half floor(half); 153_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 154half2 floor(half2); 155_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 156half3 floor(half3); 157_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 158half4 floor(half4); 159#endif 160 161_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 162float floor(float); 163_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 164float2 floor(float2); 165_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 166float3 floor(float3); 167_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 168float4 floor(float4); 169 170_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 171double floor(double); 172_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 173double2 floor(double2); 174_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 175double3 floor(double3); 176_HLSL_BUILTIN_ALIAS(__builtin_elementwise_floor) 177double4 floor(double4); 178 179//===----------------------------------------------------------------------===// 180// log builtins 181//===----------------------------------------------------------------------===// 182#ifdef __HLSL_ENABLE_16_BIT 183_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 184half log(half); 185_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 186half2 log(half2); 187_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 188half3 log(half3); 189_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 190half4 log(half4); 191#endif 192 193_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 194float log(float); 195_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 196float2 log(float2); 197_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 198float3 log(float3); 199_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 200float4 log(float4); 201 202_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 203double log(double); 204_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 205double2 log(double2); 206_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 207double3 log(double3); 208_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log) 209double4 log(double4); 210 211//===----------------------------------------------------------------------===// 212// log10 builtins 213//===----------------------------------------------------------------------===// 214#ifdef __HLSL_ENABLE_16_BIT 215_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 216half log10(half); 217_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 218half2 log10(half2); 219_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 220half3 log10(half3); 221_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 222half4 log10(half4); 223#endif 224 225_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 226float log10(float); 227_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 228float2 log10(float2); 229_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 230float3 log10(float3); 231_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 232float4 log10(float4); 233 234_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 235double log10(double); 236_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 237double2 log10(double2); 238_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 239double3 log10(double3); 240_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log10) 241double4 log10(double4); 242 243//===----------------------------------------------------------------------===// 244// log2 builtins 245//===----------------------------------------------------------------------===// 246#ifdef __HLSL_ENABLE_16_BIT 247_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 248half log2(half); 249_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 250half2 log2(half2); 251_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 252half3 log2(half3); 253_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 254half4 log2(half4); 255#endif 256 257_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 258float log2(float); 259_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 260float2 log2(float2); 261_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 262float3 log2(float3); 263_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 264float4 log2(float4); 265 266_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 267double log2(double); 268_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 269double2 log2(double2); 270_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 271double3 log2(double3); 272_HLSL_BUILTIN_ALIAS(__builtin_elementwise_log2) 273double4 log2(double4); 274 275//===----------------------------------------------------------------------===// 276// max builtins 277//===----------------------------------------------------------------------===// 278#ifdef __HLSL_ENABLE_16_BIT 279_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 280half max(half, half); 281_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 282half2 max(half2, half2); 283_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 284half3 max(half3, half3); 285_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 286half4 max(half4, half4); 287 288_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 289int16_t max(int16_t, int16_t); 290_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 291int16_t2 max(int16_t2, int16_t2); 292_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 293int16_t3 max(int16_t3, int16_t3); 294_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 295int16_t4 max(int16_t4, int16_t4); 296 297_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 298uint16_t max(uint16_t, uint16_t); 299_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 300uint16_t2 max(uint16_t2, uint16_t2); 301_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 302uint16_t3 max(uint16_t3, uint16_t3); 303_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 304uint16_t4 max(uint16_t4, uint16_t4); 305#endif 306 307_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 308int max(int, int); 309_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 310int2 max(int2, int2); 311_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 312int3 max(int3, int3); 313_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 314int4 max(int4, int4); 315 316_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 317uint max(uint, uint); 318_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 319uint2 max(uint2, uint2); 320_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 321uint3 max(uint3, uint3); 322_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 323uint4 max(uint4, uint4); 324 325_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 326int64_t max(int64_t, int64_t); 327_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 328int64_t2 max(int64_t2, int64_t2); 329_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 330int64_t3 max(int64_t3, int64_t3); 331_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 332int64_t4 max(int64_t4, int64_t4); 333 334_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 335uint64_t max(uint64_t, uint64_t); 336_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 337uint64_t2 max(uint64_t2, uint64_t2); 338_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 339uint64_t3 max(uint64_t3, uint64_t3); 340_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 341uint64_t4 max(uint64_t4, uint64_t4); 342 343_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 344float max(float, float); 345_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 346float2 max(float2, float2); 347_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 348float3 max(float3, float3); 349_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 350float4 max(float4, float4); 351 352_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 353double max(double, double); 354_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 355double2 max(double2, double2); 356_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 357double3 max(double3, double3); 358_HLSL_BUILTIN_ALIAS(__builtin_elementwise_max) 359double4 max(double4, double4); 360 361//===----------------------------------------------------------------------===// 362// min builtins 363//===----------------------------------------------------------------------===// 364#ifdef __HLSL_ENABLE_16_BIT 365_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 366half min(half, half); 367_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 368half2 min(half2, half2); 369_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 370half3 min(half3, half3); 371_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 372half4 min(half4, half4); 373 374_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 375int16_t min(int16_t, int16_t); 376_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 377int16_t2 min(int16_t2, int16_t2); 378_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 379int16_t3 min(int16_t3, int16_t3); 380_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 381int16_t4 min(int16_t4, int16_t4); 382 383_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 384uint16_t min(uint16_t, uint16_t); 385_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 386uint16_t2 min(uint16_t2, uint16_t2); 387_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 388uint16_t3 min(uint16_t3, uint16_t3); 389_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 390uint16_t4 min(uint16_t4, uint16_t4); 391#endif 392 393_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 394int min(int, int); 395_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 396int2 min(int2, int2); 397_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 398int3 min(int3, int3); 399_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 400int4 min(int4, int4); 401 402_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 403uint min(uint, uint); 404_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 405uint2 min(uint2, uint2); 406_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 407uint3 min(uint3, uint3); 408_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 409uint4 min(uint4, uint4); 410 411_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 412float min(float, float); 413_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 414float2 min(float2, float2); 415_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 416float3 min(float3, float3); 417_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 418float4 min(float4, float4); 419 420_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 421int64_t min(int64_t, int64_t); 422_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 423int64_t2 min(int64_t2, int64_t2); 424_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 425int64_t3 min(int64_t3, int64_t3); 426_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 427int64_t4 min(int64_t4, int64_t4); 428 429_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 430uint64_t min(uint64_t, uint64_t); 431_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 432uint64_t2 min(uint64_t2, uint64_t2); 433_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 434uint64_t3 min(uint64_t3, uint64_t3); 435_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 436uint64_t4 min(uint64_t4, uint64_t4); 437 438_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 439double min(double, double); 440_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 441double2 min(double2, double2); 442_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 443double3 min(double3, double3); 444_HLSL_BUILTIN_ALIAS(__builtin_elementwise_min) 445double4 min(double4, double4); 446 447//===----------------------------------------------------------------------===// 448// pow builtins 449//===----------------------------------------------------------------------===// 450#ifdef __HLSL_ENABLE_16_BIT 451_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 452half pow(half, half); 453_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 454half2 pow(half2, half2); 455_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 456half3 pow(half3, half3); 457_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 458half4 pow(half4, half4); 459#endif 460 461_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 462float pow(float, float); 463_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 464float2 pow(float2, float2); 465_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 466float3 pow(float3, float3); 467_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 468float4 pow(float4, float4); 469 470_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 471double pow(double, double); 472_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 473double2 pow(double2, double2); 474_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 475double3 pow(double3, double3); 476_HLSL_BUILTIN_ALIAS(__builtin_elementwise_pow) 477double4 pow(double4, double4); 478 479//===----------------------------------------------------------------------===// 480// reversebits builtins 481//===----------------------------------------------------------------------===// 482#ifdef __HLSL_ENABLE_16_BIT 483_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 484int16_t reversebits(int16_t); 485_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 486int16_t2 reversebits(int16_t2); 487_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 488int16_t3 reversebits(int16_t3); 489_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 490int16_t4 reversebits(int16_t4); 491 492_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 493uint16_t reversebits(uint16_t); 494_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 495uint16_t2 reversebits(uint16_t2); 496_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 497uint16_t3 reversebits(uint16_t3); 498_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 499uint16_t4 reversebits(uint16_t4); 500#endif 501 502_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 503int reversebits(int); 504_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 505int2 reversebits(int2); 506_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 507int3 reversebits(int3); 508_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 509int4 reversebits(int4); 510 511_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 512uint reversebits(uint); 513_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 514uint2 reversebits(uint2); 515_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 516uint3 reversebits(uint3); 517_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 518uint4 reversebits(uint4); 519 520_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 521int64_t reversebits(int64_t); 522_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 523int64_t2 reversebits(int64_t2); 524_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 525int64_t3 reversebits(int64_t3); 526_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 527int64_t4 reversebits(int64_t4); 528 529_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 530uint64_t reversebits(uint64_t); 531_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 532uint64_t2 reversebits(uint64_t2); 533_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 534uint64_t3 reversebits(uint64_t3); 535_HLSL_BUILTIN_ALIAS(__builtin_elementwise_bitreverse) 536uint64_t4 reversebits(uint64_t4); 537 538//===----------------------------------------------------------------------===// 539// sin builtins 540//===----------------------------------------------------------------------===// 541#ifdef __HLSL_ENABLE_16_BIT 542_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 543half sin(half); 544_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 545half2 sin(half2); 546_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 547half3 sin(half3); 548_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 549half4 sin(half4); 550#endif 551 552_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 553float sin(float); 554_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 555float2 sin(float2); 556_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 557float3 sin(float3); 558_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 559float4 sin(float4); 560 561_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 562double sin(double); 563_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 564double2 sin(double2); 565_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 566double3 sin(double3); 567_HLSL_BUILTIN_ALIAS(__builtin_elementwise_sin) 568double4 sin(double4); 569 570//===----------------------------------------------------------------------===// 571// sqrt builtins 572//===----------------------------------------------------------------------===// 573#ifdef __HLSL_ENABLE_16_BIT 574_HLSL_BUILTIN_ALIAS(__builtin_sqrtf16) 575half sqrt(half In); 576#endif 577 578_HLSL_BUILTIN_ALIAS(__builtin_sqrtf) 579float sqrt(float In); 580 581_HLSL_BUILTIN_ALIAS(__builtin_sqrt) 582double sqrt(double In); 583 584//===----------------------------------------------------------------------===// 585// trunc builtins 586//===----------------------------------------------------------------------===// 587#ifdef __HLSL_ENABLE_16_BIT 588_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 589half trunc(half); 590_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 591half2 trunc(half2); 592_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 593half3 trunc(half3); 594_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 595half4 trunc(half4); 596#endif 597 598_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 599float trunc(float); 600_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 601float2 trunc(float2); 602_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 603float3 trunc(float3); 604_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 605float4 trunc(float4); 606 607_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 608double trunc(double); 609_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 610double2 trunc(double2); 611_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 612double3 trunc(double3); 613_HLSL_BUILTIN_ALIAS(__builtin_elementwise_trunc) 614double4 trunc(double4); 615 616//===----------------------------------------------------------------------===// 617// Wave* builtins 618//===----------------------------------------------------------------------===// 619_HLSL_AVAILABILITY(shadermodel, 6.0) 620_HLSL_BUILTIN_ALIAS(__builtin_hlsl_wave_active_count_bits) 621uint WaveActiveCountBits(bool bBit); 622 623} // namespace hlsl 624#endif //_HLSL_HLSL_INTRINSICS_H_ 625