yum-mirror/slang

Making it easier to work with shaders

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

amidescent[SPIR-V] Emit control flags for `branch/flatten` decorations (#8134)fc6aea374

master
672 B32 linesraw
1//TEST:SIMPLE(filecheck=HLSL): -target hlsl -profile cs_5_0 -entry computeMain
2//TEST:SIMPLE(filecheck=SPIRV): -target spirv -O0
3
4//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
5RWStructuredBuffer<int> outputBuffer;
6
7// HLSL: [branch]
8// HLSL: [flatten]
9// SPIRV: OpSelectionMerge {{.*}} DontFlatten
10// SPIRV: OpSelectionMerge {{.*}} Flatten
11
12[numthreads(4, 1, 1)]
13void computeMain(int3 dispatchThreadID : SV_DispatchThreadID)
14{
15    int idx = dispatchThreadID.x;
16    
17    int v = idx;
18    
19    [branch]
20    if (idx != 0)
21    {
22        ++v;
23    }
24    
25    [flatten]
26    if (idx > 2)
27    {
28        v += v;
29    }
30
31	outputBuffer[dispatchThreadID.x] = v;
32}