summaryrefslogtreecommitdiff
path: root/tests/bugs/op-select-return-composite.slang
blob: eb453d457a3cb9328aa0ee5473fe48d44e3dbfaf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-d3d12 -output-using-type -use-dxil
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -output-using-type
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -output-using-type -profile spirv_1_3

//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
RWStructuredBuffer<int> outputBuffer;

struct CompositeType
{
    __init(int dataIn)
    {
        data1 = dataIn;
        data2 = dataIn;
    }
    int data1;
    float data2;
}

[numthreads(1,1,1)]
void computeMain(){

    CompositeType composite = CompositeType(-1); 
    if (outputBuffer[0] == 0)
    {
        composite = outputBuffer[1] > -1 ? CompositeType(1) : CompositeType(-1);
    }
    outputBuffer[2] = composite.data1;
    outputBuffer[3] = (int)composite.data2;
}

//BUF: 0
//BUF: 0
//BUF: 1
//BUF: 1