op.constant-buffer.access.hlsl 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Run: %dxc -T vs_6_0 -E main
  2. struct S {
  3. float f;
  4. };
  5. struct T {
  6. float a;
  7. float2 b;
  8. float3x4 c;
  9. S s;
  10. float t[4];
  11. };
  12. ConstantBuffer<T> MyCbuffer : register(b1);
  13. float main() : A {
  14. // CHECK: [[a:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyCbuffer %int_0
  15. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[a]]
  16. // CHECK: [[b:%\d+]] = OpAccessChain %_ptr_Uniform_v2float %MyCbuffer %int_1
  17. // CHECK-NEXT: [[b0:%\d+]] = OpAccessChain %_ptr_Uniform_float [[b]] %int_0
  18. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[b0]]
  19. // CHECK: [[c12:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyCbuffer %int_2 %uint_1 %uint_2
  20. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[c12]]
  21. // CHECK: [[s:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyCbuffer %int_3 %int_0
  22. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[s]]
  23. // CHECK: [[t:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyCbuffer %int_4 %int_3
  24. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[t]]
  25. return MyCbuffer.a + MyCbuffer.b.x + MyCbuffer.c[1][2] + MyCbuffer.s.f + MyCbuffer.t[3];
  26. }