summaryrefslogtreecommitdiff
path: root/tests/language-feature/enums/enum-bit-ops.slang
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-04-01 15:56:02 -0700
committerGitHub <noreply@github.com>2024-04-01 15:56:02 -0700
commit2c4f9810327d58023e9ec44f579cd78adf56317b (patch)
treeb5498a74bd7d01fd2e4c321a0d2e551d5f024d6d /tests/language-feature/enums/enum-bit-ops.slang
parent65ac9f3a9ddcb8bcfc099ffb29beaa9a92ba1f53 (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.slang32
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);
+}