summaryrefslogtreecommitdiffstats
path: root/tests/bugs/op-select-return-composite.slang
blob: 08f04502679ddab31b41575e89e1178be8c3a77c (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
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -output-using-type
//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=BUF):-vk -output-using-type -profile sm_6_0

//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