1*5265d55bSChristoph Hellwig/* SPDX-License-Identifier: GPL-2.0-or-later */ 2*5265d55bSChristoph Hellwig/* 3*5265d55bSChristoph Hellwig * Copyright (C) 2021 SiFive 4*5265d55bSChristoph Hellwig */ 5*5265d55bSChristoph Hellwig#include <linux/linkage.h> 6*5265d55bSChristoph Hellwig#include <linux/export.h> 7*5265d55bSChristoph Hellwig#include <asm/asm.h> 8*5265d55bSChristoph Hellwig 9*5265d55bSChristoph HellwigSYM_FUNC_START(xor_regs_2_) 10*5265d55bSChristoph Hellwig vsetvli a3, a0, e8, m8, ta, ma 11*5265d55bSChristoph Hellwig vle8.v v0, (a1) 12*5265d55bSChristoph Hellwig vle8.v v8, (a2) 13*5265d55bSChristoph Hellwig sub a0, a0, a3 14*5265d55bSChristoph Hellwig vxor.vv v16, v0, v8 15*5265d55bSChristoph Hellwig add a2, a2, a3 16*5265d55bSChristoph Hellwig vse8.v v16, (a1) 17*5265d55bSChristoph Hellwig add a1, a1, a3 18*5265d55bSChristoph Hellwig bnez a0, xor_regs_2_ 19*5265d55bSChristoph Hellwig ret 20*5265d55bSChristoph HellwigSYM_FUNC_END(xor_regs_2_) 21*5265d55bSChristoph Hellwig 22*5265d55bSChristoph HellwigSYM_FUNC_START(xor_regs_3_) 23*5265d55bSChristoph Hellwig vsetvli a4, a0, e8, m8, ta, ma 24*5265d55bSChristoph Hellwig vle8.v v0, (a1) 25*5265d55bSChristoph Hellwig vle8.v v8, (a2) 26*5265d55bSChristoph Hellwig sub a0, a0, a4 27*5265d55bSChristoph Hellwig vxor.vv v0, v0, v8 28*5265d55bSChristoph Hellwig vle8.v v16, (a3) 29*5265d55bSChristoph Hellwig add a2, a2, a4 30*5265d55bSChristoph Hellwig vxor.vv v16, v0, v16 31*5265d55bSChristoph Hellwig add a3, a3, a4 32*5265d55bSChristoph Hellwig vse8.v v16, (a1) 33*5265d55bSChristoph Hellwig add a1, a1, a4 34*5265d55bSChristoph Hellwig bnez a0, xor_regs_3_ 35*5265d55bSChristoph Hellwig ret 36*5265d55bSChristoph HellwigSYM_FUNC_END(xor_regs_3_) 37*5265d55bSChristoph Hellwig 38*5265d55bSChristoph HellwigSYM_FUNC_START(xor_regs_4_) 39*5265d55bSChristoph Hellwig vsetvli a5, a0, e8, m8, ta, ma 40*5265d55bSChristoph Hellwig vle8.v v0, (a1) 41*5265d55bSChristoph Hellwig vle8.v v8, (a2) 42*5265d55bSChristoph Hellwig sub a0, a0, a5 43*5265d55bSChristoph Hellwig vxor.vv v0, v0, v8 44*5265d55bSChristoph Hellwig vle8.v v16, (a3) 45*5265d55bSChristoph Hellwig add a2, a2, a5 46*5265d55bSChristoph Hellwig vxor.vv v0, v0, v16 47*5265d55bSChristoph Hellwig vle8.v v24, (a4) 48*5265d55bSChristoph Hellwig add a3, a3, a5 49*5265d55bSChristoph Hellwig vxor.vv v16, v0, v24 50*5265d55bSChristoph Hellwig add a4, a4, a5 51*5265d55bSChristoph Hellwig vse8.v v16, (a1) 52*5265d55bSChristoph Hellwig add a1, a1, a5 53*5265d55bSChristoph Hellwig bnez a0, xor_regs_4_ 54*5265d55bSChristoph Hellwig ret 55*5265d55bSChristoph HellwigSYM_FUNC_END(xor_regs_4_) 56*5265d55bSChristoph Hellwig 57*5265d55bSChristoph HellwigSYM_FUNC_START(xor_regs_5_) 58*5265d55bSChristoph Hellwig vsetvli a6, a0, e8, m8, ta, ma 59*5265d55bSChristoph Hellwig vle8.v v0, (a1) 60*5265d55bSChristoph Hellwig vle8.v v8, (a2) 61*5265d55bSChristoph Hellwig sub a0, a0, a6 62*5265d55bSChristoph Hellwig vxor.vv v0, v0, v8 63*5265d55bSChristoph Hellwig vle8.v v16, (a3) 64*5265d55bSChristoph Hellwig add a2, a2, a6 65*5265d55bSChristoph Hellwig vxor.vv v0, v0, v16 66*5265d55bSChristoph Hellwig vle8.v v24, (a4) 67*5265d55bSChristoph Hellwig add a3, a3, a6 68*5265d55bSChristoph Hellwig vxor.vv v0, v0, v24 69*5265d55bSChristoph Hellwig vle8.v v8, (a5) 70*5265d55bSChristoph Hellwig add a4, a4, a6 71*5265d55bSChristoph Hellwig vxor.vv v16, v0, v8 72*5265d55bSChristoph Hellwig add a5, a5, a6 73*5265d55bSChristoph Hellwig vse8.v v16, (a1) 74*5265d55bSChristoph Hellwig add a1, a1, a6 75*5265d55bSChristoph Hellwig bnez a0, xor_regs_5_ 76*5265d55bSChristoph Hellwig ret 77*5265d55bSChristoph HellwigSYM_FUNC_END(xor_regs_5_) 78