From f9bcad35562c1f08638e6d3eb397d370d7d2f8f8 Mon Sep 17 00:00:00 2001 From: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> Date: Fri, 19 Apr 2024 23:18:40 -0400 Subject: Initial pass to add capability declarations to stdlib intrinsics. (#3912) --- .../cpp-target-has-cpp-impl-from-default.slang | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang (limited to 'tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang') diff --git a/tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang b/tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang new file mode 100644 index 000000000..46ffaf2a7 --- /dev/null +++ b/tests/language-feature/capability/cpp-target-has-cpp-impl-from-default.slang @@ -0,0 +1,32 @@ +//TEST:SIMPLE(filecheck=CHECK): -target cpp -entry computeMain -stage compute -allow-glsl + +// CHECK: computeMain( + +layout(binding = 0) buffer MyBlockName +{ + int v[1]; +} outputBuffer; + +// `default` only should try to define `glsl`, but glsl target is +// present in a `case` statment. Therefore this code should error +// since cpp is missing a target for a function called +[require(cpp_glsl)] +void someInternalFunc() +{ + __target_switch + { + case glsl: + outputBuffer.v[0] = 0; + default: + outputBuffer.v[0] = 0; + } +} +void someMin() +{ + someInternalFunc(); +} +[numthreads(1,1,1)] +void computeMain() +{ + someMin(); +} -- cgit v1.2.3