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