/*
 * Copyright 2021 Google LLC
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SKSL_INTRINSIC_LIST_DEFINED
#define SKSL_INTRINSIC_LIST_DEFINED

// A list of every intrinsic supported by SkSL.
// Using an X-Macro (https://en.wikipedia.org/wiki/X_Macro) to manage the list.
#define SKSL_INTRINSIC_LIST            \
    SKSL_INTRINSIC(abs)                \
    SKSL_INTRINSIC(acosh)              \
    SKSL_INTRINSIC(acos)               \
    SKSL_INTRINSIC(all)                \
    SKSL_INTRINSIC(any)                \
    SKSL_INTRINSIC(asinh)              \
    SKSL_INTRINSIC(asin)               \
    SKSL_INTRINSIC(atanh)              \
    SKSL_INTRINSIC(atan)               \
    SKSL_INTRINSIC(bitCount)           \
    SKSL_INTRINSIC(ceil)               \
    SKSL_INTRINSIC(clamp)              \
    SKSL_INTRINSIC(cosh)               \
    SKSL_INTRINSIC(cos)                \
    SKSL_INTRINSIC(cross)              \
    SKSL_INTRINSIC(degrees)            \
    SKSL_INTRINSIC(determinant)        \
    SKSL_INTRINSIC(dFdx)               \
    SKSL_INTRINSIC(dFdy)               \
    SKSL_INTRINSIC(distance)           \
    SKSL_INTRINSIC(dot)                \
    SKSL_INTRINSIC(equal)              \
    SKSL_INTRINSIC(eval)               \
    SKSL_INTRINSIC(exp2)               \
    SKSL_INTRINSIC(exp)                \
    SKSL_INTRINSIC(faceforward)        \
    SKSL_INTRINSIC(findLSB)            \
    SKSL_INTRINSIC(findMSB)            \
    SKSL_INTRINSIC(floatBitsToInt)     \
    SKSL_INTRINSIC(floatBitsToUint)    \
    SKSL_INTRINSIC(floor)              \
    SKSL_INTRINSIC(fma)                \
    SKSL_INTRINSIC(fract)              \
    SKSL_INTRINSIC(frexp)              \
    SKSL_INTRINSIC(fromLinearSrgb)     \
    SKSL_INTRINSIC(fwidth)             \
    SKSL_INTRINSIC(greaterThanEqual)   \
    SKSL_INTRINSIC(greaterThan)        \
    SKSL_INTRINSIC(height)             \
    SKSL_INTRINSIC(intBitsToFloat)     \
    SKSL_INTRINSIC(inversesqrt)        \
    SKSL_INTRINSIC(inverse)            \
    SKSL_INTRINSIC(isinf)              \
    SKSL_INTRINSIC(isnan)              \
    SKSL_INTRINSIC(ldexp)              \
    SKSL_INTRINSIC(length)             \
    SKSL_INTRINSIC(lessThanEqual)      \
    SKSL_INTRINSIC(lessThan)           \
    SKSL_INTRINSIC(log2)               \
    SKSL_INTRINSIC(log)                \
    SKSL_INTRINSIC(makeSampler2D)      \
    SKSL_INTRINSIC(matrixCompMult)     \
    SKSL_INTRINSIC(matrixInverse)      \
    SKSL_INTRINSIC(max)                \
    SKSL_INTRINSIC(min)                \
    SKSL_INTRINSIC(mix)                \
    SKSL_INTRINSIC(modf)               \
    SKSL_INTRINSIC(mod)                \
    SKSL_INTRINSIC(normalize)          \
    SKSL_INTRINSIC(notEqual)           \
    SKSL_INTRINSIC(not)                \
    SKSL_INTRINSIC(outerProduct)       \
    SKSL_INTRINSIC(packDouble2x32)     \
    SKSL_INTRINSIC(packHalf2x16)       \
    SKSL_INTRINSIC(packSnorm2x16)      \
    SKSL_INTRINSIC(packSnorm4x8)       \
    SKSL_INTRINSIC(packUnorm2x16)      \
    SKSL_INTRINSIC(packUnorm4x8)       \
    SKSL_INTRINSIC(pow)                \
    SKSL_INTRINSIC(radians)            \
    SKSL_INTRINSIC(read)               \
    SKSL_INTRINSIC(reflect)            \
    SKSL_INTRINSIC(refract)            \
    SKSL_INTRINSIC(roundEven)          \
    SKSL_INTRINSIC(round)              \
    SKSL_INTRINSIC(sample)             \
    SKSL_INTRINSIC(saturate)           \
    SKSL_INTRINSIC(sign)               \
    SKSL_INTRINSIC(sinh)               \
    SKSL_INTRINSIC(sin)                \
    SKSL_INTRINSIC(smoothstep)         \
    SKSL_INTRINSIC(sqrt)               \
    SKSL_INTRINSIC(step)               \
    SKSL_INTRINSIC(subpassLoad)        \
    SKSL_INTRINSIC(tanh)               \
    SKSL_INTRINSIC(tan)                \
    SKSL_INTRINSIC(threadgroupBarrier) \
    SKSL_INTRINSIC(toLinearSrgb)       \
    SKSL_INTRINSIC(transpose)          \
    SKSL_INTRINSIC(trunc)              \
    SKSL_INTRINSIC(uintBitsToFloat)    \
    SKSL_INTRINSIC(unpackDouble2x32)   \
    SKSL_INTRINSIC(unpackHalf2x16)     \
    SKSL_INTRINSIC(unpackSnorm2x16)    \
    SKSL_INTRINSIC(unpackSnorm4x8)     \
    SKSL_INTRINSIC(unpackUnorm2x16)    \
    SKSL_INTRINSIC(unpackUnorm4x8)     \
    SKSL_INTRINSIC(width)              \
    SKSL_INTRINSIC(write)
#endif
