x86

Created Diff never expires
11 removals
26 lines
30 additions
44 lines
; ...ToArray()
; ...ToArray()
push rsi
push rsi
sub rsp,20
sub rsp,20
vzeroupper
mov esi,[rcx+8]
mov edx,[rcx+0C]
mov edx,[rcx+0C]
mov esi,[rcx+8]
sub edx,esi
sub edx,esi
movsxd rdx,edx
movsxd rdx,edx
mov rcx,offset MT_System.Int32[]
mov rcx,offset MT_System.Int32[]
call CORINFO_HELP_NEWARR_1_VC
call CORINFO_HELP_NEWARR_1_VC
lea rdx,[rax+10]
lea rdx,[rax+10]
mov ecx,[rax+8]
mov ecx,[rax+8]
cmp ecx,8
jl short M01_L01
vmovd xmm0,esi
vpbroadcastd ymm0,xmm0
vpaddd ymm0,ymm0,[7FF7FAE306A0]
vmovups ymm1,[7FF7FAE306C0]
M01_L00:
vmovups [rdx],ymm0
vpaddd ymm0,ymm0,ymm1
add rdx,20
sub ecx,8
cmp ecx,8
jge short M01_L00
vmovd esi,xmm0
M01_L01:
xor r8d,r8d
xor r8d,r8d
test ecx,ecx
test ecx,ecx
jle short M01_L01
jle short M01_L03
M01_L00:
M01_L02:
mov r9d,r8d
lea r9d,[rsi+1]
mov [rdx+r9*4],esi
mov r10d,r8d
mov [rdx+r10*4],esi
inc r8d
inc r8d
inc esi
cmp r8d,ecx
cmp r8d,ecx
jl short M01_L00
mov esi,r9d
M01_L01:
jl short M01_L02
M01_L03:
vzeroupper
add rsp,20
add rsp,20
pop rsi
pop rsi
ret
ret
; Total bytes of code 68
; Total bytes of code 133