1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun#include <linux/linkage.h> 4*4882a593Smuzhiyun#include <asm/assembler.h> 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun .irp b, 0, 1, 2, 3, 4, 5, 6, 7, 8 7*4882a593Smuzhiyun .set .Lv\b\().4s, \b 8*4882a593Smuzhiyun .endr 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun .macro sm4e, rd, rn 11*4882a593Smuzhiyun .inst 0xcec08400 | .L\rd | (.L\rn << 5) 12*4882a593Smuzhiyun .endm 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun /* 15*4882a593Smuzhiyun * void sm4_ce_do_crypt(const u32 *rk, u32 *out, const u32 *in); 16*4882a593Smuzhiyun */ 17*4882a593Smuzhiyun .text 18*4882a593SmuzhiyunSYM_FUNC_START(sm4_ce_do_crypt) 19*4882a593Smuzhiyun ld1 {v8.4s}, [x2] 20*4882a593Smuzhiyun ld1 {v0.4s-v3.4s}, [x0], #64 21*4882a593SmuzhiyunCPU_LE( rev32 v8.16b, v8.16b ) 22*4882a593Smuzhiyun ld1 {v4.4s-v7.4s}, [x0] 23*4882a593Smuzhiyun sm4e v8.4s, v0.4s 24*4882a593Smuzhiyun sm4e v8.4s, v1.4s 25*4882a593Smuzhiyun sm4e v8.4s, v2.4s 26*4882a593Smuzhiyun sm4e v8.4s, v3.4s 27*4882a593Smuzhiyun sm4e v8.4s, v4.4s 28*4882a593Smuzhiyun sm4e v8.4s, v5.4s 29*4882a593Smuzhiyun sm4e v8.4s, v6.4s 30*4882a593Smuzhiyun sm4e v8.4s, v7.4s 31*4882a593Smuzhiyun rev64 v8.4s, v8.4s 32*4882a593Smuzhiyun ext v8.16b, v8.16b, v8.16b, #8 33*4882a593SmuzhiyunCPU_LE( rev32 v8.16b, v8.16b ) 34*4882a593Smuzhiyun st1 {v8.4s}, [x1] 35*4882a593Smuzhiyun ret 36*4882a593SmuzhiyunSYM_FUNC_END(sm4_ce_do_crypt) 37