18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci#include <linux/linkage.h> 48c2ecf20Sopenharmony_ci#include <asm/assembler.h> 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci .irp b, 0, 1, 2, 3, 4, 5, 6, 7, 8 78c2ecf20Sopenharmony_ci .set .Lv\b\().4s, \b 88c2ecf20Sopenharmony_ci .endr 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci .macro sm4e, rd, rn 118c2ecf20Sopenharmony_ci .inst 0xcec08400 | .L\rd | (.L\rn << 5) 128c2ecf20Sopenharmony_ci .endm 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci /* 158c2ecf20Sopenharmony_ci * void sm4_ce_do_crypt(const u32 *rk, u32 *out, const u32 *in); 168c2ecf20Sopenharmony_ci */ 178c2ecf20Sopenharmony_ci .text 188c2ecf20Sopenharmony_ciSYM_FUNC_START(sm4_ce_do_crypt) 198c2ecf20Sopenharmony_ci ld1 {v8.4s}, [x2] 208c2ecf20Sopenharmony_ci ld1 {v0.4s-v3.4s}, [x0], #64 218c2ecf20Sopenharmony_ciCPU_LE( rev32 v8.16b, v8.16b ) 228c2ecf20Sopenharmony_ci ld1 {v4.4s-v7.4s}, [x0] 238c2ecf20Sopenharmony_ci sm4e v8.4s, v0.4s 248c2ecf20Sopenharmony_ci sm4e v8.4s, v1.4s 258c2ecf20Sopenharmony_ci sm4e v8.4s, v2.4s 268c2ecf20Sopenharmony_ci sm4e v8.4s, v3.4s 278c2ecf20Sopenharmony_ci sm4e v8.4s, v4.4s 288c2ecf20Sopenharmony_ci sm4e v8.4s, v5.4s 298c2ecf20Sopenharmony_ci sm4e v8.4s, v6.4s 308c2ecf20Sopenharmony_ci sm4e v8.4s, v7.4s 318c2ecf20Sopenharmony_ci rev64 v8.4s, v8.4s 328c2ecf20Sopenharmony_ci ext v8.16b, v8.16b, v8.16b, #8 338c2ecf20Sopenharmony_ciCPU_LE( rev32 v8.16b, v8.16b ) 348c2ecf20Sopenharmony_ci st1 {v8.4s}, [x1] 358c2ecf20Sopenharmony_ci ret 368c2ecf20Sopenharmony_ciSYM_FUNC_END(sm4_ce_do_crypt) 37