res_select2.hlsl 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // RUN: %dxc -T lib_6_3 -auto-binding-space 11 -default-linkage external %s | FileCheck %s
  2. // Make sure index allocas are present for each dim of global resource
  3. // This handles local resource array with dynamic indexing
  4. // CHECK: alloca [6 x i32]
  5. // CHECK: alloca [6 x i32]
  6. // CHECK: alloca [6 x i32]
  7. // Make sure no phi/select of resource or handle in lib.
  8. // CHECK-NOT: phi %"class.
  9. // CHECK-NOT: phi %dx.types.Handle
  10. // CHECK-NOT: select i1 %{{[^,]+}}, %"class.
  11. // CHECK-NOT: select i1 %{{[^,]+}}, %dx.types.Handle
  12. // CHECK: ret <4 x float>
  13. RWBuffer<float4> BufArray[2][2][3];
  14. float4 test(int i, int j, int m) {
  15. RWBuffer<float4> a = BufArray[m][0][0];
  16. RWBuffer<float4> b = BufArray[0][m][1];
  17. RWBuffer<float4> c = BufArray[0][1][m];
  18. RWBuffer<float4> bufarr[2][3] = BufArray[m];
  19. RWBuffer<float4> buf = c;
  20. while (i > 9) {
  21. while (j < 4) {
  22. if (i < m)
  23. buf = b;
  24. else
  25. bufarr[i%2][j%3] = buf;
  26. buf[j] = i;
  27. j++;
  28. }
  29. if (m > j)
  30. buf = a;
  31. buf[m] = i;
  32. i--;
  33. }
  34. buf[i] = j;
  35. bufarr[m%2][j%3][j] = m;
  36. return j;
  37. }