switch3.hlsl 578 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // RUN: %fxc /T ps_5_0 %s /Fo %t.dxbc
  2. // RUN: %dxbc2dxil %t.dxbc /emit-llvm /o %t.ll.converted
  3. // RUN: fc %b.ref %t.ll.converted
  4. float main(float2 a : A, int3 b : B) : SV_Target
  5. {
  6. float r;
  7. switch(b.x)
  8. {
  9. case 1:
  10. r = 5.f;
  11. switch(b.y)
  12. {
  13. case 20:
  14. r = 5.5f;
  15. [branch]
  16. if(b.z == 30)
  17. break;
  18. r = 5.7f;
  19. [flatten]
  20. if(b.z == 31)
  21. break;
  22. r = 5.8f;
  23. break;
  24. default:
  25. r = a.y;
  26. break;
  27. }
  28. break;
  29. case 2:
  30. r = a.x;
  31. break;
  32. default:
  33. r = 3.f;
  34. break;
  35. }
  36. return r;
  37. }