/* SPDX-License-Identifier: GPL-2.0-or-later */ /* * Copyright (C) 2021 SiFive */ #include #include #include SYM_FUNC_START(xor_regs_2_) vsetvli a3, a0, e8, m8, ta, ma vle8.v v0, (a1) vle8.v v8, (a2) sub a0, a0, a3 vxor.vv v16, v0, v8 add a2, a2, a3 vse8.v v16, (a1) add a1, a1, a3 bnez a0, xor_regs_2_ ret SYM_FUNC_END(xor_regs_2_) EXPORT_SYMBOL(xor_regs_2_) SYM_FUNC_START(xor_regs_3_) vsetvli a4, a0, e8, m8, ta, ma vle8.v v0, (a1) vle8.v v8, (a2) sub a0, a0, a4 vxor.vv v0, v0, v8 vle8.v v16, (a3) add a2, a2, a4 vxor.vv v16, v0, v16 add a3, a3, a4 vse8.v v16, (a1) add a1, a1, a4 bnez a0, xor_regs_3_ ret SYM_FUNC_END(xor_regs_3_) EXPORT_SYMBOL(xor_regs_3_) SYM_FUNC_START(xor_regs_4_) vsetvli a5, a0, e8, m8, ta, ma vle8.v v0, (a1) vle8.v v8, (a2) sub a0, a0, a5 vxor.vv v0, v0, v8 vle8.v v16, (a3) add a2, a2, a5 vxor.vv v0, v0, v16 vle8.v v24, (a4) add a3, a3, a5 vxor.vv v16, v0, v24 add a4, a4, a5 vse8.v v16, (a1) add a1, a1, a5 bnez a0, xor_regs_4_ ret SYM_FUNC_END(xor_regs_4_) EXPORT_SYMBOL(xor_regs_4_) SYM_FUNC_START(xor_regs_5_) vsetvli a6, a0, e8, m8, ta, ma vle8.v v0, (a1) vle8.v v8, (a2) sub a0, a0, a6 vxor.vv v0, v0, v8 vle8.v v16, (a3) add a2, a2, a6 vxor.vv v0, v0, v16 vle8.v v24, (a4) add a3, a3, a6 vxor.vv v0, v0, v24 vle8.v v8, (a5) add a4, a4, a6 vxor.vv v16, v0, v8 add a5, a5, a6 vse8.v v16, (a1) add a1, a1, a6 bnez a0, xor_regs_5_ ret SYM_FUNC_END(xor_regs_5_) EXPORT_SYMBOL(xor_regs_5_)