#version 450 core

#extension GL_KHR_memory_scope_semantics : enable
#extension GL_EXT_shader_atomic_float: enable
#pragma use_vulkan_memory_model

layout(local_size_x = 16, local_size_y = 16) in;

layout(binding = 0) buffer Buffer
{
    float dataf;
    double datad;
} buf;

shared float  atomf;
shared double atomd;

layout(binding = 0, r32f) volatile coherent uniform image1D        fimage1D;
layout(binding = 1, r32f) volatile coherent uniform image1DArray   fimage1DArray;
layout(binding = 2, r32f) volatile coherent uniform image2D        fimage2D;
layout(binding = 3, r32f) volatile coherent uniform image2DArray   fimage2DArray;
layout(binding = 4, r32f) volatile coherent uniform image2DRect    fimage2DRect;
layout(binding = 5, r32f) volatile coherent uniform imageCube      fimageCube;
layout(binding = 6, r32f) volatile coherent uniform imageCubeArray fimageCubeArray;
layout(binding = 9, r32f) volatile coherent uniform image3D        fimage3D;

void main()
{
    //atomicAdd
    float resultf = 0;
    resultf = atomicAdd(atomf, 3.0);
    resultf = atomicAdd(atomf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease);
    resultf = atomicAdd(buf.dataf, 3.0);
    resultf = atomicAdd(buf.dataf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease);

    double resultd = 0;
    resultd = atomicAdd(atomd, 3.0);
    resultd = atomicAdd(atomd, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease);
    resultd = atomicAdd(buf.datad, 3.0);
    resultd = atomicAdd(buf.datad, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquireRelease);

    //atomicExchange
    resultf = atomicExchange(buf.dataf, resultf);
    buf.dataf += resultf;
    resultf = atomicExchange(buf.dataf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease);
    buf.dataf += resultf;
    resultf = atomicExchange(atomf, resultf);
    buf.dataf += resultf;
    resultf = atomicExchange(atomf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease);
    buf.dataf += resultf;

    resultd = atomicExchange(buf.datad, resultd);
    buf.datad += resultd;
    resultd = atomicExchange(buf.datad, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease);
    buf.datad += resultd;
    resultd = atomicExchange(atomd, resultd);
    buf.datad += resultd;
    resultd = atomicExchange(atomd, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquireRelease);
    buf.datad += resultd;

    //atomic load/store
    resultf = atomicLoad(buf.dataf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire);
    atomicStore(buf.dataf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease);
    buf.dataf += resultf;

    resultf = atomicLoad(atomf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire);
    atomicStore(atomf, resultf, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease);
    buf.dataf += resultf;

    resultd = atomicLoad(buf.datad, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire);
    atomicStore(buf.datad, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease);
    buf.datad += resultd;

    resultd = atomicLoad(atomd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsAcquire);
    atomicStore(atomd, resultd, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelease);
    buf.datad += resultd;

    // image atomics on 1D:
    atomf = imageAtomicAdd(fimage1D, int(0), 2.0);
    buf.dataf += atomf;
    atomf = imageAtomicAdd(fimage1D, int(1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicExchange(fimage1D, int(1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicLoad(fimage1D, int(1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire);
    buf.dataf += atomf;

    imageAtomicStore(fimage1D, int(2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease);
    buf.dataf += atomf;

    // image atomics on 1D Array:
    atomf = imageAtomicAdd(fimage1DArray, ivec2(0,0), 2.0);
    buf.dataf += atomf;
    atomf = imageAtomicAdd(fimage1DArray, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicExchange(fimage1DArray, ivec2(1,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicLoad(fimage1DArray, ivec2(1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire);
    buf.dataf += atomf;

    imageAtomicStore(fimage1DArray, ivec2(2,2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease);
    buf.dataf += atomf;

    // image atomics on 2D:
    atomf = imageAtomicAdd(fimage2D, ivec2(0,0), 2.0);
    buf.dataf += atomf;
    atomf = imageAtomicAdd(fimage2D, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicExchange(fimage2D, ivec2(1,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicLoad(fimage2D, ivec2(1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire);
    buf.dataf += atomf;

    imageAtomicStore(fimage2D, ivec2(2,2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease);
    buf.dataf += atomf;

    // image atomics on 2D Rect:
    atomf = imageAtomicAdd(fimage2DRect, ivec2(0,0), 2.0);
    buf.dataf += atomf;
    atomf = imageAtomicAdd(fimage2DRect, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicExchange(fimage2DRect, ivec2(1,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicLoad(fimage2DRect, ivec2(1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire);
    buf.dataf += atomf;

    imageAtomicStore(fimage2DRect, ivec2(2,2), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease);
    buf.dataf += atomf;

    // image atomics on 2D Array:
    atomf = imageAtomicAdd(fimage2DArray, ivec3(0,0,0), 2.0);
    buf.dataf += atomf;
    atomf = imageAtomicAdd(fimage2DArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicExchange(fimage2DArray, ivec3(1,0,1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicLoad(fimage2DArray, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire);
    buf.dataf += atomf;

    imageAtomicStore(fimage2DArray, ivec3(2,2,0), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease);
    buf.dataf += atomf;

    // image atomics on Cube:
    atomf = imageAtomicAdd(fimageCube, ivec3(0,0,0), 2.0);
    buf.dataf += atomf;
    atomf = imageAtomicAdd(fimageCube, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicExchange(fimageCube, ivec3(1,0,0), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicLoad(fimageCube, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire);
    buf.dataf += atomf;

    imageAtomicStore(fimageCube, ivec3(2,2,1), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease);
    buf.dataf += atomf;

    // image atomics on Cube Array:
    atomf = imageAtomicAdd(fimageCubeArray, ivec3(0,0,0), 2.0);
    buf.dataf += atomf;
    atomf = imageAtomicAdd(fimageCubeArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicExchange(fimageCubeArray, ivec3(1,0,1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicLoad(fimageCubeArray, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire);
    buf.dataf += atomf;

    imageAtomicStore(fimageCubeArray, ivec3(2,2,0), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease);
    buf.dataf += atomf;

    // image atomics on 3D:
    atomf = imageAtomicAdd(fimage3D, ivec3(0,0,0), 2.0);
    buf.dataf += atomf;
    atomf = imageAtomicAdd(fimage3D, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicExchange(fimage3D, ivec3(1,0,1), 4.0, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquireRelease);
    buf.dataf += atomf;

    atomf = imageAtomicLoad(fimage3D, ivec3(1,1,1), gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsAcquire);
    buf.dataf += atomf;

    imageAtomicStore(fimage3D, ivec3(2,2,0), atomf, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelease);
    buf.dataf += atomf;
}