res_select2_x.hlsl 788 B

12345678910111213141516171819202122232425262728293031323334
  1. // RUN: %dxc -T lib_6_x -auto-binding-space 11 %s | FileCheck %s
  2. // lib_6_x does not reduce phi/select of resource or handle in lib.
  3. // CHECK: phi %"class.RWBuffer
  4. // CHECK: select i1 %{{[^,]+}}, %"class.
  5. // CHECK: ret <4 x float>
  6. RWBuffer<float4> BufArray[2][2][3];
  7. float4 test(int i, int j, int m) {
  8. RWBuffer<float4> a = BufArray[m][0][0];
  9. RWBuffer<float4> b = BufArray[0][m][1];
  10. RWBuffer<float4> c = BufArray[0][1][m];
  11. RWBuffer<float4> bufarr[2][3] = BufArray[m];
  12. RWBuffer<float4> buf = c;
  13. while (i > 9) {
  14. while (j < 4) {
  15. if (i < m)
  16. buf = b;
  17. else
  18. bufarr[i%2][j%3] = buf;
  19. buf[j] = i;
  20. j++;
  21. }
  22. if (m > j)
  23. buf = a;
  24. buf[m] = i;
  25. i--;
  26. }
  27. buf[i] = j;
  28. bufarr[m%2][j%3][j] = m;
  29. return j;
  30. }