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