hs3.asm 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*// RUN: %testasm %s /Fo %t.dxbc*/
  2. // RUN: %dxbc2dxil %t.dxbc /emit-llvm /o %t.ll.converted
  3. // RUN: fc %b.ref %t.ll.converted
  4. hs_5_0
  5. hs_decls
  6. dcl_input_control_point_count 4
  7. dcl_output_control_point_count 32
  8. dcl_tessellator_domain domain_quad
  9. dcl_tessellator_partitioning partitioning_fractional_odd
  10. dcl_tessellator_output_primitive output_triangle_cw
  11. dcl_hs_max_tessfactor 64.f
  12. hs_control_point_phase
  13. dcl_input v[4][0].xyzw
  14. dcl_input v[4][1].xy
  15. dcl_input v[4][2].xyz
  16. dcl_input vOutputControlPointID
  17. dcl_input vPrim
  18. dcl_output o0.xyzw
  19. dcl_output o1.xy
  20. dcl_output o2.xyz
  21. dcl_temps 1
  22. udiv NULL, r0.x, vOutputControlPointID, 4
  23. mov o0.xyzw, v[r0.x][0].xyzw
  24. mov o1.xy, v[r0.x][1].xyxx
  25. mov o2.xyz, v[r0.x][2].xyzx
  26. hs_fork_phase
  27. dcl_input vcp[4][0].xyzw
  28. dcl_input vcp[4][1].xy
  29. dcl_input vcp[4][2].xyz
  30. dcl_input vocp[32][0].xyzw
  31. dcl_input vocp[32][1].xy
  32. dcl_input vocp[32][2].xyz
  33. dcl_hs_fork_phase_instance_count 4
  34. dcl_input vForkInstanceID
  35. dcl_input vPrim
  36. dcl_indexRange o[0], o[3]
  37. dcl_temps 1
  38. dcl_indexableTemp x0[4], 1
  39. dcl_output_sv o0.x, finalQuadUeq0EdgeTessFactor
  40. dcl_output_sv o1.x, finalQuadVeq0EdgeTessFactor
  41. dcl_output_sv o2.x, finalQuadUeq1EdgeTessFactor
  42. dcl_output_sv o3.x, finalQuadVeq1EdgeTessFactor
  43. mov x0[0].x, 2.0f
  44. mov x0[1].x, 4.0f
  45. mov x0[2].x, 15.0f
  46. mov x0[3].x, 6.0f
  47. mov r0.x, vForkInstanceID
  48. mov o[r0.x].x, x0[r0.x].x
  49. hs_fork_phase
  50. dcl_input vcp[4][0].xyzw
  51. dcl_input vcp[4][1].xy
  52. dcl_input vcp[4][2].xyz
  53. dcl_input vocp[32][0].xyzw
  54. dcl_input vocp[32][1].xy
  55. dcl_input vocp[32][2].xyz
  56. dcl_hs_fork_phase_instance_count 4
  57. dcl_input vForkInstanceID
  58. dcl_input vPrim
  59. dcl_indexRange o[0], o[3]
  60. dcl_temps 1
  61. dcl_indexableTemp x0[4], 1
  62. dcl_output o0.y
  63. dcl_output o1.y
  64. dcl_output o2.y
  65. dcl_output o3.y
  66. mov x0[0].x, 12.0f
  67. mov x0[1].x, 32.0f
  68. mov x0[2].x, 15.0f
  69. mov x0[3].x, 5.0f
  70. mov r0.x, vForkInstanceID
  71. mov o[r0.x].y, x0[r0.x].x
  72. hs_join_phase
  73. dcl_input vcp[4][0].xyzw
  74. dcl_input vcp[4][1].xy
  75. dcl_input vcp[4][2].xyz
  76. dcl_input vocp[32][0].xyzw
  77. dcl_input vocp[32][1].xy
  78. dcl_input vocp[32][2].xyz
  79. dcl_input vpc[0].xy
  80. dcl_input vpc[1].xy
  81. dcl_input vpc[2].xy
  82. dcl_input vpc[3].xy
  83. dcl_indexRange vpc[0], vpc[3]
  84. dcl_output_sv o4.x, finalQuadUInsideTessFactor
  85. dcl_output_sv o5.x, finalQuadVInsideTessFactor
  86. dcl_output o4.y
  87. dcl_output o5.y
  88. dcl_input vPrim
  89. mov o4.x, 12.0f
  90. mov o5.x, 6.0f
  91. mov o4.y, 0.0f
  92. mov o5.y, 0.0f