1151564Snjl/* Routines for restoring vector registers.
2151564Snjl
3151564Snjl   Copyright (C) 2012-2022 Free Software Foundation, Inc.
4151564Snjl   Written by Alan Modra, IBM
5151564Snjl
6151564Snjl   This file is free software; you can redistribute it and/or modify it
7151564Snjl   under the terms of the GNU General Public License as published by the
8151564Snjl   Free Software Foundation; either version 3, or (at your option) any
9151564Snjl   later version.
10151564Snjl
11151564Snjl   This file is distributed in the hope that it will be useful, but
12151564Snjl   WITHOUT ANY WARRANTY; without even the implied warranty of
13151564Snjl   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14151564Snjl   General Public License for more details.
15151564Snjl
16151564Snjl   Under Section 7 of GPL version 3, you are granted additional
17151564Snjl   permissions described in the GCC Runtime Library Exception, version
18151564Snjl   3.1, as published by the Free Software Foundation.
19151564Snjl
20151564Snjl   You should have received a copy of the GNU General Public License and
21151564Snjl   a copy of the GCC Runtime Library Exception along with this program;
22151564Snjl   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23151564Snjl   <http://www.gnu.org/licenses/>.  */
24151564Snjl
25151564Snjl/* On PowerPC64 Linux, these functions are provided by the linker.  */
26151564Snjl#ifndef __powerpc64__
27151564Snjl
28151564Snjl#undef __ALTIVEC__
29151564Snjl#define __ALTIVEC__ 1
30151564Snjl	#include "ppc-asm.h"
31151564Snjl
32151564Snjl/* Called with r0 pointing just beyond the end of the vector save area.  */
33151564Snjl
34151564Snjl	.machine altivec
35151564Snjl	.section ".text"
36151564SnjlCFI_STARTPROC
37151564SnjlHIDDEN_FUNC(_restvr_20)
38151564Snjl	li r11,-192
39151564Snjl	lvx v20,r11,r0
40151564SnjlHIDDEN_FUNC(_restvr_21)
41151564Snjl	li r11,-176
42151564Snjl	lvx v21,r11,r0
43151564SnjlHIDDEN_FUNC(_restvr_22)
44151564Snjl	li r11,-160
45151564Snjl	lvx v22,r11,r0
46151564SnjlHIDDEN_FUNC(_restvr_23)
47151564Snjl	li r11,-144
48151564Snjl	lvx v23,r11,r0
49151564SnjlHIDDEN_FUNC(_restvr_24)
50151564Snjl	li r11,-128
51151564Snjl	lvx v24,r11,r0
52151564SnjlHIDDEN_FUNC(_restvr_25)
53151564Snjl	li r11,-112
54151564Snjl	lvx v25,r11,r0
55151564SnjlHIDDEN_FUNC(_restvr_26)
56151564Snjl	li r11,-96
57151564Snjl	lvx v26,r11,r0
58151564SnjlHIDDEN_FUNC(_restvr_27)
59151564Snjl	li r11,-80
60151564Snjl	lvx v27,r11,r0
61151564SnjlHIDDEN_FUNC(_restvr_28)
62151564Snjl	li r11,-64
63151564Snjl	lvx v28,r11,r0
64151564SnjlHIDDEN_FUNC(_restvr_29)
65151564Snjl	li r11,-48
66151564Snjl	lvx v29,r11,r0
67151564SnjlHIDDEN_FUNC(_restvr_30)
68151564Snjl	li r11,-32
69151564Snjl	lvx v30,r11,r0
70151564SnjlHIDDEN_FUNC(_restvr_31)
71151564Snjl	li r11,-16
72151564Snjl	lvx v31,r11,r0
73151564Snjl	blr
74151564SnjlFUNC_END(_restvr_31)
75151564SnjlFUNC_END(_restvr_30)
76151564SnjlFUNC_END(_restvr_29)
77151564SnjlFUNC_END(_restvr_28)
78151564SnjlFUNC_END(_restvr_27)
79151564SnjlFUNC_END(_restvr_26)
80151564SnjlFUNC_END(_restvr_25)
81151564SnjlFUNC_END(_restvr_24)
82151564SnjlFUNC_END(_restvr_23)
83151564SnjlFUNC_END(_restvr_22)
84151564SnjlFUNC_END(_restvr_21)
85151564SnjlFUNC_END(_restvr_20)
86151564SnjlCFI_ENDPROC
87151564Snjl
88151564Snjl#endif
89151564Snjl