op.texture-buffer.access.hlsl 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. TextureBuffer<T> MyTB : register(t1);
  13. TextureBuffer<T> MyTBArray[5] : register(t2);
  14. float main() : A {
  15. // CHECK: [[a:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyTB %int_0
  16. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[a]]
  17. // CHECK: [[b:%\d+]] = OpAccessChain %_ptr_Uniform_v2float %MyTB %int_1
  18. // CHECK-NEXT: [[b0:%\d+]] = OpAccessChain %_ptr_Uniform_float [[b]] %int_0
  19. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[b0]]
  20. // CHECK: [[c12:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyTB %int_2 %uint_1 %uint_2
  21. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[c12]]
  22. // CHECK: [[s:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyTB %int_3 %int_0
  23. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[s]]
  24. // CHECK: [[t:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyTB %int_4 %int_3
  25. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[t]]
  26. return MyTB.a + MyTB.b.x + MyTB.c[1][2] + MyTB.s.f + MyTB.t[3] +
  27. // CHECK: [[a:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyTBArray %int_4 %int_0
  28. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[a]]
  29. // CHECK: [[b:%\d+]] = OpAccessChain %_ptr_Uniform_v2float %MyTBArray %int_3 %int_1
  30. // CHECK-NEXT: [[b0:%\d+]] = OpAccessChain %_ptr_Uniform_float [[b]] %int_0
  31. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[b0]]
  32. // CHECK: [[c12:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyTBArray %int_2 %int_2 %uint_1 %uint_2
  33. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[c12]]
  34. // CHECK: [[s:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyTBArray %int_1 %int_3 %int_0
  35. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[s]]
  36. // CHECK: [[t:%\d+]] = OpAccessChain %_ptr_Uniform_float %MyTBArray %int_0 %int_4 %int_3
  37. // CHECK-NEXT: {{%\d+}} = OpLoad %float [[t]]
  38. MyTBArray[4].a + MyTBArray[3].b.x + MyTBArray[2].c[1][2] + MyTBArray[1].s.f + MyTBArray[0].t[3];
  39. }