diff options
| author | Jay Kwak <82421531+jkwak-work@users.noreply.github.com> | 2024-10-30 22:58:07 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-30 22:58:07 -0700 |
| commit | 1487a1f98d8916985b243f4a0113d216c42e4ba3 (patch) | |
| tree | f19e0f9c346ed4759830d135a79247947bb0d3dd /tests/bugs | |
| parent | a98fb6cbb4a846fc63266466a143690037e29c44 (diff) | |
Constant-fold for the type-casting in switch-case labels (#5436)
Diffstat (limited to 'tests/bugs')
| -rw-r--r-- | tests/bugs/gh-5372.slang | 45 |
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); +} + |
