yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Yong HeCleanup atomic intrinsics. (#5324)a618b8c5e

master
550 B23 linesraw
1//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -O0 -g
2
3//CHECK: OpEntryPoint
4
5float atomicAdd(__ref float value, float amount)
6{
7    __target_switch
8    {
9    case cpp:
10        __requirePrelude("#include <atomic>");
11        __intrinsic_asm "std::atomic_ref(*$0).fetch_add($1)";
12    case spirv:
13        return __atomic_add(value, amount);
14    }
15}
16
17RWStructuredBuffer<float> outputBuffer;
18
19[numthreads(4, 1, 1)]
20[shader("compute")]
21void computeMain(int3 dispatchThreadID : SV_DispatchThreadID) {
22    atomicAdd(outputBuffer[0], 1);
23}