xref: /linux/rust/zerocopy/benches/insert_vec_zeroed.x86-64 (revision 6b3f7af57881f6d6250c6dcc4d910fe8e855a607)
1bench_insert_vec_zeroed:
2	push rbp
3	push r15
4	push r14
5	push r13
6	push r12
7	push rbx
8	sub rsp, 24
9	mov r12, qword ptr [rdi + 16]
10	mov r13, r12
11	sub r13, rsi
12	jb .LBB6_10
13	mov rbx, rdi
14	mov rax, qword ptr [rdi]
15	mov rcx, rax
16	sub rcx, r12
17	cmp rdx, rcx
18	jbe .LBB6_4
19	add r12, rdx
20	jae .LBB6_7
21.LBB6_3:
22	xor eax, eax
23	jmp .LBB6_6
24.LBB6_4:
25	mov rax, qword ptr [rbx + 8]
26	add r12, rdx
27.LBB6_5:
28	lea rcx, [rsi + 2*rsi]
29	lea r14, [rax + 2*rcx]
30	add rdx, rdx
31	lea r15, [rdx + 2*rdx]
32	lea rdi, [r14 + r15]
33	add r13, r13
34	lea rdx, [2*r13]
35	add rdx, r13
36	mov rsi, r14
37	call qword ptr [rip + memmove@GOTPCREL]
38	mov rdi, r14
39	xor esi, esi
40	mov rdx, r15
41	call qword ptr [rip + memset@GOTPCREL]
42	mov qword ptr [rbx + 16], r12
43	mov al, 1
44.LBB6_6:
45	add rsp, 24
46	pop rbx
47	pop r12
48	pop r13
49	pop r14
50	pop r15
51	pop rbp
52	ret
53.LBB6_7:
54	mov r15, rsi
55	mov rbp, rdx
56	lea rcx, [rax + rax]
57	cmp r12, rcx
58	cmova rcx, r12
59	cmp rcx, 5
60	mov r14d, 4
61	cmovae r14, rcx
62	mov rdx, qword ptr [rbx + 8]
63	mov rdi, rsp
64	mov rsi, rax
65	mov rcx, r14
66	call <alloc::raw_vec::RawVecInner>::finish_grow
67	cmp dword ptr [rsp], 1
68	je .LBB6_3
69	mov rax, qword ptr [rsp + 8]
70	mov qword ptr [rbx + 8], rax
71	mov qword ptr [rbx], r14
72	mov rdx, rbp
73	mov rsi, r15
74	jmp .LBB6_5
75.LBB6_10:
76	lea rdi, [rip + .Lanon.HASH.1]
77	lea rdx, [rip + .Lanon.HASH.3]
78	mov esi, 37
79	call qword ptr [rip + core::panicking::panic@GOTPCREL]
80