11// RUN: %dxc -T cs_6_0 -E main -fspv-target-env=vulkan1.1 -fcgl %s -spirv | FileCheck %s --check-prefixes=CHECK,QUAD
2- // RUN: %dxc -T cs_6_0 -E main -fspv-target-env=vulkan1.1 -fspv-extension=SPV_KHR_16bit_storage -fcgl %s -spirv | FileCheck %s --check-prefixes=CHECK,NOQUAD
2+ // RUN: %dxc -T cs_6_0 -E main -fspv-target-env=vulkan1.1 -fspv-extension=SPV_KHR_16bit_storage -fspv-extension=SPV_KHR_compute_shader_derivatives - fcgl %s -spirv | FileCheck %s --check-prefixes=CHECK,NOQUAD
33// RUN: not %dxc -T cs_6_0 -E main -fspv-target-env=vulkan1.0 -fcgl %s -spirv 2>&1 | FileCheck %s --check-prefixes=ERROR
44
55// CHECK: ; Version: 1.3
66
7- // QUAD: OpCapability QuadControlKHR
7+ // CHECK-DAG: OpCapability ComputeDerivativeGroupQuadsKHR
8+ // CHECK-DAG: OpCapability ComputeDerivativeGroupLinearKHR
9+ // QUAD-DAG: OpCapability QuadControlKHR
10+
811// QUAD: OpExtension "SPV_KHR_quad_control"
912
13+ // CHECK: OpExecutionMode %main DerivativeGroupLinearKHR
14+
1015RWStructuredBuffer <float3 > values;
1116
1217[numthreads (32 , 1 , 1 )]
@@ -23,7 +28,7 @@ void main(uint3 id: SV_DispatchThreadID) {
2328// NOQUAD-NEXT: [[inv2:%[0-9]+]] = OpGroupNonUniformQuadSwap %bool %uint_3 [[val1]] %uint_2
2429// NOQUAD-NEXT: [[or2:%[0-9]+]] = OpLogicalOr %bool [[or1]] [[inv2]]
2530
26- // ERROR: 27 :24: error: Vulkan 1.1 is required for Wave Operation but not permitted to use
31+ // ERROR: 32 :24: error: Vulkan 1.1 is required for Wave Operation but not permitted to use
2732 values[outIdx].x = QuadAny (outIdx % 4 == 0 ) ? 1.0 : 2.0 ;
2833
2934// CHECK: [[val2:%[0-9]+]] = OpIEqual %bool {{%[0-9]+}}
@@ -36,6 +41,6 @@ void main(uint3 id: SV_DispatchThreadID) {
3641// NOQUAD-NEXT: [[inv2:%[0-9]+]] = OpGroupNonUniformQuadSwap %bool %uint_3 [[val2]] %uint_2
3742// NOQUAD-NEXT: [[or2:%[0-9]+]] = OpLogicalAnd %bool [[or1]] [[inv2]]
3843
39- // ERROR: 40 :24: error: Vulkan 1.1 is required for Wave Operation but not permitted to use
44+ // ERROR: 45 :24: error: Vulkan 1.1 is required for Wave Operation but not permitted to use
4045 values[outIdx].y = QuadAll (outIdx % 2 == 0 ) ? 3.0 : 4.0 ;
4146}
0 commit comments