1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * test helper assembly functions
4  *
5  * Copyright (C) 2016 Simon Guo, IBM Corporation.
6  */
7 #include <ppc-asm.h>
8 #include "reg.h"
9 
10 
11 /* Non volatile GPR - unsigned long buf[18] */
12 FUNC_START(load_gpr)
13 	ld	14, 0*8(3)
14 	ld	15, 1*8(3)
15 	ld	16, 2*8(3)
16 	ld	17, 3*8(3)
17 	ld	18, 4*8(3)
18 	ld	19, 5*8(3)
19 	ld	20, 6*8(3)
20 	ld	21, 7*8(3)
21 	ld	22, 8*8(3)
22 	ld	23, 9*8(3)
23 	ld	24, 10*8(3)
24 	ld	25, 11*8(3)
25 	ld	26, 12*8(3)
26 	ld	27, 13*8(3)
27 	ld	28, 14*8(3)
28 	ld	29, 15*8(3)
29 	ld	30, 16*8(3)
30 	ld	31, 17*8(3)
31 	blr
32 FUNC_END(load_gpr)
33 
34 FUNC_START(store_gpr)
35 	std	14, 0*8(3)
36 	std	15, 1*8(3)
37 	std	16, 2*8(3)
38 	std	17, 3*8(3)
39 	std	18, 4*8(3)
40 	std	19, 5*8(3)
41 	std	20, 6*8(3)
42 	std	21, 7*8(3)
43 	std	22, 8*8(3)
44 	std	23, 9*8(3)
45 	std	24, 10*8(3)
46 	std	25, 11*8(3)
47 	std	26, 12*8(3)
48 	std	27, 13*8(3)
49 	std	28, 14*8(3)
50 	std	29, 15*8(3)
51 	std	30, 16*8(3)
52 	std	31, 17*8(3)
53 	blr
54 FUNC_END(store_gpr)
55 
56 /* Double Precision Float - double buf[32] */
57 FUNC_START(store_fpr)
58 	stfd  0,  0*8(3)
59 	stfd  1,  1*8(3)
60 	stfd  2,  2*8(3)
61 	stfd  3,  3*8(3)
62 	stfd  4,  4*8(3)
63 	stfd  5,  5*8(3)
64 	stfd  6,  6*8(3)
65 	stfd  7,  7*8(3)
66 	stfd  8,  8*8(3)
67 	stfd  9,  9*8(3)
68 	stfd 10, 10*8(3)
69 	stfd 11, 11*8(3)
70 	stfd 12, 12*8(3)
71 	stfd 13, 13*8(3)
72 	stfd 14, 14*8(3)
73 	stfd 15, 15*8(3)
74 	stfd 16, 16*8(3)
75 	stfd 17, 17*8(3)
76 	stfd 18, 18*8(3)
77 	stfd 19, 19*8(3)
78 	stfd 20, 20*8(3)
79 	stfd 21, 21*8(3)
80 	stfd 22, 22*8(3)
81 	stfd 23, 23*8(3)
82 	stfd 24, 24*8(3)
83 	stfd 25, 25*8(3)
84 	stfd 26, 26*8(3)
85 	stfd 27, 27*8(3)
86 	stfd 28, 28*8(3)
87 	stfd 29, 29*8(3)
88 	stfd 30, 30*8(3)
89 	stfd 31, 31*8(3)
90 	blr
91 FUNC_END(store_fpr)
92 
93 /* VMX/VSX registers - unsigned long buf[128] */
94 FUNC_START(loadvsx)
95 	lis	4, 0
96 	LXVD2X	(0,(4),(3))
97 	addi	4, 4, 16
98 	LXVD2X	(1,(4),(3))
99 	addi	4, 4, 16
100 	LXVD2X	(2,(4),(3))
101 	addi	4, 4, 16
102 	LXVD2X	(3,(4),(3))
103 	addi	4, 4, 16
104 	LXVD2X	(4,(4),(3))
105 	addi	4, 4, 16
106 	LXVD2X	(5,(4),(3))
107 	addi	4, 4, 16
108 	LXVD2X	(6,(4),(3))
109 	addi	4, 4, 16
110 	LXVD2X	(7,(4),(3))
111 	addi	4, 4, 16
112 	LXVD2X	(8,(4),(3))
113 	addi	4, 4, 16
114 	LXVD2X	(9,(4),(3))
115 	addi	4, 4, 16
116 	LXVD2X	(10,(4),(3))
117 	addi	4, 4, 16
118 	LXVD2X	(11,(4),(3))
119 	addi	4, 4, 16
120 	LXVD2X	(12,(4),(3))
121 	addi	4, 4, 16
122 	LXVD2X	(13,(4),(3))
123 	addi	4, 4, 16
124 	LXVD2X	(14,(4),(3))
125 	addi	4, 4, 16
126 	LXVD2X	(15,(4),(3))
127 	addi	4, 4, 16
128 	LXVD2X	(16,(4),(3))
129 	addi	4, 4, 16
130 	LXVD2X	(17,(4),(3))
131 	addi	4, 4, 16
132 	LXVD2X	(18,(4),(3))
133 	addi	4, 4, 16
134 	LXVD2X	(19,(4),(3))
135 	addi	4, 4, 16
136 	LXVD2X	(20,(4),(3))
137 	addi	4, 4, 16
138 	LXVD2X	(21,(4),(3))
139 	addi	4, 4, 16
140 	LXVD2X	(22,(4),(3))
141 	addi	4, 4, 16
142 	LXVD2X	(23,(4),(3))
143 	addi	4, 4, 16
144 	LXVD2X	(24,(4),(3))
145 	addi	4, 4, 16
146 	LXVD2X	(25,(4),(3))
147 	addi	4, 4, 16
148 	LXVD2X	(26,(4),(3))
149 	addi	4, 4, 16
150 	LXVD2X	(27,(4),(3))
151 	addi	4, 4, 16
152 	LXVD2X	(28,(4),(3))
153 	addi	4, 4, 16
154 	LXVD2X	(29,(4),(3))
155 	addi	4, 4, 16
156 	LXVD2X	(30,(4),(3))
157 	addi	4, 4, 16
158 	LXVD2X	(31,(4),(3))
159 	addi	4, 4, 16
160 	LXVD2X	(32,(4),(3))
161 	addi	4, 4, 16
162 	LXVD2X	(33,(4),(3))
163 	addi	4, 4, 16
164 	LXVD2X	(34,(4),(3))
165 	addi	4, 4, 16
166 	LXVD2X	(35,(4),(3))
167 	addi	4, 4, 16
168 	LXVD2X	(36,(4),(3))
169 	addi	4, 4, 16
170 	LXVD2X	(37,(4),(3))
171 	addi	4, 4, 16
172 	LXVD2X	(38,(4),(3))
173 	addi	4, 4, 16
174 	LXVD2X	(39,(4),(3))
175 	addi	4, 4, 16
176 	LXVD2X	(40,(4),(3))
177 	addi	4, 4, 16
178 	LXVD2X	(41,(4),(3))
179 	addi	4, 4, 16
180 	LXVD2X	(42,(4),(3))
181 	addi	4, 4, 16
182 	LXVD2X	(43,(4),(3))
183 	addi	4, 4, 16
184 	LXVD2X	(44,(4),(3))
185 	addi	4, 4, 16
186 	LXVD2X	(45,(4),(3))
187 	addi	4, 4, 16
188 	LXVD2X	(46,(4),(3))
189 	addi	4, 4, 16
190 	LXVD2X	(47,(4),(3))
191 	addi	4, 4, 16
192 	LXVD2X	(48,(4),(3))
193 	addi	4, 4, 16
194 	LXVD2X	(49,(4),(3))
195 	addi	4, 4, 16
196 	LXVD2X	(50,(4),(3))
197 	addi	4, 4, 16
198 	LXVD2X	(51,(4),(3))
199 	addi	4, 4, 16
200 	LXVD2X	(52,(4),(3))
201 	addi	4, 4, 16
202 	LXVD2X	(53,(4),(3))
203 	addi	4, 4, 16
204 	LXVD2X	(54,(4),(3))
205 	addi	4, 4, 16
206 	LXVD2X	(55,(4),(3))
207 	addi	4, 4, 16
208 	LXVD2X	(56,(4),(3))
209 	addi	4, 4, 16
210 	LXVD2X	(57,(4),(3))
211 	addi	4, 4, 16
212 	LXVD2X	(58,(4),(3))
213 	addi	4, 4, 16
214 	LXVD2X	(59,(4),(3))
215 	addi	4, 4, 16
216 	LXVD2X	(60,(4),(3))
217 	addi	4, 4, 16
218 	LXVD2X	(61,(4),(3))
219 	addi	4, 4, 16
220 	LXVD2X	(62,(4),(3))
221 	addi	4, 4, 16
222 	LXVD2X	(63,(4),(3))
223 	blr
224 FUNC_END(loadvsx)
225 
226 FUNC_START(storevsx)
227 	lis	4, 0
228 	STXVD2X	(0,(4),(3))
229 	addi	4, 4, 16
230 	STXVD2X	(1,(4),(3))
231 	addi	4, 4, 16
232 	STXVD2X	(2,(4),(3))
233 	addi	4, 4, 16
234 	STXVD2X	(3,(4),(3))
235 	addi	4, 4, 16
236 	STXVD2X	(4,(4),(3))
237 	addi	4, 4, 16
238 	STXVD2X	(5,(4),(3))
239 	addi	4, 4, 16
240 	STXVD2X	(6,(4),(3))
241 	addi	4, 4, 16
242 	STXVD2X	(7,(4),(3))
243 	addi	4, 4, 16
244 	STXVD2X	(8,(4),(3))
245 	addi	4, 4, 16
246 	STXVD2X	(9,(4),(3))
247 	addi	4, 4, 16
248 	STXVD2X	(10,(4),(3))
249 	addi	4, 4, 16
250 	STXVD2X	(11,(4),(3))
251 	addi	4, 4, 16
252 	STXVD2X	(12,(4),(3))
253 	addi	4, 4, 16
254 	STXVD2X	(13,(4),(3))
255 	addi	4, 4, 16
256 	STXVD2X	(14,(4),(3))
257 	addi	4, 4, 16
258 	STXVD2X	(15,(4),(3))
259 	addi	4, 4, 16
260 	STXVD2X	(16,(4),(3))
261 	addi	4, 4, 16
262 	STXVD2X	(17,(4),(3))
263 	addi	4, 4, 16
264 	STXVD2X	(18,(4),(3))
265 	addi	4, 4, 16
266 	STXVD2X	(19,(4),(3))
267 	addi	4, 4, 16
268 	STXVD2X	(20,(4),(3))
269 	addi	4, 4, 16
270 	STXVD2X	(21,(4),(3))
271 	addi	4, 4, 16
272 	STXVD2X	(22,(4),(3))
273 	addi	4, 4, 16
274 	STXVD2X	(23,(4),(3))
275 	addi	4, 4, 16
276 	STXVD2X	(24,(4),(3))
277 	addi	4, 4, 16
278 	STXVD2X	(25,(4),(3))
279 	addi	4, 4, 16
280 	STXVD2X	(26,(4),(3))
281 	addi	4, 4, 16
282 	STXVD2X	(27,(4),(3))
283 	addi	4, 4, 16
284 	STXVD2X	(28,(4),(3))
285 	addi	4, 4, 16
286 	STXVD2X	(29,(4),(3))
287 	addi	4, 4, 16
288 	STXVD2X	(30,(4),(3))
289 	addi	4, 4, 16
290 	STXVD2X	(31,(4),(3))
291 	addi	4, 4, 16
292 	STXVD2X	(32,(4),(3))
293 	addi	4, 4, 16
294 	STXVD2X	(33,(4),(3))
295 	addi	4, 4, 16
296 	STXVD2X	(34,(4),(3))
297 	addi	4, 4, 16
298 	STXVD2X	(35,(4),(3))
299 	addi	4, 4, 16
300 	STXVD2X	(36,(4),(3))
301 	addi	4, 4, 16
302 	STXVD2X	(37,(4),(3))
303 	addi	4, 4, 16
304 	STXVD2X	(38,(4),(3))
305 	addi	4, 4, 16
306 	STXVD2X	(39,(4),(3))
307 	addi	4, 4, 16
308 	STXVD2X	(40,(4),(3))
309 	addi	4, 4, 16
310 	STXVD2X	(41,(4),(3))
311 	addi	4, 4, 16
312 	STXVD2X	(42,(4),(3))
313 	addi	4, 4, 16
314 	STXVD2X	(43,(4),(3))
315 	addi	4, 4, 16
316 	STXVD2X	(44,(4),(3))
317 	addi	4, 4, 16
318 	STXVD2X	(45,(4),(3))
319 	addi	4, 4, 16
320 	STXVD2X	(46,(4),(3))
321 	addi	4, 4, 16
322 	STXVD2X	(47,(4),(3))
323 	addi	4, 4, 16
324 	STXVD2X	(48,(4),(3))
325 	addi	4, 4, 16
326 	STXVD2X	(49,(4),(3))
327 	addi	4, 4, 16
328 	STXVD2X	(50,(4),(3))
329 	addi	4, 4, 16
330 	STXVD2X	(51,(4),(3))
331 	addi	4, 4, 16
332 	STXVD2X	(52,(4),(3))
333 	addi	4, 4, 16
334 	STXVD2X	(53,(4),(3))
335 	addi	4, 4, 16
336 	STXVD2X	(54,(4),(3))
337 	addi	4, 4, 16
338 	STXVD2X	(55,(4),(3))
339 	addi	4, 4, 16
340 	STXVD2X	(56,(4),(3))
341 	addi	4, 4, 16
342 	STXVD2X	(57,(4),(3))
343 	addi	4, 4, 16
344 	STXVD2X	(58,(4),(3))
345 	addi	4, 4, 16
346 	STXVD2X	(59,(4),(3))
347 	addi	4, 4, 16
348 	STXVD2X	(60,(4),(3))
349 	addi	4, 4, 16
350 	STXVD2X	(61,(4),(3))
351 	addi	4, 4, 16
352 	STXVD2X	(62,(4),(3))
353 	addi	4, 4, 16
354 	STXVD2X	(63,(4),(3))
355 	blr
356 FUNC_END(storevsx)
357