summaryrefslogtreecommitdiff
path: root/tests/language-feature/zero-initialize/regular.slang
diff options
context:
space:
mode:
Diffstat (limited to 'tests/language-feature/zero-initialize/regular.slang')
-rw-r--r--tests/language-feature/zero-initialize/regular.slang116
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/language-feature/zero-initialize/regular.slang b/tests/language-feature/zero-initialize/regular.slang
new file mode 100644
index 000000000..5627762c3
--- /dev/null
+++ b/tests/language-feature/zero-initialize/regular.slang
@@ -0,0 +1,116 @@
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=BUF):-vk -compute -entry computeMain -allow-glsl -xslang -zero-initialize
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=BUF):-vk -compute -entry computeMain -emit-spirv-directly -allow-glsl -xslang -zero-initialize
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX(filecheck-buffer=BUF):-cpu -compute -entry computeMain -allow-glsl -xslang -zero-initialize
+//TEST(smoke,compute):COMPARE_COMPUTE_EX(filecheck-buffer=BUF):-dx12 -use-dxil -compute -entry computeMain -allow-glsl -profile sm_6_2 -xslang -zero-initialize -xslang -DDX12
+
+//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+enum MyFlags
+{
+ Zero = 0,
+ One,
+}
+MyFlags getMyFlagsUint_One()
+{
+ return MyFlags::One;
+}
+
+#ifndef DX12
+enum MyFlags_uint8 : uint8_t
+{
+ Zero = 0,
+ One,
+}
+MyFlags_uint8 getMyFlagsUint8_One()
+{
+ return MyFlags_uint8::One;
+}
+#endif
+
+enum MyFlags_uint16 : uint16_t
+{
+ Zero = 0,
+ One,
+}
+MyFlags_uint16 getMyFlagsUint16_One()
+{
+ return MyFlags_uint16::One;
+}
+
+enum MyFlags_uint32 : uint32_t
+{
+ Zero = 0,
+ One,
+}
+MyFlags_uint32 getMyFlagsUint32_One()
+{
+ return MyFlags_uint32::One;
+}
+
+enum MyFlags_uint64 : uint64_t
+{
+ Zero = 0,
+ One,
+}
+MyFlags_uint64 getMyFlagsUint64_One()
+{
+ return MyFlags_uint64::One;
+}
+
+int getDefaultInt()
+{
+ int val;
+ return val;
+}
+float getDefaultFloat()
+{
+ float val;
+ return val;
+}
+double getDefaultDouble()
+{
+ double val;
+ return val;
+}
+vector<int, 2> getDefaultIntVec2()
+{
+ vector<int, 2> val;
+ return val;
+}
+vector<int, 3> getDefaultIntVec3()
+{
+ vector<int, 3> val;
+ return val;
+}
+vector<int, 4> getDefaultIntVec4()
+{
+ vector<int, 4> val;
+ return val;
+}
+[numthreads(1, 1, 1)]
+void computeMain(int3 dispatchThreadID: SV_DispatchThreadID)
+{
+ int defaultInt = getDefaultInt();
+ float defaultFloat = getDefaultFloat();
+ double defaultDouble = getDefaultDouble();
+ vector<int, 2> vector2 = getDefaultIntVec2();
+ vector<int, 3> vector3 = getDefaultIntVec3();
+ vector<int, 4> vector4 = getDefaultIntVec4();
+// BUF: 1
+ outputBuffer[0] = true
+ && defaultInt == 0
+ && defaultFloat == 0
+ && defaultDouble == 0
+ && vector2 == vector<int, 2>(0)
+ && vector3 == vector<int, 3>(0)
+ && vector4 == vector<int, 4>(0)
+ && MyFlags::One == getMyFlagsUint_One()
+#ifndef DX12
+ && MyFlags_uint8::One == getMyFlagsUint8_One()
+#endif
+ && MyFlags_uint16::One == getMyFlagsUint16_One()
+ && MyFlags_uint32::One == getMyFlagsUint32_One()
+ && MyFlags_uint64::One == getMyFlagsUint64_One();
+ ;
+}