summaryrefslogtreecommitdiffstats
path: root/tests/bugs/gh-3997.slang
blob: d42e65e39a857636c1da0b226fda0a8fd0aada20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -O0 -g

//CHECK: OpEntryPoint

float atomicAdd(__ref float value, float amount)
{
    __target_switch
    {
    case cpp:
        __requirePrelude("#include <atomic>");
        __intrinsic_asm "std::atomic_ref(*$0).fetch_add($1)";
    case spirv:
        return __atomic_add(value, amount);
    }
}

RWStructuredBuffer<float> outputBuffer;

[numthreads(4, 1, 1)]
[shader("compute")]
void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) {
    atomicAdd(outputBuffer[0], 1);
}