xref: /linux/rust/zerocopy/benches/extend_vec_zeroed.x86-64 (revision b079329b8691768962aa514b8f8c9077ca352459)
1*c3739801SMiguel Ojedabench_extend_vec_zeroed:
2*c3739801SMiguel Ojeda	push r15
3*c3739801SMiguel Ojeda	push r14
4*c3739801SMiguel Ojeda	push r13
5*c3739801SMiguel Ojeda	push r12
6*c3739801SMiguel Ojeda	push rbx
7*c3739801SMiguel Ojeda	sub rsp, 32
8*c3739801SMiguel Ojeda	mov rbx, rdi
9*c3739801SMiguel Ojeda	mov rax, qword ptr [rdi]
10*c3739801SMiguel Ojeda	mov r12, qword ptr [rdi + 16]
11*c3739801SMiguel Ojeda	mov rcx, rax
12*c3739801SMiguel Ojeda	sub rcx, r12
13*c3739801SMiguel Ojeda	cmp rsi, rcx
14*c3739801SMiguel Ojeda	jbe .LBB6_3
15*c3739801SMiguel Ojeda	mov r15, r12
16*c3739801SMiguel Ojeda	add r15, rsi
17*c3739801SMiguel Ojeda	jae .LBB6_6
18*c3739801SMiguel Ojeda.LBB6_2:
19*c3739801SMiguel Ojeda	xor eax, eax
20*c3739801SMiguel Ojeda	jmp .LBB6_5
21*c3739801SMiguel Ojeda.LBB6_3:
22*c3739801SMiguel Ojeda	mov rax, qword ptr [rbx + 8]
23*c3739801SMiguel Ojeda	lea r15, [r12 + rsi]
24*c3739801SMiguel Ojeda.LBB6_4:
25*c3739801SMiguel Ojeda	lea rcx, [r12 + 2*r12]
26*c3739801SMiguel Ojeda	lea rdi, [rax + 2*rcx]
27*c3739801SMiguel Ojeda	add rsi, rsi
28*c3739801SMiguel Ojeda	lea rdx, [rsi + 2*rsi]
29*c3739801SMiguel Ojeda	xor esi, esi
30*c3739801SMiguel Ojeda	call qword ptr [rip + memset@GOTPCREL]
31*c3739801SMiguel Ojeda	mov qword ptr [rbx + 16], r15
32*c3739801SMiguel Ojeda	mov al, 1
33*c3739801SMiguel Ojeda.LBB6_5:
34*c3739801SMiguel Ojeda	add rsp, 32
35*c3739801SMiguel Ojeda	pop rbx
36*c3739801SMiguel Ojeda	pop r12
37*c3739801SMiguel Ojeda	pop r13
38*c3739801SMiguel Ojeda	pop r14
39*c3739801SMiguel Ojeda	pop r15
40*c3739801SMiguel Ojeda	ret
41*c3739801SMiguel Ojeda.LBB6_6:
42*c3739801SMiguel Ojeda	mov r13, rsi
43*c3739801SMiguel Ojeda	lea rcx, [rax + rax]
44*c3739801SMiguel Ojeda	cmp r15, rcx
45*c3739801SMiguel Ojeda	cmova rcx, r15
46*c3739801SMiguel Ojeda	cmp rcx, 5
47*c3739801SMiguel Ojeda	mov r14d, 4
48*c3739801SMiguel Ojeda	cmovae r14, rcx
49*c3739801SMiguel Ojeda	mov rdx, qword ptr [rbx + 8]
50*c3739801SMiguel Ojeda	lea rdi, [rsp + 8]
51*c3739801SMiguel Ojeda	mov rsi, rax
52*c3739801SMiguel Ojeda	mov rcx, r14
53*c3739801SMiguel Ojeda	call <alloc::raw_vec::RawVecInner>::finish_grow
54*c3739801SMiguel Ojeda	cmp dword ptr [rsp + 8], 1
55*c3739801SMiguel Ojeda	je .LBB6_2
56*c3739801SMiguel Ojeda	mov rax, qword ptr [rsp + 16]
57*c3739801SMiguel Ojeda	mov qword ptr [rbx + 8], rax
58*c3739801SMiguel Ojeda	mov qword ptr [rbx], r14
59*c3739801SMiguel Ojeda	mov rsi, r13
60*c3739801SMiguel Ojeda	jmp .LBB6_4
61