summaryrefslogtreecommitdiff
path: root/tests/bugs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/bugs')
-rw-r--r--tests/bugs/gh-5372.slang45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/bugs/gh-5372.slang b/tests/bugs/gh-5372.slang
new file mode 100644
index 000000000..1cd778ab3
--- /dev/null
+++ b/tests/bugs/gh-5372.slang
@@ -0,0 +1,45 @@
+//TEST:SIMPLE(filecheck=SPV): -allow-glsl -target spirv-asm -entry vertexMain -stage vertex
+
+// This test is to make sure the constant-folding works for the switch-case label.
+// The shader code is from VK-CTS but modified,
+// dEQP-VK.glsl.switch.const_expr_in_label_dynamic_fragment
+
+layout(location = 0) in highp vec4 a_position;
+layout(location = 1) in highp vec4 a_coords;
+
+layout(location = 0) out mediump vec4 v_color;
+layout (std140, set=0, binding=0) uniform buffer0 { highp int ui_two; };
+
+void vertexMain(void)
+{
+ gl_Position = a_position;
+ highp vec4 coords = a_coords;
+ mediump vec3 res = vec3(0.0);
+
+ const int t = 2;
+ switch (ui_two)
+ {
+ //SPV-NOT:([[# @LINE+1]]): error
+ case int(0.0):
+ res = coords.xyz;
+ break;
+
+ //SPV-NOT:([[# @LINE+1]]): error
+ case 2-1:
+ res = coords.wzy;
+ break;
+
+ //SPV-NOT:([[# @LINE+1]]): error
+ case 3&(1<<1):
+ res = coords.yzw;
+ break;
+
+ //SPV-NOT:([[# @LINE+1]]): error
+ case t+1:
+ res = coords.zyx;
+ break;
+ }
+
+ v_color = vec4(res, 1.0);
+}
+