// Copyright 2024 The Dawn & Tint Authors
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// 3. Neither the name of the copyright holder nor the names of its
//    contributors may be used to endorse or promote products derived from
//    this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

////////////////////////////////////////////////////////////////////////////////
// GLSL builtin definition file                                               //
//                                                                            //
// After modifying this file, run:                                            //
//    tools/run gen                                                           //
// from the Dawn source directory.                                            //
//                                                                            //
// See docs/tint/intrinsic_definition_files.md for syntax                     //
////////////////////////////////////////////////////////////////////////////////

import "src/tint/lang/core/address_space.def"
import "src/tint/lang/core/access.def"
import "src/tint/lang/core/texel_format.def"

////////////////////////////////////////////////////////////////////////////////
// Types                                                                      //
////////////////////////////////////////////////////////////////////////////////

type bool
type f16
type f32
type i32
type u32
type atomic<T>
type ptr<S: address_space, T, A: access>

type vec2<T>
type vec3<T>
type vec4<T>
@display("vec{N}<{T}>")     type vec<N: num, T>

type array<T>

type texture_2d<T>
type texture_2d_array<T>
type texture_3d<T>
type texture_cube<T>
type texture_cube_array<T>
type texture_multisampled_2d<T>
type texture_depth_2d
type texture_depth_2d_array
type texture_depth_cube
type texture_depth_cube_array
type texture_depth_multisampled_2d
type texture_storage_1d<F: texel_format, A: access>
type texture_storage_2d<F: texel_format, A: access>
type texture_storage_2d_array<F: texel_format, A: access>
type texture_storage_3d<F: texel_format, A: access>

////////////////////////////////////////////////////////////////////////////////
// Type matchers                                                              //
////////////////////////////////////////////////////////////////////////////////

match scalar: f32 | f16 | i32 | u32 | bool
match iu32: i32 | u32
match fiu32: f32 | i32 | u32
match fi32_f16: f32 | i32 | f16
match fiu32_f16: f32 | i32 | u32 | f16
match fiu32_f16_bool: f32 | i32 | u32 | f16 | bool
match f32_f16: f32 | f16

match read_write: access.read_write
match readable
  : access.read
  | access.read_write
match writable
  : access.write
  | access.read_write

match workgroup_or_storage:
  address_space.storage |
  address_space.workgroup

match function: address_space.function
match storage: address_space.storage

match f32_texel_format
  : texel_format.r8unorm
  | texel_format.bgra8unorm
  | texel_format.rgba8unorm
  | texel_format.rgba8snorm
  | texel_format.rgba16float
  | texel_format.r32float
  | texel_format.rg32float
  | texel_format.rgba32float

match u32_texel_format
  : texel_format.rgba8uint
  | texel_format.rgba16uint
  | texel_format.r32uint
  | texel_format.rg32uint
  | texel_format.rgba32uint

match i32_texel_format
  : texel_format.rgba8sint
  | texel_format.rgba16sint
  | texel_format.r32sint
  | texel_format.rg32sint
  | texel_format.rgba32sint

////////////////////////////////////////////////////////////////////////////////
// Builtin Functions                                                          //
////////////////////////////////////////////////////////////////////////////////

@member_function @must_use implicit(T, A: access) fn length(ptr<storage, array<T>, A>) -> i32

@stage("compute") fn barrier()
@stage("compute") fn memoryBarrierBuffer()
@stage("compute") fn memoryBarrierImage()

@stage("fragment", "compute") implicit(T: iu32) fn atomicCompSwap(
                                    ptr<workgroup_or_storage, atomic<T>, read_write>,
                                    compare_value: T,
                                    value: T) -> T
@stage("fragment", "compute") implicit(T: iu32, S: workgroup_or_storage) fn atomicSub(
                                    ptr<S, atomic<T>, read_write>,
                                    T) -> T

fn floatBitsToInt(value: f32) -> i32
implicit(N: num) fn floatBitsToInt(value: vec<N, f32>) -> vec<N, i32>
fn floatBitsToUint(value: f32) -> u32
implicit(N: num) fn floatBitsToUint(value: vec<N, f32>) -> vec<N, u32>

fn intBitsToFloat(value: i32) -> f32
implicit(N: num) fn intBitsToFloat(value: vec<N, i32>) -> vec<N, f32>
fn uintBitsToFloat(value: u32) -> f32
implicit(N: num) fn uintBitsToFloat(value: vec<N, u32>) -> vec<N, f32>

implicit(T: iu32) fn bitCount(value: T) -> i32
implicit(T: iu32, N: num) fn bitCount(value: vec<N, T>) -> vec<N, i32>

implicit(T: iu32) fn bitfieldExtract(value: T, offset: i32, bits: i32) -> T
implicit(T: iu32, N: num) fn bitfieldExtract(value: vec<N, T>, offset: i32, bits: i32) -> vec<N, T>

implicit(T: iu32) fn bitfieldInsert(base: T, insert: T, offset: i32, bits: i32) -> T
implicit(T: iu32, N: num) fn bitfieldInsert(base: vec<N, T>,
                                             insert: vec<N, T>,
                                             offset: i32,
                                             bits: i32) -> vec<N, T>

fn packFloat2x16(value: vec2<f16>) -> u32
fn unpackFloat2x16(value: u32) -> vec2<f16>

implicit(T: fi32_f16) fn abs(T) -> T
implicit(T: fi32_f16, N: num) fn abs(vec<N, T>) -> vec<N, T>

implicit(N: num) fn any(vec<N, bool>) -> bool
implicit(N: num) fn all(vec<N, bool>) -> bool
implicit(T: f32_f16, N: num) fn dot(vec<N, T>, vec<N, T>) -> T

@must_use implicit(T: scalar) fn mix(T, T, bool) -> T
@must_use implicit(N: num, T: scalar) fn mix(vec<N, T>, vec<N, T>, vec<N, bool>) -> vec<N, T>

@must_use @const implicit(T: f32_f16) fn modf(value: T, result: ptr<function, T, read_write>) -> T
@must_use @const implicit(N: num, T: f32_f16) fn modf(value: vec<N, T>,
                                                      result: ptr<function, vec<N, T>, read_write>) -> vec<N, T>

@must_use @const implicit(T: f32_f16) fn frexp(value: T, exp: ptr<function, i32, read_write>) -> T
@must_use @const implicit(N: num, T: f32_f16) fn frexp(value: vec<N, T>,
                                                       exp : ptr<function, vec<N, i32>, read_write>) -> vec<N, T>

fn texture(texture: texture_2d<f32>, coords: vec2<f32>) -> vec4<f32>
fn texture(texture: texture_2d_array<f32>, coords: vec3<f32>) -> vec4<f32>
fn texture(texture: texture_3d<f32>, coords: vec3<f32>) -> vec4<f32>
fn texture(texture: texture_cube<f32>, coords: vec3<f32>) -> vec4<f32>
fn texture(texture: texture_cube_array<f32>, coords: vec4<f32>) -> vec4<f32>
fn texture(texture: texture_depth_2d, coords: vec3<f32>) -> f32
fn texture(texture: texture_depth_2d_array, coords: vec4<f32>) -> f32
fn texture(texture: texture_depth_cube, coords: vec4<f32>) -> f32
fn texture(texture: texture_depth_cube_array, coords: vec4<f32>, compare_value: f32) -> f32

fn texture(texture: texture_2d<f32>, coords: vec2<f32>, bias: f32) -> vec4<f32>
fn texture(texture: texture_2d_array<f32>, coords: vec3<f32>, bias: f32) -> vec4<f32>
fn texture(texture: texture_3d<f32>, coords: vec3<f32>, bias: f32) -> vec4<f32>
fn texture(texture: texture_cube<f32>, coords: vec3<f32>, bias: f32) -> vec4<f32>
fn texture(texture: texture_cube_array<f32>, coords: vec4<f32>, bias: f32) -> vec4<f32>

fn textureOffset(texture: texture_2d<f32>, coords: vec2<f32>, offset: vec2<i32>) -> vec4<f32>
fn textureOffset(texture: texture_2d_array<f32>, coords: vec3<f32>, offset: vec2<i32>) -> vec4<f32>
fn textureOffset(texture: texture_3d<f32>, coords: vec3<f32>, offset: vec3<i32>) -> vec4<f32>
fn textureOffset(texture: texture_depth_2d, coords: vec3<f32>, offset: vec2<i32>) -> f32
fn textureOffset(texture: texture_depth_2d_array, coords: vec4<f32>, offset: vec2<i32>) -> f32

fn textureOffset(texture: texture_2d<f32>, coords: vec2<f32>, offset: vec2<i32>, bias: f32) -> vec4<f32>
fn textureOffset(texture: texture_2d_array<f32>, coords: vec3<f32>, offset: vec2<i32>, bias: f32) -> vec4<f32>
fn textureOffset(texture: texture_3d<f32>, coords: vec3<f32>, offset: vec3<i32>, bias: f32) -> vec4<f32>

fn textureLod(texture: texture_2d<f32>, coords: vec2<f32>, level: f32) -> vec4<f32>
fn textureLod(texture: texture_2d_array<f32>, coords: vec3<f32>, level: f32) -> vec4<f32>
fn textureLod(texture: texture_3d<f32>, coords: vec3<f32>, level: f32) -> vec4<f32>
fn textureLod(texture: texture_cube<f32>, coords: vec3<f32>, level: f32) -> vec4<f32>
fn textureLod(texture: texture_cube_array<f32>, coords: vec4<f32>, level: f32) -> vec4<f32>
fn textureLod(texture: texture_depth_2d, coords: vec3<f32>, level: f32) -> f32

fn extTextureLod(texture: texture_depth_2d_array, coords: vec4<f32>, level: f32) -> f32
fn extTextureLod(texture: texture_depth_cube, coords: vec4<f32>, level: f32) -> f32
fn extTextureLod(texture: texture_depth_cube_array, coords: vec4<f32>, compare_value: f32, level: f32) -> f32

fn textureLodOffset(texture: texture_2d<f32>, coords: vec2<f32>, level: f32, offset: vec2<i32>) -> vec4<f32>
fn textureLodOffset(texture: texture_2d_array<f32>, coords: vec3<f32>, level: f32, offset: vec2<i32>) -> vec4<f32>
fn textureLodOffset(texture: texture_3d<f32>, coords: vec3<f32>, level: f32, offset: vec3<i32>) -> vec4<f32>
fn textureLodOffset(texture: texture_depth_2d, coords: vec3<f32>, level: f32, offset: vec2<i32>) -> f32

fn extTextureLodOffset(texture: texture_depth_2d_array, coords: vec4<f32>, level: f32, offset: vec2<i32>) -> f32

fn textureGrad(texture: texture_2d<f32>, coords: vec2<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32>
fn textureGrad(texture: texture_2d_array<f32>, coords: vec3<f32>, ddx: vec2<f32>, ddy: vec2<f32>) -> vec4<f32>
fn textureGrad(texture: texture_3d<f32>, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32>
fn textureGrad(texture: texture_cube<f32>, coords: vec3<f32>, ddx: vec3<f32>, ddy: vec3<f32>) -> vec4<f32>
fn textureGrad(texture: texture_cube_array<f32>,
                     coords: vec4<f32>,
                     ddx: vec3<f32>,
                     ddy: vec3<f32>) -> vec4<f32>

fn textureGradOffset(texture: texture_2d<f32>,
                     coords: vec2<f32>,
                     ddx: vec2<f32>,
                     ddy: vec2<f32>,
                     offset: vec2<i32>) -> vec4<f32>
fn textureGradOffset(texture: texture_2d_array<f32>,
                     coords: vec3<f32>,
                     ddx: vec2<f32>,
                     ddy: vec2<f32>,
                     offset: vec2<i32>) -> vec4<f32>
fn textureGradOffset(texture: texture_3d<f32>,
                     coords: vec3<f32>,
                     ddx: vec3<f32>,
                     ddy: vec3<f32>,
                     offset: vec3<i32>) -> vec4<f32>
fn textureGradOffset(texture: texture_depth_2d,
                     coords: vec3<f32>,
                     ddx: vec2<f32>,
                     ddy: vec2<f32>,
                     offset: vec2<i32>) -> f32
fn textureGradOffset(texture: texture_depth_2d_array,
                     coords: vec4<f32>,
                     ddx: vec2<f32>,
                     ddy: vec2<f32>,
                     offset: vec2<i32>) -> f32

@must_use implicit(T: fiu32) fn textureGather(
        texture: texture_2d<T>,
        coords: vec2<f32>,
        component: i32) -> vec4<T>
@must_use implicit(T: fiu32) fn textureGather(
        texture: texture_2d_array<T>,
        coords: vec3<f32>,
        component: i32) -> vec4<T>
@must_use implicit(T: fiu32) fn textureGather(
        texture: texture_cube<T>,
        coords: vec3<f32>,
        component: i32) -> vec4<T>
@must_use implicit(T: fiu32) fn textureGather(
        texture: texture_cube_array<T>,
        coords: vec4<f32>,
        component: i32) -> vec4<T>
@must_use fn textureGather(
        texture: texture_depth_2d,
        coords: vec2<f32>,
        refz: f32) -> vec4<f32>
@must_use fn textureGather(
        texture: texture_depth_2d_array,
        coords: vec3<f32>,
        refz: f32) -> vec4<f32>
@must_use fn textureGather(
        texture: texture_depth_cube,
        coords: vec3<f32>,
        refz: f32) -> vec4<f32>
@must_use fn textureGather(
        texture: texture_depth_cube_array,
        coords: vec4<f32>,
        refz: f32) -> vec4<f32>

@must_use implicit(T: fiu32) fn textureGatherOffset(
        texture: texture_2d<T>,
        coords: vec2<f32>,
        offset: vec2<i32>,
        component: i32) -> vec4<T>
@must_use implicit(T: fiu32) fn textureGatherOffset(
        texture: texture_2d_array<T>,
        coords: vec3<f32>,
        offset: vec2<i32>,
        component: i32) -> vec4<T>
@must_use fn textureGatherOffset(
        texture: texture_depth_2d,
        coords: vec2<f32>,
        refz: f32,
        offset: vec2<i32>) -> vec4<f32>
@must_use fn textureGatherOffset(
        texture: texture_depth_2d_array,
        coords: vec3<f32>,
        refz: f32,
        offset: vec2<i32>) -> vec4<f32>

@must_use implicit(T: fiu32) fn textureSize(texture: texture_2d<T>,
                                            level: i32) -> vec2<i32>
@must_use implicit(T: fiu32) fn textureSize(texture: texture_2d_array<T>,
                                            level: i32) -> vec3<i32>
@must_use implicit(T: fiu32) fn textureSize(texture: texture_3d<T>,
                                            level: i32) -> vec3<i32>
@must_use implicit(T: fiu32) fn textureSize(texture: texture_cube<T>,
                                            level: i32) -> vec2<i32>
@must_use implicit(T: fiu32) fn textureSize(texture: texture_cube_array<T>,
                                            level: i32) -> vec3<i32>
@must_use fn textureSize(texture: texture_depth_2d,
                         level: i32) -> vec2<i32>
@must_use fn textureSize(texture: texture_depth_2d_array,
                         level: i32) -> vec3<i32>
@must_use fn textureSize(texture: texture_depth_cube,
                         level: i32) -> vec2<i32>
@must_use fn textureSize(texture: texture_depth_cube_array,
                        level: i32) -> vec3<i32>

@must_use implicit(T: fiu32) fn textureSize(texture: texture_multisampled_2d<T>) -> vec2<i32>
@must_use fn textureSize(texture: texture_depth_multisampled_2d) -> vec2<i32>

@must_use implicit(F: texel_format, A: access) fn imageSize(
                                            texture: texture_storage_1d<F, A>) -> i32
@must_use implicit(F: texel_format, A: access) fn imageSize(
                                            texture: texture_storage_2d<F, A>) -> vec2<i32>
@must_use implicit(F: texel_format, A: access) fn imageSize(
                                            texture: texture_storage_2d_array<F, A>) -> vec3<i32>
@must_use implicit(F: texel_format, A: access) fn imageSize(
                                            texture: texture_storage_3d<F, A>) -> vec3<i32>

implicit(T: fiu32) fn texelFetch(texture: texture_2d<T>, location: vec2<i32>, level: i32) -> vec4<T>
implicit(T: fiu32) fn texelFetch(texture: texture_2d_array<T>, location: vec3<i32>, level: i32) -> vec4<T>
implicit(T: fiu32) fn texelFetch(texture: texture_multisampled_2d<T>,
                                 location: vec2<i32>,
                                 sample_index: i32) -> vec4<T>
implicit(T: fiu32) fn texelFetch(texture: texture_3d<T>, location: vec3<i32>, level: i32) -> vec4<T>
// This ends up emitting as a 2DMS
fn texelFetch(texture: texture_depth_multisampled_2d, location: vec2<i32>, sample_index: i32) -> vec4<f32>

implicit(F: f32_texel_format, A: readable) fn imageLoad(texture: texture_storage_1d<F, A>,
                                                      coords: i32) -> vec4<f32>
implicit(F: f32_texel_format, A: readable) fn imageLoad(texture: texture_storage_2d<F, A>,
                                                      coords: vec2<i32>) -> vec4<f32>
implicit(F: f32_texel_format, A: readable) fn imageLoad(texture: texture_storage_2d_array<F, A>,
                                                      coords: vec3<i32>) -> vec4<f32>
implicit(F: f32_texel_format, A: readable) fn imageLoad(texture: texture_storage_3d<F, A>,
                                                      coords: vec3<i32>) -> vec4<f32>

implicit(F: i32_texel_format, A: readable) fn imageLoad(texture: texture_storage_1d<F, A>,
                                                      coords: i32) -> vec4<i32>
implicit(F: i32_texel_format, A: readable) fn imageLoad(texture: texture_storage_2d<F, A>,
                                                      coords: vec2<i32>) -> vec4<i32>
implicit(F: i32_texel_format, A: readable) fn imageLoad(texture: texture_storage_2d_array<F, A>,
                                                      coords: vec3<i32>) -> vec4<i32>
implicit(F: i32_texel_format, A: readable) fn imageLoad(texture: texture_storage_3d<F, A>,
                                                      coords: vec3<i32>) -> vec4<i32>

implicit(F: u32_texel_format, A: readable) fn imageLoad(texture: texture_storage_1d<F, A>,
                                                      coords: i32) -> vec4<u32>
implicit(F: u32_texel_format, A: readable) fn imageLoad(texture: texture_storage_2d<F, A>,
                                                      coords: vec2<i32>) -> vec4<u32>
implicit(F: u32_texel_format, A: readable) fn imageLoad(texture: texture_storage_2d_array<F, A>,
                                                      coords: vec3<i32>) -> vec4<u32>
implicit(F: u32_texel_format, A: readable) fn imageLoad(texture: texture_storage_3d<F, A>,
                                                      coords: vec3<i32>) -> vec4<u32>

fn imageStore(texture: texture_storage_1d<f32_texel_format, writable>,
                                coords: i32,
                                value: vec4<f32>)
fn imageStore(texture: texture_storage_1d<i32_texel_format, writable>,
                                coords: i32,
                                value: vec4<i32>)
fn imageStore(texture: texture_storage_1d<u32_texel_format, writable>,
                                coords: i32,
                                value: vec4<u32>)
fn imageStore(texture: texture_storage_2d<f32_texel_format, writable>,
                                coords: vec2<i32>,
                                value: vec4<f32>)
fn imageStore(texture: texture_storage_2d<i32_texel_format, writable>,
                                coords: vec2<i32>,
                                value: vec4<i32>)
fn imageStore(texture: texture_storage_2d<u32_texel_format, writable>,
                                coords: vec2<i32>,
                                value: vec4<u32>)
fn imageStore(texture: texture_storage_3d<f32_texel_format, writable>,
                                coords: vec3<i32>,
                                value: vec4<f32>)
fn imageStore(texture: texture_storage_3d<i32_texel_format, writable>,
                                coords: vec3<i32>,
                                value: vec4<i32>)
fn imageStore(texture: texture_storage_3d<u32_texel_format, writable>,
                                coords: vec3<i32>,
                                value: vec4<u32>)
fn imageStore(texture: texture_storage_2d_array<f32_texel_format, writable>,
                                coords: vec3<i32>,
                                value: vec4<f32>)
fn imageStore(texture: texture_storage_2d_array<i32_texel_format, writable>,
                                coords: vec3<i32>,
                                value: vec4<i32>)
fn imageStore(texture: texture_storage_2d_array<u32_texel_format, writable>,
                                coords: vec3<i32>,
                                value: vec4<u32>)

implicit(T: fiu32_f16 N: num) fn lessThan(vec<N, T>, vec<N, T>) -> vec<N, bool>
implicit(T: fiu32_f16 N: num) fn lessThanEqual(vec<N, T>, vec<N, T>) -> vec<N, bool>
implicit(T: fiu32_f16 N: num) fn greaterThan(vec<N, T>, vec<N, T>) -> vec<N, bool>
implicit(T: fiu32_f16 N: num) fn greaterThanEqual(vec<N, T>, vec<N, T>) -> vec<N, bool>
implicit(T: fiu32_f16_bool N: num) fn equal(vec<N, T>, vec<N, T>) -> vec<N, bool>
implicit(T: fiu32_f16_bool N: num) fn notEqual(vec<N, T>, vec<N, T>) -> vec<N, bool>
