summaryrefslogtreecommitdiff
path: root/tests/language-feature/capability/specializeTargetSwitch.slang
diff options
context:
space:
mode:
Diffstat (limited to 'tests/language-feature/capability/specializeTargetSwitch.slang')
-rw-r--r--tests/language-feature/capability/specializeTargetSwitch.slang59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/language-feature/capability/specializeTargetSwitch.slang b/tests/language-feature/capability/specializeTargetSwitch.slang
new file mode 100644
index 000000000..251adfaf8
--- /dev/null
+++ b/tests/language-feature/capability/specializeTargetSwitch.slang
@@ -0,0 +1,59 @@
+//TEST:SIMPLE(filecheck=CHECK_HLSL): -target hlsl -entry main -stage compute -capability _sm_5_1
+//TEST:SIMPLE(filecheck=CHECK_GLSL1): -target glsl -entry main -stage compute -capability _GLSL_420
+//TEST:SIMPLE(filecheck=CHECK_GLSL2): -target glsl -entry main -stage compute -capability _GLSL_330
+//TEST:SIMPLE(filecheck=CHECK_METAL): -target cpp -entry main -stage compute -capability image_loadstore
+//TEST:SIMPLE(filecheck=CHECK_WILL_ERROR1): -target glsl -entry main -stage compute -capability image_loadstore -DWILL_ERROR1
+//TEST:SIMPLE(filecheck=CHECK_WILL_ERROR2): -target glsl -entry main -stage compute -capability _GLSL_130 -DWILL_ERROR2
+//TEST:SIMPLE(filecheck=CHECK_GLSL3): -target glsl -entry main -stage compute -capability _GLSL_130
+
+RWTexture1D<int> tex;
+
+//CHECK_HLSL: {{.*}}21{{.*}};
+//CHECK_GLSL1: {{.*}}13{{.*}}
+//CHECK_GLSL2: {{.*}}11{{.*}}
+//CHECK_METAL: {{.*}}30{{.*}}
+//CHECK_WILL_ERROR1: error 36109
+//CHECK_WILL_ERROR2: error 41011
+//CHECK_GLSL3: {{.*}}30{{.*}}
+
+int specialize()
+{
+ __target_switch
+ {
+ case spirv_1_0:
+ return 1;
+ case spirv_1_1:
+ return 2;
+ case spirv_1_2:
+ return 3;
+
+ case _GLSL_150:
+ return 10;
+ case _GLSL_330:
+ return 11;
+ case _GLSL_400:
+ return 12;
+ case _GLSL_410:
+ return 13;
+#ifdef WILL_ERROR1
+ case image_loadstore:
+ return 14;
+#endif
+ case _sm_5_0:
+ return 20;
+ case _sm_5_1:
+ return 21;
+ case _sm_6_0:
+ return 21;
+#ifndef WILL_ERROR2
+ default:
+ return 30;
+#endif
+ }
+}
+
+[numthreads(1,1,1)]
+void main()
+{
+ tex[0] = specialize();
+}