cs.groupshared.hlsl 1.2 KB

1234567891011121314151617181920212223242526272829303132
  1. // Run: %dxc -T cs_6_0 -E main
  2. struct S {
  3. float f1;
  4. float3 f2;
  5. };
  6. // CHECK-NOT: OpDecorate %a DescriptorSet
  7. // CHECK-NOT: OpDecorate %b DescriptorSet
  8. // CHECK-NOT: OpDecorate %c DescriptorSet
  9. // CHECK-NOT: OpDecorate %d DescriptorSet
  10. // CHECK-NOT: OpDecorate %s DescriptorSet
  11. // CHECK: %a = OpVariable %_ptr_Workgroup_float Workgroup
  12. groupshared float a;
  13. // CHECK: %b = OpVariable %_ptr_Workgroup_v3float Workgroup
  14. static groupshared float3 b; // Ignore static modifier
  15. // CHECK: %c = OpVariable %_ptr_Workgroup_mat2v3float Workgroup
  16. groupshared column_major float2x3 c;
  17. // CHECK: %d = OpVariable %_ptr_Workgroup__arr_v2float_uint_5 Workgroup
  18. groupshared float2 d[5];
  19. // CHECK: %s = OpVariable %_ptr_Workgroup_S Workgroup
  20. groupshared S s;
  21. [numthreads(8, 8, 8)]
  22. void main(uint3 tid : SV_DispatchThreadID, uint2 gid : SV_GroupID) {
  23. // Make sure pointers have the correct storage class
  24. // CHECK: {{%\d+}} = OpAccessChain %_ptr_Workgroup_float %s %int_0
  25. // CHECK: [[d0:%\d+]] = OpAccessChain %_ptr_Workgroup_v2float %d %int_0
  26. // CHECK: {{%\d+}} = OpAccessChain %_ptr_Workgroup_float [[d0]] %int_1
  27. d[0].y = s.f1;
  28. }