diff options
| author | Yong He <yonghe@outlook.com> | 2024-04-01 15:56:02 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-01 15:56:02 -0700 |
| commit | 2c4f9810327d58023e9ec44f579cd78adf56317b (patch) | |
| tree | b5498a74bd7d01fd2e4c321a0d2e551d5f024d6d /tests/language-feature/enums/enum-bit-ops.slang | |
| parent | 65ac9f3a9ddcb8bcfc099ffb29beaa9a92ba1f53 (diff) | |
Allow bit operators on enum types. (#3862)
* Allow bit operators on enum types.
* Fix.
Diffstat (limited to 'tests/language-feature/enums/enum-bit-ops.slang')
| -rw-r--r-- | tests/language-feature/enums/enum-bit-ops.slang | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/language-feature/enums/enum-bit-ops.slang b/tests/language-feature/enums/enum-bit-ops.slang new file mode 100644 index 000000000..abffe8dee --- /dev/null +++ b/tests/language-feature/enums/enum-bit-ops.slang @@ -0,0 +1,32 @@ +//TEST(compute):COMPARE_COMPUTE(filecheck-buffer=CHECK): -shaderobj + +[Flags] +enum MyFlags +{ + Zero = 0, + BitOne, // = 1 + BitTwo, // = 2 + BitThree // = 4 +} + +bool test(MyFlags f1) +{ + return (f1 & MyFlags.BitTwo) != 0; +} + +//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer +RWStructuredBuffer<int> outputBuffer; + +[numthreads(1, 1, 1)] +void computeMain(int3 dispatchThreadID: SV_DispatchThreadID) +{ + int outVal = test(MyFlags.BitOne | MyFlags.BitTwo) ? 1 : 0; + // CHECK: 1 + outputBuffer[0] = outVal; + // CHECK: 4 + outputBuffer[1] = (int)MyFlags.BitThree; + // CHECK: 0 + outputBuffer[2] = test(MyFlags.BitOne | MyFlags.BitThree) ? 1 : 0; + // CHECK: 8 + outputBuffer[3] = MyFlags(8); +} |
