summaryrefslogtreecommitdiffstats
path: root/tests/wgsl/operator-precedence.slang
blob: 8e90991d6763e06b320344b4fb49a8033892413d (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
35
36
37
38
39
40
41
42
43
44
45
//TEST(compute):COMPARE_COMPUTE:-shaderobj

//TEST_INPUT:ubuffer(data=[3 7 8], stride=4):name=inputBuffer
RWStructuredBuffer<uint> inputBuffer;

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

[numthreads(1,1,1)]
void computeMain()
{
    uint a = inputBuffer[0];
    uint b = inputBuffer[1];
    uint c = inputBuffer[2];

    outputBuffer[0] = a+b ^ c;
    outputBuffer[1] = a ^ b+c;

    outputBuffer[2] = a-b | c;
    outputBuffer[3] = a | b-c;

    outputBuffer[4] = a+b & c;
    outputBuffer[5] = a & b+c;

    outputBuffer[6] = a<<b ^ c;
    outputBuffer[7] = a ^ b<<c;

    outputBuffer[8] = a>>b | c;
    outputBuffer[9] = a | b>>c;

    outputBuffer[10] = a<<b & c;
    outputBuffer[11] = a & b<<c;

    outputBuffer[12] = a<b && b!=c;
    outputBuffer[13] = a==b || b>=c;

    outputBuffer[14] = a*b ^ c;
    outputBuffer[15] = a ^ b*c;

    outputBuffer[16] = a/b | c;
    outputBuffer[17] = a | b/c;

    outputBuffer[18] = a*b & c;
    outputBuffer[19] = a & b*c;
}