xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/powerpc/include/vsx_asm.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Copyright 2015, Cyril Bur, IBM Corp.
4*4882a593Smuzhiyun  */
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun #include "basic_asm.h"
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun /*
9*4882a593Smuzhiyun  * Careful this will 'clobber' vsx (by design), VSX are always
10*4882a593Smuzhiyun  * volatile though so unlike vmx this isn't so much of an issue
11*4882a593Smuzhiyun  * Still should avoid calling from C
12*4882a593Smuzhiyun  */
13*4882a593Smuzhiyun FUNC_START(load_vsx)
14*4882a593Smuzhiyun 	li	r5,0
15*4882a593Smuzhiyun 	lxvd2x	vs20,r5,r3
16*4882a593Smuzhiyun 	addi	r5,r5,16
17*4882a593Smuzhiyun 	lxvd2x	vs21,r5,r3
18*4882a593Smuzhiyun 	addi	r5,r5,16
19*4882a593Smuzhiyun 	lxvd2x	vs22,r5,r3
20*4882a593Smuzhiyun 	addi	r5,r5,16
21*4882a593Smuzhiyun 	lxvd2x	vs23,r5,r3
22*4882a593Smuzhiyun 	addi	r5,r5,16
23*4882a593Smuzhiyun 	lxvd2x	vs24,r5,r3
24*4882a593Smuzhiyun 	addi	r5,r5,16
25*4882a593Smuzhiyun 	lxvd2x	vs25,r5,r3
26*4882a593Smuzhiyun 	addi	r5,r5,16
27*4882a593Smuzhiyun 	lxvd2x	vs26,r5,r3
28*4882a593Smuzhiyun 	addi	r5,r5,16
29*4882a593Smuzhiyun 	lxvd2x	vs27,r5,r3
30*4882a593Smuzhiyun 	addi	r5,r5,16
31*4882a593Smuzhiyun 	lxvd2x	vs28,r5,r3
32*4882a593Smuzhiyun 	addi	r5,r5,16
33*4882a593Smuzhiyun 	lxvd2x	vs29,r5,r3
34*4882a593Smuzhiyun 	addi	r5,r5,16
35*4882a593Smuzhiyun 	lxvd2x	vs30,r5,r3
36*4882a593Smuzhiyun 	addi	r5,r5,16
37*4882a593Smuzhiyun 	lxvd2x	vs31,r5,r3
38*4882a593Smuzhiyun 	blr
39*4882a593Smuzhiyun FUNC_END(load_vsx)
40*4882a593Smuzhiyun 
41*4882a593Smuzhiyun FUNC_START(store_vsx)
42*4882a593Smuzhiyun 	li	r5,0
43*4882a593Smuzhiyun 	stxvd2x	vs20,r5,r3
44*4882a593Smuzhiyun 	addi	r5,r5,16
45*4882a593Smuzhiyun 	stxvd2x	vs21,r5,r3
46*4882a593Smuzhiyun 	addi	r5,r5,16
47*4882a593Smuzhiyun 	stxvd2x	vs22,r5,r3
48*4882a593Smuzhiyun 	addi	r5,r5,16
49*4882a593Smuzhiyun 	stxvd2x	vs23,r5,r3
50*4882a593Smuzhiyun 	addi	r5,r5,16
51*4882a593Smuzhiyun 	stxvd2x	vs24,r5,r3
52*4882a593Smuzhiyun 	addi	r5,r5,16
53*4882a593Smuzhiyun 	stxvd2x	vs25,r5,r3
54*4882a593Smuzhiyun 	addi	r5,r5,16
55*4882a593Smuzhiyun 	stxvd2x	vs26,r5,r3
56*4882a593Smuzhiyun 	addi	r5,r5,16
57*4882a593Smuzhiyun 	stxvd2x	vs27,r5,r3
58*4882a593Smuzhiyun 	addi	r5,r5,16
59*4882a593Smuzhiyun 	stxvd2x	vs28,r5,r3
60*4882a593Smuzhiyun 	addi	r5,r5,16
61*4882a593Smuzhiyun 	stxvd2x	vs29,r5,r3
62*4882a593Smuzhiyun 	addi	r5,r5,16
63*4882a593Smuzhiyun 	stxvd2x	vs30,r5,r3
64*4882a593Smuzhiyun 	addi	r5,r5,16
65*4882a593Smuzhiyun 	stxvd2x	vs31,r5,r3
66*4882a593Smuzhiyun 	blr
67*4882a593Smuzhiyun FUNC_END(store_vsx)
68