diff options
Diffstat (limited to 'tests/language-feature/capability')
5 files changed, 67 insertions, 12 deletions
diff --git a/tests/language-feature/capability/capability1.slang b/tests/language-feature/capability/capability1.slang index b340f5025..76bbd534f 100644 --- a/tests/language-feature/capability/capability1.slang +++ b/tests/language-feature/capability/capability1.slang @@ -15,7 +15,7 @@ void caller() } [require(spirv, shaderclock)] -// CHECK: ([[# @LINE+1]]): error 36104: +// CHECK: error 36104: void main1() { caller(); // Error, shaderclock does not imply spvShaderNonUniform. @@ -25,6 +25,5 @@ void main1() [require(spirv, shaderclock)] void main2() { - // CHECK-NOT: error leafFunc1(); // OK, shaderclock implies spvShaderClockKHR. } diff --git a/tests/language-feature/capability/capability2.slang b/tests/language-feature/capability/capability2.slang index b66da4563..6125c21d3 100644 --- a/tests/language-feature/capability/capability2.slang +++ b/tests/language-feature/capability/capability2.slang @@ -39,19 +39,16 @@ struct Impl1 : IFoo } } -// CHECK-NOT: error 361 - struct Impl2 : IFoo { - // CHECK: ([[# @LINE+1]]): error 36104: {{.*}}spvGroupNonUniformArithmetic + // CHECK: error 36104: {{.*}}spvGroupNonUniformArithmetic void method1() { useRayQueryKHR(); // OK. useNonUniformArithmetic(); // error. } - // CHECK-NOT: error 361 - // CHECK: ([[# @LINE+1]]): error 36104: {{.*}}spvGroupNonUniformArithmetic + // CHECK: error 36104: {{.*}}spvGroupNonUniformArithmetic void method2() { useAtomicFloat16(); diff --git a/tests/language-feature/capability/capability3.slang b/tests/language-feature/capability/capability3.slang index 96c07a51f..67099a1da 100644 --- a/tests/language-feature/capability/capability3.slang +++ b/tests/language-feature/capability/capability3.slang @@ -9,7 +9,7 @@ module test; RWStructuredBuffer<int> sideEffect; -// CHECK: error 36104 +// CHECK: error {{(36107|36108)}} [require(glsl, _sm_4_0)] public void use1() { @@ -28,7 +28,7 @@ void use2Sub() sideEffect[1] = 1; } } -// CHECK: error 36108 +// CHECK: error {{(36107|36108)}} [require(spirv, spirv_1_0)] public void use2() { diff --git a/tests/language-feature/capability/capability4.slang b/tests/language-feature/capability/capability4.slang index f6ee30339..4a2a6f3c9 100644 --- a/tests/language-feature/capability/capability4.slang +++ b/tests/language-feature/capability/capability4.slang @@ -1,23 +1,23 @@ //TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -entry main -stage compute //TEST:SIMPLE(filecheck=CHECK_IGNORE_CAPS): -target spirv -emit-spirv-directly -entry main -stage compute -ignore-capabilities -// CHECK_IGNORE_CAPS-NOT: error 36108 +// CHECK_IGNORE_CAPS-NOT: error 36104 // Check that a non-static member method implictly requires capabilities // defined in ThisType. +//CHECK: error 36108: {{.*}} 'glsl'. +//CHECK: note: see using of 'Type' [require(hlsl)] struct Type { int member; [require(glsl)] [mutating] - // CHECK: ([[# @LINE+1]]): error 36108: void f() { } [require(glsl)] - // CHECK-NOT: ([[# @LINE+1]]): error 36108: static void f1() { } 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(); +} |
