gs2.ref 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. %dx.types.Handle = type { i8* }
  2. %dx.types.CBufRet.i32 = type { i32, i32, i32, i32 }
  3. %dx.types.i8x16 = type { [16 x i8] }
  4. define void @main() {
  5. entry:
  6. %0 = call %dx.types.Handle @dx.op.createHandle(i32 57, i8 2, i32 0, i32 0, i1 false)
  7. %1 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 0)
  8. %2 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 0)
  9. %3 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 0)
  10. %4 = fptoui float %1 to i32
  11. %5 = fptoui float %2 to i32
  12. %6 = fptoui float %3 to i32
  13. %7 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 0)
  14. %8 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 0)
  15. %9 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 0)
  16. %10 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 3, i32 0)
  17. %11 = fmul fast float 4.400000e+01, %7
  18. %12 = fmul fast float 4.400000e+01, %8
  19. %13 = fmul fast float 4.400000e+01, %9
  20. %14 = fmul fast float 4.400000e+01, %10
  21. %15 = call %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32 59, %dx.types.Handle %0, i32 0)
  22. %16 = extractvalue %dx.types.CBufRet.i32 %15, 0
  23. %17 = icmp ne i32 %16, 0
  24. br i1 %17, label %if0.then, label %if0.else
  25. if0.then: ; preds = %entry
  26. %18 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 0)
  27. %19 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 0)
  28. %20 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 0)
  29. %21 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 3, i32 0)
  30. %22 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 0)
  31. %23 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 0)
  32. call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 0, float %18)
  33. call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 1, float %19)
  34. call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 2, float %20)
  35. call void @dx.op.storeOutput.f32(i32 5, i32 0, i32 0, i8 3, float %21)
  36. call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 0, float %22)
  37. call void @dx.op.storeOutput.f32(i32 5, i32 1, i32 0, i8 1, float %23)
  38. call void @dx.op.emitStream(i32 97, i8 0)
  39. call void @dx.op.cutStream(i32 98, i8 0)
  40. %24 = call float @dx.op.bitcastI32toF32(i32 126, i32 %4)
  41. br label %if0.end
  42. if0.else: ; preds = %entry
  43. %25 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 3, i32 0)
  44. %26 = fptoui float %25 to i32
  45. %27 = call float @dx.op.bitcastI32toF32(i32 126, i32 %26)
  46. %28 = call float @dx.op.bitcastI32toF32(i32 126, i32 0)
  47. %29 = call float @dx.op.bitcastI32toF32(i32 126, i32 0)
  48. %30 = call float @dx.op.bitcastI32toF32(i32 126, i32 0)
  49. %31 = call float @dx.op.bitcastI32toF32(i32 126, i32 0)
  50. call void @dx.op.storeOutput.i32(i32 5, i32 2, i32 0, i8 0, i32 %26)
  51. call void @dx.op.storeOutput.i32(i32 5, i32 2, i32 0, i8 1, i32 %5)
  52. call void @dx.op.storeOutput.i32(i32 5, i32 2, i32 0, i8 2, i32 %6)
  53. call void @dx.op.storeOutput.f32(i32 5, i32 3, i32 0, i8 0, float 0.000000e+00)
  54. call void @dx.op.storeOutput.f32(i32 5, i32 3, i32 0, i8 1, float 0.000000e+00)
  55. call void @dx.op.storeOutput.f32(i32 5, i32 3, i32 0, i8 2, float 0.000000e+00)
  56. call void @dx.op.storeOutput.f32(i32 5, i32 3, i32 0, i8 3, float 0.000000e+00)
  57. call void @dx.op.storeOutput.f32(i32 5, i32 4, i32 0, i8 0, float %28)
  58. call void @dx.op.storeOutput.f32(i32 5, i32 4, i32 0, i8 1, float %29)
  59. call void @dx.op.storeOutput.f32(i32 5, i32 4, i32 0, i8 2, float %30)
  60. call void @dx.op.storeOutput.f32(i32 5, i32 4, i32 0, i8 3, float %31)
  61. call void @dx.op.storeOutput.f32(i32 5, i32 5, i32 0, i8 0, float %11)
  62. call void @dx.op.storeOutput.f32(i32 5, i32 5, i32 0, i8 1, float %12)
  63. call void @dx.op.storeOutput.f32(i32 5, i32 5, i32 0, i8 2, float %13)
  64. call void @dx.op.storeOutput.f32(i32 5, i32 5, i32 0, i8 3, float %14)
  65. call void @dx.op.storeOutput.i32(i32 5, i32 6, i32 0, i8 0, i32 %4)
  66. call void @dx.op.storeOutput.i32(i32 5, i32 6, i32 0, i8 1, i32 %5)
  67. call void @dx.op.storeOutput.i32(i32 5, i32 6, i32 0, i8 2, i32 %6)
  68. call void @dx.op.emitStream(i32 97, i8 1)
  69. call void @dx.op.cutStream(i32 98, i8 1)
  70. br label %if0.end
  71. if0.end: ; preds = %if0.else, %if0.then
  72. %dx.v32.r3.0 = phi float [ %24, %if0.then ], [ %27, %if0.else ]
  73. %32 = call float @dx.op.bitcastI32toF32(i32 126, i32 0)
  74. %33 = call float @dx.op.bitcastI32toF32(i32 126, i32 0)
  75. %34 = call float @dx.op.bitcastI32toF32(i32 126, i32 0)
  76. %35 = call float @dx.op.bitcastI32toF32(i32 126, i32 0)
  77. %36 = call i32 @dx.op.bitcastF32toI32(i32 127, float %dx.v32.r3.0)
  78. call void @dx.op.storeOutput.i32(i32 5, i32 2, i32 0, i8 0, i32 %36)
  79. call void @dx.op.storeOutput.i32(i32 5, i32 2, i32 0, i8 1, i32 %5)
  80. call void @dx.op.storeOutput.i32(i32 5, i32 2, i32 0, i8 2, i32 %6)
  81. call void @dx.op.storeOutput.f32(i32 5, i32 3, i32 0, i8 0, float 0.000000e+00)
  82. call void @dx.op.storeOutput.f32(i32 5, i32 3, i32 0, i8 1, float 0.000000e+00)
  83. call void @dx.op.storeOutput.f32(i32 5, i32 3, i32 0, i8 2, float 0.000000e+00)
  84. call void @dx.op.storeOutput.f32(i32 5, i32 3, i32 0, i8 3, float 0.000000e+00)
  85. call void @dx.op.storeOutput.f32(i32 5, i32 4, i32 0, i8 0, float %32)
  86. call void @dx.op.storeOutput.f32(i32 5, i32 4, i32 0, i8 1, float %33)
  87. call void @dx.op.storeOutput.f32(i32 5, i32 4, i32 0, i8 2, float %34)
  88. call void @dx.op.storeOutput.f32(i32 5, i32 4, i32 0, i8 3, float %35)
  89. call void @dx.op.storeOutput.f32(i32 5, i32 5, i32 0, i8 0, float %11)
  90. call void @dx.op.storeOutput.f32(i32 5, i32 5, i32 0, i8 1, float %12)
  91. call void @dx.op.storeOutput.f32(i32 5, i32 5, i32 0, i8 2, float %13)
  92. call void @dx.op.storeOutput.f32(i32 5, i32 5, i32 0, i8 3, float %14)
  93. call void @dx.op.storeOutput.i32(i32 5, i32 6, i32 0, i8 0, i32 %4)
  94. call void @dx.op.storeOutput.i32(i32 5, i32 6, i32 0, i8 1, i32 %5)
  95. call void @dx.op.storeOutput.i32(i32 5, i32 6, i32 0, i8 2, i32 %6)
  96. call void @dx.op.emitStream(i32 97, i8 1)
  97. call void @dx.op.cutStream(i32 98, i8 1)
  98. %37 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 0)
  99. %38 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 0)
  100. %39 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 2, i32 0)
  101. %40 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 3, i32 0)
  102. %41 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 0, i32 0)
  103. %42 = call float @dx.op.loadInput.f32(i32 4, i32 0, i32 0, i8 1, i32 0)
  104. call void @dx.op.storeOutput.f32(i32 5, i32 7, i32 0, i8 0, float %37)
  105. call void @dx.op.storeOutput.f32(i32 5, i32 7, i32 0, i8 1, float %38)
  106. call void @dx.op.storeOutput.f32(i32 5, i32 7, i32 0, i8 2, float %39)
  107. call void @dx.op.storeOutput.f32(i32 5, i32 7, i32 0, i8 3, float %40)
  108. call void @dx.op.storeOutput.f32(i32 5, i32 8, i32 0, i8 0, float %41)
  109. call void @dx.op.storeOutput.f32(i32 5, i32 8, i32 0, i8 1, float %42)
  110. call void @dx.op.emitStream(i32 97, i8 2)
  111. call void @dx.op.cutStream(i32 98, i8 2)
  112. ret void
  113. }
  114. ; Function Attrs: nounwind readonly
  115. declare %dx.types.Handle @dx.op.createHandle(i32, i8, i32, i32, i1) #0
  116. ; Function Attrs: nounwind readnone
  117. declare float @dx.op.loadInput.f32(i32, i32, i32, i8, i32) #1
  118. ; Function Attrs: nounwind
  119. declare void @dx.op.tempRegStore.i32(i32, i32, i32) #2
  120. ; Function Attrs: nounwind
  121. declare void @dx.op.tempRegStore.f32(i32, i32, float) #2
  122. ; Function Attrs: nounwind readonly
  123. declare %dx.types.CBufRet.i32 @dx.op.cbufferLoadLegacy.i32(i32, %dx.types.Handle, i32) #0
  124. ; Function Attrs: nounwind readonly
  125. declare float @dx.op.tempRegLoad.f32(i32, i32) #0
  126. ; Function Attrs: nounwind
  127. declare void @dx.op.storeOutput.f32(i32, i32, i32, i8, float) #2
  128. ; Function Attrs: nounwind
  129. declare void @dx.op.emitStream(i32, i8) #2
  130. ; Function Attrs: nounwind
  131. declare void @dx.op.cutStream(i32, i8) #2
  132. ; Function Attrs: nounwind readonly
  133. declare i32 @dx.op.tempRegLoad.i32(i32, i32) #0
  134. ; Function Attrs: nounwind
  135. declare void @dx.op.storeOutput.i32(i32, i32, i32, i8, i32) #2
  136. ; Function Attrs: nounwind readnone
  137. declare i32 @dx.op.bitcastF32toI32(i32, float) #1
  138. ; Function Attrs: nounwind readnone
  139. declare float @dx.op.bitcastI32toF32(i32, i32) #1
  140. attributes #0 = { nounwind readonly }
  141. attributes #1 = { nounwind readnone }
  142. attributes #2 = { nounwind }
  143. !dx.version = !{!0}
  144. !dx.valver = !{!0}
  145. !dx.shaderModel = !{!1}
  146. !dx.resources = !{!2}
  147. !dx.entryPoints = !{!5}
  148. !llvm.ident = !{!26}
  149. !0 = !{i32 1, i32 0}
  150. !1 = !{!"gs", i32 6, i32 0}
  151. !2 = !{null, null, !3, null}
  152. !3 = !{!4}
  153. !4 = !{i32 0, %dx.types.i8x16 addrspace(2)* undef, !"CB0", i32 0, i32 0, i32 1, i32 16, null}
  154. !5 = !{void ()* @main, !"main", !6, !2, !24}
  155. !6 = !{!7, !10, null}
  156. !7 = !{!8}
  157. !8 = !{i32 0, !"COORD", i8 9, i8 0, !9, i8 0, i32 1, i8 4, i32 0, i8 0, null}
  158. !9 = !{i32 0}
  159. !10 = !{!11, !12, !13, !15, !16, !18, !20, !21, !23}
  160. !11 = !{i32 0, !"SV_Position", i8 9, i8 3, !9, i8 0, i32 1, i8 4, i32 0, i8 0, null}
  161. !12 = !{i32 1, !"AAA", i8 9, i8 0, !9, i8 0, i32 1, i8 2, i32 1, i8 0, null}
  162. !13 = !{i32 2, !"XXX", i8 5, i8 0, !9, i8 0, i32 1, i8 3, i32 0, i8 0, !14}
  163. !14 = !{i32 0, i32 1}
  164. !15 = !{i32 3, !"PPP", i8 9, i8 0, !9, i8 0, i32 1, i8 4, i32 1, i8 0, !14}
  165. !16 = !{i32 4, !"PPP", i8 9, i8 0, !17, i8 0, i32 1, i8 4, i32 2, i8 0, !14}
  166. !17 = !{i32 1}
  167. !18 = !{i32 5, !"PPP", i8 9, i8 0, !19, i8 0, i32 1, i8 4, i32 3, i8 0, !14}
  168. !19 = !{i32 2}
  169. !20 = !{i32 6, !"YYY", i8 5, i8 0, !9, i8 0, i32 1, i8 3, i32 4, i8 0, !14}
  170. !21 = !{i32 7, !"SV_Position", i8 9, i8 3, !9, i8 0, i32 1, i8 4, i32 0, i8 0, !22}
  171. !22 = !{i32 0, i32 2}
  172. !23 = !{i32 8, !"AAA", i8 9, i8 0, !9, i8 0, i32 1, i8 2, i32 1, i8 0, !22}
  173. !24 = !{i32 0, i64 256, i32 1, !25}
  174. !25 = !{i32 1, i32 12, i32 7, i32 1, i32 1}
  175. !26 = !{!"dxbc2dxil 1.2"}