1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
/*
* Copyright 2015, Cyril Bur, IBM Corp.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include "basic_asm.h"
/*
* Careful this will 'clobber' vsx (by design), VSX are always
* volatile though so unlike vmx this isn't so much of an issue
* Still should avoid calling from C
*/
FUNC_START(load_vsx)
li r5,0
lxvx vs20,r5,r3
addi r5,r5,16
lxvx vs21,r5,r3
addi r5,r5,16
lxvx vs22,r5,r3
addi r5,r5,16
lxvx vs23,r5,r3
addi r5,r5,16
lxvx vs24,r5,r3
addi r5,r5,16
lxvx vs25,r5,r3
addi r5,r5,16
lxvx vs26,r5,r3
addi r5,r5,16
lxvx vs27,r5,r3
addi r5,r5,16
lxvx vs28,r5,r3
addi r5,r5,16
lxvx vs29,r5,r3
addi r5,r5,16
lxvx vs30,r5,r3
addi r5,r5,16
lxvx vs31,r5,r3
blr
FUNC_END(load_vsx)
FUNC_START(store_vsx)
li r5,0
stxvx vs20,r5,r3
addi r5,r5,16
stxvx vs21,r5,r3
addi r5,r5,16
stxvx vs22,r5,r3
addi r5,r5,16
stxvx vs23,r5,r3
addi r5,r5,16
stxvx vs24,r5,r3
addi r5,r5,16
stxvx vs25,r5,r3
addi r5,r5,16
stxvx vs26,r5,r3
addi r5,r5,16
stxvx vs27,r5,r3
addi r5,r5,16
stxvx vs28,r5,r3
addi r5,r5,16
stxvx vs29,r5,r3
addi r5,r5,16
stxvx vs30,r5,r3
addi r5,r5,16
stxvx vs31,r5,r3
blr
FUNC_END(store_vsx)
|