yum-mirror/slang

Making it easier to work with shaders

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

Yong HeAllow implicitly casting enum types to bool. (#4739)a443350a6

master
865 B43 linesraw
1// Test enums can be implicitly casted to bool. 
2
3//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj
4
5[Flags]
6enum BitFlags
7{
8    One,
9    Two,
10    Three
11}
12
13int test<let n : bool>()
14{
15    return n;
16}
17
18//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
19RWStructuredBuffer<int> outputBuffer;
20
21[numthreads(4, 1, 1)]
22void computeMain(int3 dispatchThreadID : SV_DispatchThreadID)
23{
24    BitFlags x = BitFlags.One | BitFlags.Two;
25    if (x & BitFlags.One)
26        outputBuffer[0] = 1;
27    else
28        outputBuffer[0] = 0;
29    if (x & BitFlags.Three)
30        outputBuffer[1] = 1;
31    else
32        outputBuffer[1] = 0;
33    if (x & BitFlags.Two)
34        outputBuffer[2] = 1;
35    else
36        outputBuffer[2] = 0;
37
38    outputBuffer[3] = test<BitFlags.One & BitFlags.One>();
39    // CHECK: 1
40    // CHECK: 0
41    // CHECK: 1
42    // CHECK: 1
43}