Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3062.0
- Raytracer2.Benchmarking.CircleTest.Intersection()
- for (int j = 0, l = n; j < l; j++)
- ^^^^^^^^^
- xor edi,edi
- for (int j = 0, l = n; j < l; j++)
- ^^^^^
- mov ebx,dword ptr [rsi+20h]
- for (int j = 0, l = n; j < l; j++)
- ^^^^^
- test ebx,ebx
- jle M00_L01
- rs[j].Intersect(c);
- ^^^^^^^^^^^^^^^^^^^
- M00_L00
- mov rcx,qword ptr [rsi+8]
- cmp edi,dword ptr [rcx+8]
- jae 00007ffe`3aa65f8f
- movsxd rdx,edi
- lea rdx,[rdx+rdx*4]
- lea rcx,[rcx+rdx*4+10h]
- mov rdx,qword ptr [rsi+10h]
- call Raytracer2.Primitives.Infinite.Ray.Intersect(Raytracer2.Primitives.Circle)
- for (int j = 0, l = n; j < l; j++)
- ^^^
- inc edi
- cmp edi,ebx
- jl M00_L00
- }
- ^
- M00_L01
- add rsp,20h
- Raytracer2.Primitives.Infinite.Ray.Intersect(Raytracer2.Primitives.Circle)
- float dx = this.direction.X;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- lea rax,[rsi+8]
- mov rcx,rax
- vmovss xmm1,dword ptr [rcx]
- vmovss xmm2,dword ptr [rsi+4]
- cmp dword ptr [rsi],esi
- vmovss xmm3,dword ptr [rax+4]
- lea rax,[rdx+10h]
- mov rcx,rax
- vmovss xmm4,dword ptr [rcx]
- vmovss xmm5,dword ptr [rax+4]
- vmovss xmm6,dword ptr [rdx+8]
- vsubss xmm0,xmm0,xmm4
- vsubss xmm2,xmm2,xmm5
- float r = 2 * p * dx;
- ^^^^^^^^^^^^^^^^^^^^^
- vmovaps xmm4,xmm2
- vmulss xmm4,xmm4,dword ptr [00007ffe`3aa66110]
- vmulss xmm4,xmm4,xmm3
- vmovaps xmm5,xmm1
- vmulss xmm5,xmm5,xmm1
- vmulss xmm3,xmm3,xmm3
- vaddss xmm3,xmm3,xmm5
- vmovaps xmm5,xmm0
- vmulss xmm5,xmm5,xmm0
- vmulss xmm2,xmm2,xmm2
- vaddss xmm5,xmm5,xmm2
- vmulss xmm6,xmm6,xmm6
- vmovaps xmm2,xmm5
- vsubss xmm2,xmm2,xmm6
- vmulss xmm0,xmm0,dword ptr [00007ffe`3aa66114]
- vmulss xmm0,xmm0,xmm1
- vaddss xmm0,xmm0,xmm4
- vmovaps xmm1,xmm0
- vmulss xmm1,xmm1,xmm0
- vmovaps xmm4,xmm3
- vmulss xmm4,xmm4,dword ptr [00007ffe`3aa66118]
- vmulss xmm4,xmm4,xmm2
- vsubss xmm1,xmm1,xmm4
- vcvtss2sd xmm1,xmm1,xmm1
- vsqrtsd xmm1,xmm0,xmm1
- vcvtsd2ss xmm1,xmm1,xmm1
- vmovss xmm2,dword ptr [00007ffe`3aa6611c]
- vxorps xmm0,xmm0,xmm2
- vmovaps xmm2,xmm0
- vaddss xmm2,xmm2,xmm1
- vmulss xmm3,xmm3,dword ptr [00007ffe`3aa66120]
- vdivss xmm2,xmm2,xmm3
- vsubss xmm0,xmm0,xmm1
- vmovaps xmm1,xmm0
- vdivss xmm1,xmm1,xmm3
- vmovaps xmm0,xmm2
- call System.Math.Min(Single, Single)
- if(ti > 0 && ti < t)
- ^^^^^^^^^^^^^^^^^^^^
- vxorps xmm1,xmm1,xmm1
- vucomiss xmm0,xmm1
- jbe M01_L00
- vmovss xmm1,dword ptr [rsi+10h]
- vucomiss xmm1,xmm0
- jbe M01_L00
- t = ti;
- ^^^^^^^
- vmovss dword ptr [rsi+10h],xmm0
- return true;
- ^^^^^^^^^^^^
- mov eax,1
- vmovaps xmm6,xmmword ptr [rsp+20h]
- add rsp,30h
- pop rsi
- ret
- return false;
- ^^^^^^^^^^^^^
- M01_L00
- xor eax,eax
- .NET Framework 4.7.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.3062.0
- Raytracer2.Benchmarking.CircleTest.IntersectionPacked()
- for (int j = 0, l = n / 8; j < l; j++)
- ^^^^^^^^^
- xor edi,edi
- for (int j = 0, l = n / 8; j < l; j++)
- ^^^^^^^^^
- mov edx,dword ptr [rsi+20h]
- mov ecx,edx
- sar ecx,1Fh
- and ecx,7
- add ecx,edx
- mov ebx,ecx
- sar ebx,3
- for (int j = 0, l = n / 8; j < l; j++)
- ^^^^^
- test ebx,ebx
- jle M00_L01
- lea rbp,[rsi+28h]
- rps[j].Intersect(cp);
- ^^^^^^^^^^^^^^^^^^^^^
- M00_L00
- mov rdx,qword ptr [rsi+18h]
- cmp edi,dword ptr [rdx+8]
- jae 00007ffe`3aa75fd7
- movsxd rcx,edi
- imul rcx,rcx,0A0h
- lea r14,[rdx+rcx+10h]
- lea r15,[rsp+80h]
- lea rcx,[rsp+20h]
- mov rdx,rbp
- mov r8d,60h
- call clr+0x1350
- mov rcx,r14
- mov rdx,r15
- lea r8,[rsp+20h]
- call Raytracer2.Primitives.Infinite.RayPack.Intersect(Raytracer2.Primitives.CirclePack)
- for (int j = 0, l = n / 8; j < l; j++)
- ^^^
- inc edi
- cmp edi,ebx
- jl M00_L00
- }
- ^
- M00_L01
- add rsp,0A8h
- Raytracer2.Primitives.Infinite.RayPack.Intersect(Raytracer2.Primitives.CirclePack)
- Vector zeros = Constants.zeros;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- mov rax,qword ptr [12CC5D10h]
- vmovupd ymm0,ymmword ptr [rax+8]
- Vector twos = Constants.twos;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- mov rax,qword ptr [12CC5D40h]
- vmovupd ymm1,ymmword ptr [rax+8]
- Vector fours = Constants.fours;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- mov rax,qword ptr [12CC5D48h]
- vmovupd ymm2,ymmword ptr [rax+8]
- Vector p = this.origin.x - other.origin.x; ;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- vmovupd ymm3,ymmword ptr [rcx]
- vmovupd ymm4,ymmword ptr [r8]
- vsubps ymm3,ymm3,ymm4
- Vector q = this.origin.y - other.origin.y;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- vmovupd ymm4,ymmword ptr [rcx+20h]
- vmovupd ymm5,ymmword ptr [r8+20h]
- vsubps ymm4,ymm4,ymm5
- Vector r = twos * p * this.direction.x;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- vmulps ymm5,ymm1,ymm3
- vmovupd ymm6,ymmword ptr [rcx+40h]
- vmulps ymm5,ymm5,ymm6
- Vector s = twos * q * this.direction.y; ;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- vmulps ymm6,ymm1,ymm4
- vmovupd ymm7,ymmword ptr [rcx+60h]
- vmulps ymm6,ymm6,ymm7
- Vector a = this.direction.x * this.direction.x + this.direction.y * this.direction.y;
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- vmovupd ymm7,ymmword ptr [rcx+40h]
- vmovupd ymm8,ymmword ptr [rcx+40h]
- vmulps ymm7,ymm7,ymm8
- vmovupd ymm8,ymmword ptr [rcx+60h]
- vmovupd ymm9,ymmword ptr [rcx+60h]
- vmulps ymm8,ymm8,ymm9
- vaddps ymm7,ymm7,ymm8
- Vector b = r + s;
- ^^^^^^^^^^^^^^^^^^^^^^^^
- vmulps ymm3,ymm3,ymm3
- vmulps ymm4,ymm4,ymm4
- vaddps ymm3,ymm3,ymm4
- vmovupd ymm4,ymmword ptr [r8+40h]
- vmovupd ymm8,ymmword ptr [r8+40h]
- vmulps ymm4,ymm4,ymm8
- vsubps ymm3,ymm3,ymm4
- vaddps ymm4,ymm5,ymm6
- vmulps ymm5,ymm4,ymm4
- vmulps ymm2,ymm2,ymm7
- vmulps ymm2,ymm2,ymm3
- vsubps ymm3,ymm5,ymm2
- vmovaps ymm2,ymm0
- vcmpltps ymm2,ymm2,ymm3
- vsqrtps ymm3,ymm3
- vmulps ymm1,ymm1,ymm7
- vxorps ymm5,ymm5,ymm5
- vsubps ymm5,ymm5,ymm4
- vaddps ymm4,ymm5,ymm3
- vdivps ymm4,ymm4,ymm1
- vsubps ymm5,ymm5,ymm3
- vdivps ymm3,ymm5,ymm1
- Vector tm = Vector.ConditionalSelect(Vector.LessThan(t1, t0), t1, t0);
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- vmovaps ymm1,ymm3
- vcmpltps ymm1,ymm1,ymm4
- vpand ymm1,ymm3,ymm1
- vcmpltps ymm3,ymm3,ymm4
- vpandn ymm3,ymm3,ymm4
- vpor ymm1,ymm1,ymm3
- Vector maskBiggerThanZero = Vector.GreaterThan(tm, zeros);
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- vcmpltps ymm0,ymm0,ymm1
- Vector maskSmallerThanT = Vector.LessThan(tm, this.t);
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- vmovupd ymm3,ymmword ptr [rcx+80h]
- vmovaps ymm4,ymm1
- vcmpltps ymm4,ymm4,ymm3
- vpand ymm0,ymm0,ymm4
- vpand ymm0,ymm2,ymm0
- this.t = Vector.ConditionalSelect(
- ^^^^^^^
- mask, // the bit mask that allows us to choose.
- ^^^^^^^
- tm, // the smallest of the t's.
- ^^^^^^^
- t); // if the bit mask is false (0), then we get our original t.
- ^^^^^^^
- vpand ymm1,ymm1,ymm0
- vmovupd ymm2,ymmword ptr [rcx+80h]
- vpandn ymm3,ymm0,ymm2
- vpor ymm1,ymm1,ymm3
- vmovupd ymmword ptr [rcx+80h],ymm1
- return mask;
- ^^^^^^^^^^^^
- vmovupd ymmword ptr [rdx],ymm0
- mov rax,rdx
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement