Advertisement
Willem142

20190709-BoundingBoxAssembly

Jul 9th, 2019
357
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.71 KB | None | 0 0
  1. .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3062.0
  2. Raytracer2.Benchmarking.BoundingBoxTest.Intersection()
  3. for (int j = 0, l = n; j < l; j++)
  4. ^^^^^^^^^
  5. xor edi,edi
  6. for (int j = 0, l = n; j < l; j++)
  7. ^^^^^
  8. mov ebx,dword ptr [rsi+18h]
  9. for (int j = 0, l = n; j < l; j++)
  10. ^^^^^
  11. test ebx,ebx
  12. jle M00_L01
  13. lea rbp,[rsi+20h]
  14. bb.CollidesWith(rs[j], out t);
  15. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  16. M00_L00
  17.  
  18. mov rcx,rbp
  19. mov rdx,qword ptr [rsi+8]
  20. cmp edi,dword ptr [rdx+8]
  21. jae 00007ffe`3aa55fec
  22. movsxd r8,edi
  23. lea r8,[r8+r8*4]
  24. lea rdx,[rdx+r8*4+10h]
  25. vmovdqu xmm0,xmmword ptr [rdx]
  26. vmovdqu xmmword ptr [rsp+28h],xmm0
  27. mov r8d,dword ptr [rdx+10h]
  28. mov dword ptr [rsp+38h],r8d
  29. lea rdx,[rsp+28h]
  30. lea r8,[rsp+44h]
  31. call Raytracer2.Acceleration.BoundingBox.CollidesWith(Raytracer2.Primitives.Infinite.Ray, Single ByRef)
  32. for (int j = 0, l = n; j < l; j++)
  33. ^^^
  34. inc edi
  35. cmp edi,ebx
  36. jl M00_L00
  37. }
  38. ^
  39. M00_L01
  40.  
  41. add rsp,48h
  42.  
  43. Raytracer2.Acceleration.BoundingBox.CollidesWith(Raytracer2.Primitives.Infinite.Ray, Single ByRef)
  44. if (tmax < 0)
  45. ^^^^^^^^^^^^^
  46. vxorps xmm1,xmm1,xmm1
  47. vucomiss xmm1,xmm0
  48. jbe M01_L00
  49. t = tmax;
  50. ^^^^^^^^^
  51. vmovss dword ptr [rsi],xmm0
  52. return false;
  53. ^^^^^^^^^^^^^
  54. xor eax,eax
  55. vmovaps xmm6,xmmword ptr [rsp+70h]
  56. vmovaps xmm7,xmmword ptr [rsp+60h]
  57. vmovaps xmm8,xmmword ptr [rsp+50h]
  58. vmovaps xmm9,xmmword ptr [rsp+40h]
  59. vmovaps xmm10,xmmword ptr [rsp+30h]
  60. add rsp,80h
  61. pop rsi
  62. ret
  63. if (tmin > tmax)
  64. ^^^^^^^^^^^^^^^^
  65. M01_L00
  66.  
  67. vmovss xmm1,dword ptr [rsp+2Ch]
  68. vucomiss xmm1,xmm0
  69. jbe M01_L01
  70. t = tmax;
  71. ^^^^^^^^^
  72. vmovss dword ptr [rsi],xmm0
  73. return false;
  74. ^^^^^^^^^^^^^
  75. xor eax,eax
  76. vmovaps xmm6,xmmword ptr [rsp+70h]
  77. vmovaps xmm7,xmmword ptr [rsp+60h]
  78. vmovaps xmm8,xmmword ptr [rsp+50h]
  79. vmovaps xmm9,xmmword ptr [rsp+40h]
  80. vmovaps xmm10,xmmword ptr [rsp+30h]
  81. add rsp,80h
  82. pop rsi
  83. ret
  84. t = tmin;
  85. ^^^^^^^^^
  86. M01_L01
  87.  
  88. vmovss dword ptr [rsi],xmm1
  89. return true;
  90. ^^^^^^^^^^^^
  91. mov eax,1
  92.  
  93. .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3062.0
  94. Raytracer2.Benchmarking.BoundingBoxTest.IntersectionPacked()
  95. for (int j = 0, l = n / 8; j < l; j++)
  96. ^^^^^^^^^
  97. xor edi,edi
  98. for (int j = 0, l = n / 8; j < l; j++)
  99. ^^^^^^^^^
  100. mov ecx,dword ptr [rsi+18h]
  101. mov edx,ecx
  102. sar edx,1Fh
  103. and edx,7
  104. add edx,ecx
  105. mov ebx,edx
  106. sar ebx,3
  107. for (int j = 0, l = n / 8; j < l; j++)
  108. ^^^^^
  109. test ebx,ebx
  110. jle M00_L01
  111. lea rbp,[rsi+38h]
  112. bbp.CollidesWith(ref rps[j], out t);
  113. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  114. M00_L00
  115.  
  116. mov rcx,rbp
  117. lea rdx,[rsp+20h]
  118. mov r8,qword ptr [rsi+10h]
  119. cmp edi,dword ptr [r8+8]
  120. jae 00007ffe`3aa66235
  121. movsxd r9,edi
  122. imul r9,r9,0A0h
  123. lea r8,[r8+r9+10h]
  124. lea r9,[rsp+40h]
  125. call Raytracer2.Acceleration.BoundingBoxPack.CollidesWith(Raytracer2.Primitives.Infinite.RayPack ByRef, System.Numerics.Vector`1 ByRef)
  126. for (int j = 0, l = n / 8; j < l; j++)
  127. ^^^
  128. inc edi
  129. cmp edi,ebx
  130. jl M00_L00
  131. }
  132. ^
  133. M00_L01
  134.  
  135. add rsp,78h
  136.  
  137. Raytracer2.Acceleration.BoundingBoxPack.CollidesWith(Raytracer2.Primitives.Infinite.RayPack ByRef, System.Numerics.Vector`1 ByRef)
  138. Vector dirfracx = Constants.ones / ray.direction.x;
  139. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  140. mov rax,qword ptr [13305D08h]
  141. add rax,8
  142. vmovupd ymm0,ymmword ptr [rax]
  143. vmovupd ymm1,ymmword ptr [r8+40h]
  144. vdivps ymm0,ymm0,ymm1
  145. Vector dirfracy = Constants.ones / ray.direction.y;
  146. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  147. vmovupd ymm1,ymmword ptr [rax]
  148. vmovupd ymm2,ymmword ptr [r8+60h]
  149. vdivps ymm1,ymm1,ymm2
  150. Vector t1 = (this.rx.min - ray.origin.x) * dirfracx;
  151. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  152. vmovupd ymm2,ymmword ptr [rcx]
  153. vmovupd ymm3,ymmword ptr [r8]
  154. vsubps ymm2,ymm2,ymm3
  155. vmulps ymm2,ymm2,ymm0
  156. vmovupd ymm3,ymmword ptr [rcx+20h]
  157. vmovupd ymm4,ymmword ptr [r8]
  158. vsubps ymm3,ymm3,ymm4
  159. vmulps ymm0,ymm3,ymm0
  160. vmovupd ymm3,ymmword ptr [rcx+40h]
  161. vmovupd ymm4,ymmword ptr [r8+20h]
  162. vsubps ymm3,ymm3,ymm4
  163. vmulps ymm3,ymm3,ymm1
  164. vmovupd ymm4,ymmword ptr [rcx+60h]
  165. vmovupd ymm5,ymmword ptr [r8+20h]
  166. vsubps ymm4,ymm4,ymm5
  167. vmulps ymm1,ymm4,ymm1
  168. vminps ymm4,ymm2,ymm0
  169. vminps ymm5,ymm3,ymm1
  170. vmaxps ymm4,ymm4,ymm5
  171. vmaxps ymm2,ymm2,ymm0
  172. vmaxps ymm3,ymm3,ymm1
  173. vminps ymm0,ymm2,ymm3
  174. Vector lessThanZeroMask = Vector.GreaterThan(tmax, Constants.zeros);
  175. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  176. vmovaps ymm1,ymm4
  177. vcmpltps ymm1,ymm1,ymm0
  178. mov rax,qword ptr [13305D10h]
  179. vmovupd ymm2,ymmword ptr [rax+8]
  180. vcmpltps ymm2,ymm2,ymm0
  181. vpor ymm0,ymm2,ymm1
  182. t = Vector.ConditionalSelect(combinedMask, tmin, Constants.floatMax);
  183. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  184. vpand ymm4,ymm4,ymm0
  185. mov rax,qword ptr [13305D28h]
  186. vmovupd ymm1,ymmword ptr [rax+8]
  187. vpandn ymm2,ymm0,ymm1
  188. vpor ymm4,ymm4,ymm2
  189. vmovupd ymmword ptr [r9],ymm4
  190. return combinedMask;
  191. ^^^^^^^^^^^^^^^^^^^^
  192. vmovupd ymmword ptr [rdx],ymm0
  193. mov rax,rdx
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement