Save and restore VSX registers
This commit is contained in:
@@ -83,8 +83,9 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#ifdef __64BIT__
|
||||
#define STACKSIZE 340
|
||||
#define ALPHA_SP 296(SP)
|
||||
#define FZERO 304(SP)
|
||||
#define STACKSIZE 540
|
||||
#define ALPHA_SP 296+200(SP)
|
||||
#define FZERO 304+200(SP)
|
||||
#else
|
||||
#define STACKSIZE 240
|
||||
#define ALPHA_SP 224(SP)
|
||||
@@ -132,6 +133,8 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#define o0 0
|
||||
|
||||
#define VECSAVE r11
|
||||
|
||||
#define TBUFFER r13
|
||||
#define o12 r14
|
||||
#define o4 r15
|
||||
@@ -207,6 +210,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
std r15, 272(SP)
|
||||
std r14, 280(SP)
|
||||
std r13, 288(SP)
|
||||
addi r11, SP, 304
|
||||
#else
|
||||
stw r31, 144(SP)
|
||||
stw r30, 148(SP)
|
||||
@@ -226,8 +230,34 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
stw r16, 204(SP)
|
||||
stw r15, 208(SP)
|
||||
stw r14, 212(SP)
|
||||
stw r13, 216(SP)
|
||||
stw r13, 216(SP)
|
||||
addi r11, SP, 224
|
||||
#endif
|
||||
stvx v20, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v21, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v22, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v23, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v24, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v25, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v26, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v27, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v28, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v29, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v30, r11, r0
|
||||
addi r11, r11, 16
|
||||
stvx v31, r11, r0
|
||||
li r11, 0
|
||||
|
||||
|
||||
// stfd f1, ALPHA_SP
|
||||
// stw r0, FZERO
|
||||
@@ -271,16 +301,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
cmpwi cr0, K, 0
|
||||
ble L999_H1
|
||||
|
||||
li PRE, 256
|
||||
li PRE, 256
|
||||
li o4 , 4
|
||||
li o8 , 8
|
||||
li o12, 12
|
||||
li o16, 16
|
||||
li o32, 32
|
||||
li o48, 48
|
||||
addi TBUFFER, SP, 320
|
||||
addi TBUFFER, SP, 320+200
|
||||
|
||||
addi T1, SP, 300
|
||||
addi T1, SP, 300+200
|
||||
stxsspx f1, o0 , T1
|
||||
stxsspx f1, o4 , T1
|
||||
stxsspx f1, o8 , T1
|
||||
@@ -339,6 +369,7 @@ L999:
|
||||
ld r15, 272(SP)
|
||||
ld r14, 280(SP)
|
||||
ld r13, 288(SP)
|
||||
addi r11, SP, 304
|
||||
#else
|
||||
lwz r31, 144(SP)
|
||||
lwz r30, 148(SP)
|
||||
@@ -359,10 +390,34 @@ L999:
|
||||
lwz r15, 208(SP)
|
||||
lwz r14, 212(SP)
|
||||
lwz r13, 216(SP)
|
||||
addi r11, SP, 224
|
||||
#endif
|
||||
lvx v20, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v21, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v22, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v23, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v24, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v25, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v26, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v27, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v28, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v29, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v30, r11, r3
|
||||
addi r11, r11, 16
|
||||
lvx v31, r11, r3
|
||||
li r11, 0
|
||||
|
||||
addi SP, SP, STACKSIZE
|
||||
|
||||
blr
|
||||
|
||||
EPILOGUE
|
||||
|
||||
Reference in New Issue
Block a user