blob: 56c79c43851c933971c279619e3ad5938c4a95dc [file] [log] [blame]
Robert Sloan4c22c5f2019-03-01 15:53:37 -08001// This file is generated from a similarly-named Perl script in the BoringSSL
2// source tree. Do not edit by hand.
3
4#if defined(__has_feature)
5#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
6#define OPENSSL_NO_ASM
7#endif
8#endif
9
10#if !defined(OPENSSL_NO_ASM)
11#if defined(__aarch64__)
12#if defined(BORINGSSL_PREFIX)
13#include <boringssl_prefix_symbols_asm.h>
14#endif
15.text
16
17// abi_test_trampoline loads callee-saved registers from |state|, calls |func|
18// with |argv|, then saves the callee-saved registers into |state|. It returns
19// the result of |func|. The |unwind| argument is unused.
20// uint64_t abi_test_trampoline(void (*func)(...), CallerState *state,
21// const uint64_t *argv, size_t argc,
22// uint64_t unwind);
23.type abi_test_trampoline, %function
24.globl abi_test_trampoline
25.hidden abi_test_trampoline
26.align 4
27abi_test_trampoline:
28.Labi_test_trampoline_begin:
29 // Stack layout (low to high addresses)
30 // x29,x30 (16 bytes)
31 // d8-d15 (64 bytes)
32 // x19-x28 (80 bytes)
33 // x1 (8 bytes)
34 // padding (8 bytes)
35 stp x29, x30, [sp, #-176]!
36 mov x29, sp
37
38 // Saved callee-saved registers and |state|.
39 stp d8, d9, [sp, #16]
40 stp d10, d11, [sp, #32]
41 stp d12, d13, [sp, #48]
42 stp d14, d15, [sp, #64]
43 stp x19, x20, [sp, #80]
44 stp x21, x22, [sp, #96]
45 stp x23, x24, [sp, #112]
46 stp x25, x26, [sp, #128]
47 stp x27, x28, [sp, #144]
48 str x1, [sp, #160]
49
50 // Load registers from |state|, with the exception of x29. x29 is the
51 // frame pointer and also callee-saved, but AAPCS64 allows platforms to
52 // mandate that x29 always point to a frame. iOS64 does so, which means
53 // we cannot fill x29 with entropy without violating ABI rules
54 // ourselves. x29 is tested separately below.
55 ldp d8, d9, [x1], #16
56 ldp d10, d11, [x1], #16
57 ldp d12, d13, [x1], #16
58 ldp d14, d15, [x1], #16
59 ldp x19, x20, [x1], #16
60 ldp x21, x22, [x1], #16
61 ldp x23, x24, [x1], #16
62 ldp x25, x26, [x1], #16
63 ldp x27, x28, [x1], #16
64
65 // Move parameters into temporary registers.
66 mov x9, x0
67 mov x10, x2
68 mov x11, x3
69
70 // Load parameters into registers.
71 cbz x11, .Largs_done
72 ldr x0, [x10], #8
73 subs x11, x11, #1
74 b.eq .Largs_done
75 ldr x1, [x10], #8
76 subs x11, x11, #1
77 b.eq .Largs_done
78 ldr x2, [x10], #8
79 subs x11, x11, #1
80 b.eq .Largs_done
81 ldr x3, [x10], #8
82 subs x11, x11, #1
83 b.eq .Largs_done
84 ldr x4, [x10], #8
85 subs x11, x11, #1
86 b.eq .Largs_done
87 ldr x5, [x10], #8
88 subs x11, x11, #1
89 b.eq .Largs_done
90 ldr x6, [x10], #8
91 subs x11, x11, #1
92 b.eq .Largs_done
93 ldr x7, [x10], #8
94
95.Largs_done:
96 blr x9
97
98 // Reload |state| and store registers.
99 ldr x1, [sp, #160]
100 stp d8, d9, [x1], #16
101 stp d10, d11, [x1], #16
102 stp d12, d13, [x1], #16
103 stp d14, d15, [x1], #16
104 stp x19, x20, [x1], #16
105 stp x21, x22, [x1], #16
106 stp x23, x24, [x1], #16
107 stp x25, x26, [x1], #16
108 stp x27, x28, [x1], #16
109
110 // |func| is required to preserve x29, the frame pointer. We cannot load
111 // random values into x29 (see comment above), so compare it against the
112 // expected value and zero the field of |state| if corrupted.
113 mov x9, sp
114 cmp x29, x9
115 b.eq .Lx29_ok
116 str xzr, [x1]
117
118.Lx29_ok:
119 // Restore callee-saved registers.
120 ldp d8, d9, [sp, #16]
121 ldp d10, d11, [sp, #32]
122 ldp d12, d13, [sp, #48]
123 ldp d14, d15, [sp, #64]
124 ldp x19, x20, [sp, #80]
125 ldp x21, x22, [sp, #96]
126 ldp x23, x24, [sp, #112]
127 ldp x25, x26, [sp, #128]
128 ldp x27, x28, [sp, #144]
129
130 ldp x29, x30, [sp], #176
131 ret
132.size abi_test_trampoline,.-abi_test_trampoline
133.type abi_test_clobber_x0, %function
134.globl abi_test_clobber_x0
135.hidden abi_test_clobber_x0
136.align 4
137abi_test_clobber_x0:
138 mov x0, xzr
139 ret
140.size abi_test_clobber_x0,.-abi_test_clobber_x0
141.type abi_test_clobber_x1, %function
142.globl abi_test_clobber_x1
143.hidden abi_test_clobber_x1
144.align 4
145abi_test_clobber_x1:
146 mov x1, xzr
147 ret
148.size abi_test_clobber_x1,.-abi_test_clobber_x1
149.type abi_test_clobber_x2, %function
150.globl abi_test_clobber_x2
151.hidden abi_test_clobber_x2
152.align 4
153abi_test_clobber_x2:
154 mov x2, xzr
155 ret
156.size abi_test_clobber_x2,.-abi_test_clobber_x2
157.type abi_test_clobber_x3, %function
158.globl abi_test_clobber_x3
159.hidden abi_test_clobber_x3
160.align 4
161abi_test_clobber_x3:
162 mov x3, xzr
163 ret
164.size abi_test_clobber_x3,.-abi_test_clobber_x3
165.type abi_test_clobber_x4, %function
166.globl abi_test_clobber_x4
167.hidden abi_test_clobber_x4
168.align 4
169abi_test_clobber_x4:
170 mov x4, xzr
171 ret
172.size abi_test_clobber_x4,.-abi_test_clobber_x4
173.type abi_test_clobber_x5, %function
174.globl abi_test_clobber_x5
175.hidden abi_test_clobber_x5
176.align 4
177abi_test_clobber_x5:
178 mov x5, xzr
179 ret
180.size abi_test_clobber_x5,.-abi_test_clobber_x5
181.type abi_test_clobber_x6, %function
182.globl abi_test_clobber_x6
183.hidden abi_test_clobber_x6
184.align 4
185abi_test_clobber_x6:
186 mov x6, xzr
187 ret
188.size abi_test_clobber_x6,.-abi_test_clobber_x6
189.type abi_test_clobber_x7, %function
190.globl abi_test_clobber_x7
191.hidden abi_test_clobber_x7
192.align 4
193abi_test_clobber_x7:
194 mov x7, xzr
195 ret
196.size abi_test_clobber_x7,.-abi_test_clobber_x7
197.type abi_test_clobber_x8, %function
198.globl abi_test_clobber_x8
199.hidden abi_test_clobber_x8
200.align 4
201abi_test_clobber_x8:
202 mov x8, xzr
203 ret
204.size abi_test_clobber_x8,.-abi_test_clobber_x8
205.type abi_test_clobber_x9, %function
206.globl abi_test_clobber_x9
207.hidden abi_test_clobber_x9
208.align 4
209abi_test_clobber_x9:
210 mov x9, xzr
211 ret
212.size abi_test_clobber_x9,.-abi_test_clobber_x9
213.type abi_test_clobber_x10, %function
214.globl abi_test_clobber_x10
215.hidden abi_test_clobber_x10
216.align 4
217abi_test_clobber_x10:
218 mov x10, xzr
219 ret
220.size abi_test_clobber_x10,.-abi_test_clobber_x10
221.type abi_test_clobber_x11, %function
222.globl abi_test_clobber_x11
223.hidden abi_test_clobber_x11
224.align 4
225abi_test_clobber_x11:
226 mov x11, xzr
227 ret
228.size abi_test_clobber_x11,.-abi_test_clobber_x11
229.type abi_test_clobber_x12, %function
230.globl abi_test_clobber_x12
231.hidden abi_test_clobber_x12
232.align 4
233abi_test_clobber_x12:
234 mov x12, xzr
235 ret
236.size abi_test_clobber_x12,.-abi_test_clobber_x12
237.type abi_test_clobber_x13, %function
238.globl abi_test_clobber_x13
239.hidden abi_test_clobber_x13
240.align 4
241abi_test_clobber_x13:
242 mov x13, xzr
243 ret
244.size abi_test_clobber_x13,.-abi_test_clobber_x13
245.type abi_test_clobber_x14, %function
246.globl abi_test_clobber_x14
247.hidden abi_test_clobber_x14
248.align 4
249abi_test_clobber_x14:
250 mov x14, xzr
251 ret
252.size abi_test_clobber_x14,.-abi_test_clobber_x14
253.type abi_test_clobber_x15, %function
254.globl abi_test_clobber_x15
255.hidden abi_test_clobber_x15
256.align 4
257abi_test_clobber_x15:
258 mov x15, xzr
259 ret
260.size abi_test_clobber_x15,.-abi_test_clobber_x15
261.type abi_test_clobber_x16, %function
262.globl abi_test_clobber_x16
263.hidden abi_test_clobber_x16
264.align 4
265abi_test_clobber_x16:
266 mov x16, xzr
267 ret
268.size abi_test_clobber_x16,.-abi_test_clobber_x16
269.type abi_test_clobber_x17, %function
270.globl abi_test_clobber_x17
271.hidden abi_test_clobber_x17
272.align 4
273abi_test_clobber_x17:
274 mov x17, xzr
275 ret
276.size abi_test_clobber_x17,.-abi_test_clobber_x17
277.type abi_test_clobber_x19, %function
278.globl abi_test_clobber_x19
279.hidden abi_test_clobber_x19
280.align 4
281abi_test_clobber_x19:
282 mov x19, xzr
283 ret
284.size abi_test_clobber_x19,.-abi_test_clobber_x19
285.type abi_test_clobber_x20, %function
286.globl abi_test_clobber_x20
287.hidden abi_test_clobber_x20
288.align 4
289abi_test_clobber_x20:
290 mov x20, xzr
291 ret
292.size abi_test_clobber_x20,.-abi_test_clobber_x20
293.type abi_test_clobber_x21, %function
294.globl abi_test_clobber_x21
295.hidden abi_test_clobber_x21
296.align 4
297abi_test_clobber_x21:
298 mov x21, xzr
299 ret
300.size abi_test_clobber_x21,.-abi_test_clobber_x21
301.type abi_test_clobber_x22, %function
302.globl abi_test_clobber_x22
303.hidden abi_test_clobber_x22
304.align 4
305abi_test_clobber_x22:
306 mov x22, xzr
307 ret
308.size abi_test_clobber_x22,.-abi_test_clobber_x22
309.type abi_test_clobber_x23, %function
310.globl abi_test_clobber_x23
311.hidden abi_test_clobber_x23
312.align 4
313abi_test_clobber_x23:
314 mov x23, xzr
315 ret
316.size abi_test_clobber_x23,.-abi_test_clobber_x23
317.type abi_test_clobber_x24, %function
318.globl abi_test_clobber_x24
319.hidden abi_test_clobber_x24
320.align 4
321abi_test_clobber_x24:
322 mov x24, xzr
323 ret
324.size abi_test_clobber_x24,.-abi_test_clobber_x24
325.type abi_test_clobber_x25, %function
326.globl abi_test_clobber_x25
327.hidden abi_test_clobber_x25
328.align 4
329abi_test_clobber_x25:
330 mov x25, xzr
331 ret
332.size abi_test_clobber_x25,.-abi_test_clobber_x25
333.type abi_test_clobber_x26, %function
334.globl abi_test_clobber_x26
335.hidden abi_test_clobber_x26
336.align 4
337abi_test_clobber_x26:
338 mov x26, xzr
339 ret
340.size abi_test_clobber_x26,.-abi_test_clobber_x26
341.type abi_test_clobber_x27, %function
342.globl abi_test_clobber_x27
343.hidden abi_test_clobber_x27
344.align 4
345abi_test_clobber_x27:
346 mov x27, xzr
347 ret
348.size abi_test_clobber_x27,.-abi_test_clobber_x27
349.type abi_test_clobber_x28, %function
350.globl abi_test_clobber_x28
351.hidden abi_test_clobber_x28
352.align 4
353abi_test_clobber_x28:
354 mov x28, xzr
355 ret
356.size abi_test_clobber_x28,.-abi_test_clobber_x28
357.type abi_test_clobber_x29, %function
358.globl abi_test_clobber_x29
359.hidden abi_test_clobber_x29
360.align 4
361abi_test_clobber_x29:
362 mov x29, xzr
363 ret
364.size abi_test_clobber_x29,.-abi_test_clobber_x29
365.type abi_test_clobber_d0, %function
366.globl abi_test_clobber_d0
367.hidden abi_test_clobber_d0
368.align 4
369abi_test_clobber_d0:
370 fmov d0, xzr
371 ret
372.size abi_test_clobber_d0,.-abi_test_clobber_d0
373.type abi_test_clobber_d1, %function
374.globl abi_test_clobber_d1
375.hidden abi_test_clobber_d1
376.align 4
377abi_test_clobber_d1:
378 fmov d1, xzr
379 ret
380.size abi_test_clobber_d1,.-abi_test_clobber_d1
381.type abi_test_clobber_d2, %function
382.globl abi_test_clobber_d2
383.hidden abi_test_clobber_d2
384.align 4
385abi_test_clobber_d2:
386 fmov d2, xzr
387 ret
388.size abi_test_clobber_d2,.-abi_test_clobber_d2
389.type abi_test_clobber_d3, %function
390.globl abi_test_clobber_d3
391.hidden abi_test_clobber_d3
392.align 4
393abi_test_clobber_d3:
394 fmov d3, xzr
395 ret
396.size abi_test_clobber_d3,.-abi_test_clobber_d3
397.type abi_test_clobber_d4, %function
398.globl abi_test_clobber_d4
399.hidden abi_test_clobber_d4
400.align 4
401abi_test_clobber_d4:
402 fmov d4, xzr
403 ret
404.size abi_test_clobber_d4,.-abi_test_clobber_d4
405.type abi_test_clobber_d5, %function
406.globl abi_test_clobber_d5
407.hidden abi_test_clobber_d5
408.align 4
409abi_test_clobber_d5:
410 fmov d5, xzr
411 ret
412.size abi_test_clobber_d5,.-abi_test_clobber_d5
413.type abi_test_clobber_d6, %function
414.globl abi_test_clobber_d6
415.hidden abi_test_clobber_d6
416.align 4
417abi_test_clobber_d6:
418 fmov d6, xzr
419 ret
420.size abi_test_clobber_d6,.-abi_test_clobber_d6
421.type abi_test_clobber_d7, %function
422.globl abi_test_clobber_d7
423.hidden abi_test_clobber_d7
424.align 4
425abi_test_clobber_d7:
426 fmov d7, xzr
427 ret
428.size abi_test_clobber_d7,.-abi_test_clobber_d7
429.type abi_test_clobber_d8, %function
430.globl abi_test_clobber_d8
431.hidden abi_test_clobber_d8
432.align 4
433abi_test_clobber_d8:
434 fmov d8, xzr
435 ret
436.size abi_test_clobber_d8,.-abi_test_clobber_d8
437.type abi_test_clobber_d9, %function
438.globl abi_test_clobber_d9
439.hidden abi_test_clobber_d9
440.align 4
441abi_test_clobber_d9:
442 fmov d9, xzr
443 ret
444.size abi_test_clobber_d9,.-abi_test_clobber_d9
445.type abi_test_clobber_d10, %function
446.globl abi_test_clobber_d10
447.hidden abi_test_clobber_d10
448.align 4
449abi_test_clobber_d10:
450 fmov d10, xzr
451 ret
452.size abi_test_clobber_d10,.-abi_test_clobber_d10
453.type abi_test_clobber_d11, %function
454.globl abi_test_clobber_d11
455.hidden abi_test_clobber_d11
456.align 4
457abi_test_clobber_d11:
458 fmov d11, xzr
459 ret
460.size abi_test_clobber_d11,.-abi_test_clobber_d11
461.type abi_test_clobber_d12, %function
462.globl abi_test_clobber_d12
463.hidden abi_test_clobber_d12
464.align 4
465abi_test_clobber_d12:
466 fmov d12, xzr
467 ret
468.size abi_test_clobber_d12,.-abi_test_clobber_d12
469.type abi_test_clobber_d13, %function
470.globl abi_test_clobber_d13
471.hidden abi_test_clobber_d13
472.align 4
473abi_test_clobber_d13:
474 fmov d13, xzr
475 ret
476.size abi_test_clobber_d13,.-abi_test_clobber_d13
477.type abi_test_clobber_d14, %function
478.globl abi_test_clobber_d14
479.hidden abi_test_clobber_d14
480.align 4
481abi_test_clobber_d14:
482 fmov d14, xzr
483 ret
484.size abi_test_clobber_d14,.-abi_test_clobber_d14
485.type abi_test_clobber_d15, %function
486.globl abi_test_clobber_d15
487.hidden abi_test_clobber_d15
488.align 4
489abi_test_clobber_d15:
490 fmov d15, xzr
491 ret
492.size abi_test_clobber_d15,.-abi_test_clobber_d15
493.type abi_test_clobber_d16, %function
494.globl abi_test_clobber_d16
495.hidden abi_test_clobber_d16
496.align 4
497abi_test_clobber_d16:
498 fmov d16, xzr
499 ret
500.size abi_test_clobber_d16,.-abi_test_clobber_d16
501.type abi_test_clobber_d17, %function
502.globl abi_test_clobber_d17
503.hidden abi_test_clobber_d17
504.align 4
505abi_test_clobber_d17:
506 fmov d17, xzr
507 ret
508.size abi_test_clobber_d17,.-abi_test_clobber_d17
509.type abi_test_clobber_d18, %function
510.globl abi_test_clobber_d18
511.hidden abi_test_clobber_d18
512.align 4
513abi_test_clobber_d18:
514 fmov d18, xzr
515 ret
516.size abi_test_clobber_d18,.-abi_test_clobber_d18
517.type abi_test_clobber_d19, %function
518.globl abi_test_clobber_d19
519.hidden abi_test_clobber_d19
520.align 4
521abi_test_clobber_d19:
522 fmov d19, xzr
523 ret
524.size abi_test_clobber_d19,.-abi_test_clobber_d19
525.type abi_test_clobber_d20, %function
526.globl abi_test_clobber_d20
527.hidden abi_test_clobber_d20
528.align 4
529abi_test_clobber_d20:
530 fmov d20, xzr
531 ret
532.size abi_test_clobber_d20,.-abi_test_clobber_d20
533.type abi_test_clobber_d21, %function
534.globl abi_test_clobber_d21
535.hidden abi_test_clobber_d21
536.align 4
537abi_test_clobber_d21:
538 fmov d21, xzr
539 ret
540.size abi_test_clobber_d21,.-abi_test_clobber_d21
541.type abi_test_clobber_d22, %function
542.globl abi_test_clobber_d22
543.hidden abi_test_clobber_d22
544.align 4
545abi_test_clobber_d22:
546 fmov d22, xzr
547 ret
548.size abi_test_clobber_d22,.-abi_test_clobber_d22
549.type abi_test_clobber_d23, %function
550.globl abi_test_clobber_d23
551.hidden abi_test_clobber_d23
552.align 4
553abi_test_clobber_d23:
554 fmov d23, xzr
555 ret
556.size abi_test_clobber_d23,.-abi_test_clobber_d23
557.type abi_test_clobber_d24, %function
558.globl abi_test_clobber_d24
559.hidden abi_test_clobber_d24
560.align 4
561abi_test_clobber_d24:
562 fmov d24, xzr
563 ret
564.size abi_test_clobber_d24,.-abi_test_clobber_d24
565.type abi_test_clobber_d25, %function
566.globl abi_test_clobber_d25
567.hidden abi_test_clobber_d25
568.align 4
569abi_test_clobber_d25:
570 fmov d25, xzr
571 ret
572.size abi_test_clobber_d25,.-abi_test_clobber_d25
573.type abi_test_clobber_d26, %function
574.globl abi_test_clobber_d26
575.hidden abi_test_clobber_d26
576.align 4
577abi_test_clobber_d26:
578 fmov d26, xzr
579 ret
580.size abi_test_clobber_d26,.-abi_test_clobber_d26
581.type abi_test_clobber_d27, %function
582.globl abi_test_clobber_d27
583.hidden abi_test_clobber_d27
584.align 4
585abi_test_clobber_d27:
586 fmov d27, xzr
587 ret
588.size abi_test_clobber_d27,.-abi_test_clobber_d27
589.type abi_test_clobber_d28, %function
590.globl abi_test_clobber_d28
591.hidden abi_test_clobber_d28
592.align 4
593abi_test_clobber_d28:
594 fmov d28, xzr
595 ret
596.size abi_test_clobber_d28,.-abi_test_clobber_d28
597.type abi_test_clobber_d29, %function
598.globl abi_test_clobber_d29
599.hidden abi_test_clobber_d29
600.align 4
601abi_test_clobber_d29:
602 fmov d29, xzr
603 ret
604.size abi_test_clobber_d29,.-abi_test_clobber_d29
605.type abi_test_clobber_d30, %function
606.globl abi_test_clobber_d30
607.hidden abi_test_clobber_d30
608.align 4
609abi_test_clobber_d30:
610 fmov d30, xzr
611 ret
612.size abi_test_clobber_d30,.-abi_test_clobber_d30
613.type abi_test_clobber_d31, %function
614.globl abi_test_clobber_d31
615.hidden abi_test_clobber_d31
616.align 4
617abi_test_clobber_d31:
618 fmov d31, xzr
619 ret
620.size abi_test_clobber_d31,.-abi_test_clobber_d31
621.type abi_test_clobber_v8_upper, %function
622.globl abi_test_clobber_v8_upper
623.hidden abi_test_clobber_v8_upper
624.align 4
625abi_test_clobber_v8_upper:
626 fmov v8.d[1], xzr
627 ret
628.size abi_test_clobber_v8_upper,.-abi_test_clobber_v8_upper
629.type abi_test_clobber_v9_upper, %function
630.globl abi_test_clobber_v9_upper
631.hidden abi_test_clobber_v9_upper
632.align 4
633abi_test_clobber_v9_upper:
634 fmov v9.d[1], xzr
635 ret
636.size abi_test_clobber_v9_upper,.-abi_test_clobber_v9_upper
637.type abi_test_clobber_v10_upper, %function
638.globl abi_test_clobber_v10_upper
639.hidden abi_test_clobber_v10_upper
640.align 4
641abi_test_clobber_v10_upper:
642 fmov v10.d[1], xzr
643 ret
644.size abi_test_clobber_v10_upper,.-abi_test_clobber_v10_upper
645.type abi_test_clobber_v11_upper, %function
646.globl abi_test_clobber_v11_upper
647.hidden abi_test_clobber_v11_upper
648.align 4
649abi_test_clobber_v11_upper:
650 fmov v11.d[1], xzr
651 ret
652.size abi_test_clobber_v11_upper,.-abi_test_clobber_v11_upper
653.type abi_test_clobber_v12_upper, %function
654.globl abi_test_clobber_v12_upper
655.hidden abi_test_clobber_v12_upper
656.align 4
657abi_test_clobber_v12_upper:
658 fmov v12.d[1], xzr
659 ret
660.size abi_test_clobber_v12_upper,.-abi_test_clobber_v12_upper
661.type abi_test_clobber_v13_upper, %function
662.globl abi_test_clobber_v13_upper
663.hidden abi_test_clobber_v13_upper
664.align 4
665abi_test_clobber_v13_upper:
666 fmov v13.d[1], xzr
667 ret
668.size abi_test_clobber_v13_upper,.-abi_test_clobber_v13_upper
669.type abi_test_clobber_v14_upper, %function
670.globl abi_test_clobber_v14_upper
671.hidden abi_test_clobber_v14_upper
672.align 4
673abi_test_clobber_v14_upper:
674 fmov v14.d[1], xzr
675 ret
676.size abi_test_clobber_v14_upper,.-abi_test_clobber_v14_upper
677.type abi_test_clobber_v15_upper, %function
678.globl abi_test_clobber_v15_upper
679.hidden abi_test_clobber_v15_upper
680.align 4
681abi_test_clobber_v15_upper:
682 fmov v15.d[1], xzr
683 ret
684.size abi_test_clobber_v15_upper,.-abi_test_clobber_v15_upper
685#endif
686#endif // !OPENSSL_NO_ASM