op.tbuffer.access.hlsl 1.2 KB

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