Module: Mesa
Branch: main
Commit: 7706d1cc33e3d5d2e71b29e7720c6c7d7a40e635
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7706d1cc33e3d5d2e71b29e7720c6c7d7a40e635

Author: Caio Oliveira <[email protected]>
Date:   Wed Mar 15 09:50:16 2023 -0700

spirv/tests: Add test for single-block loop

Reviewed-by: Faith Ekstrand <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22509>

---

 src/compiler/spirv/tests/control_flow_tests.cpp | 39 +++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/src/compiler/spirv/tests/control_flow_tests.cpp 
b/src/compiler/spirv/tests/control_flow_tests.cpp
index 8f3b047a342..04b8318ddaf 100644
--- a/src/compiler/spirv/tests/control_flow_tests.cpp
+++ b/src/compiler/spirv/tests/control_flow_tests.cpp
@@ -202,3 +202,42 @@ TEST_F(ControlFlow, DISABLED_EarlyMerge)
    get_nir(sizeof(words) / sizeof(words[0]), words, MESA_SHADER_FRAGMENT);
    ASSERT_TRUE(shader);
 }
+
+TEST_F(ControlFlow, SingleBlockLoop)
+{
+   /*
+OpCapability Shader
+OpMemoryModel Logical Simple
+OpEntryPoint GLCompute %100 "main"
+OpExecutionMode %100 LocalSize 1 1 1
+%void = OpTypeVoid
+%8 = OpTypeFunction %void
+%bool = OpTypeBool
+%cond = OpConstantNull %bool
+
+%100 = OpFunction %void None %8
+%10 = OpLabel
+OpBranch %20
+
+%20 = OpLabel
+OpLoopMerge %30 %20 None
+OpBranchConditional %cond %20 %30
+
+%30 = OpLabel
+OpReturn
+OpFunctionEnd
+ */
+   static const uint32_t words[] = {
+      0x07230203, 0x00010600, 0x00070000, 0x00000009, 0x00000000, 0x00020011,
+      0x00000001, 0x0003000e, 0x00000000, 0x00000000, 0x0005000f, 0x00000005,
+      0x00000001, 0x6e69616d, 0x00000000, 0x00060010, 0x00000001, 0x00000011,
+      0x00000001, 0x00000001, 0x00000001, 0x00020013, 0x00000002, 0x00030021,
+      0x00000003, 0x00000002, 0x00020014, 0x00000004, 0x0003002e, 0x00000004,
+      0x00000005, 0x00050036, 0x00000002, 0x00000001, 0x00000000, 0x00000003,
+      0x000200f8, 0x00000006, 0x000200f9, 0x00000007, 0x000200f8, 0x00000007,
+      0x000400f6, 0x00000008, 0x00000007, 0x00000000, 0x000400fa, 0x00000005,
+      0x00000007, 0x00000008, 0x000200f8, 0x00000008, 0x000100fd, 0x00010038,
+   };
+   get_nir(ARRAY_SIZE(words), words, MESA_SHADER_COMPUTE);
+   ASSERT_TRUE(shader);
+}
\ No newline at end of file

Reply via email to