mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
757 B
36 lines
757 B
// SPDX-License-Identifier: GPL-2.0 |
|
|
|
#include <linux/linkage.h> |
|
#include <asm/assembler.h> |
|
|
|
.irp b, 0, 1, 2, 3, 4, 5, 6, 7, 8 |
|
.set .Lv\b\().4s, \b |
|
.endr |
|
|
|
.macro sm4e, rd, rn |
|
.inst 0xcec08400 | .L\rd | (.L\rn << 5) |
|
.endm |
|
|
|
/* |
|
* void sm4_ce_do_crypt(const u32 *rk, u32 *out, const u32 *in); |
|
*/ |
|
.text |
|
SYM_FUNC_START(sm4_ce_do_crypt) |
|
ld1 {v8.4s}, [x2] |
|
ld1 {v0.4s-v3.4s}, [x0], #64 |
|
CPU_LE( rev32 v8.16b, v8.16b ) |
|
ld1 {v4.4s-v7.4s}, [x0] |
|
sm4e v8.4s, v0.4s |
|
sm4e v8.4s, v1.4s |
|
sm4e v8.4s, v2.4s |
|
sm4e v8.4s, v3.4s |
|
sm4e v8.4s, v4.4s |
|
sm4e v8.4s, v5.4s |
|
sm4e v8.4s, v6.4s |
|
sm4e v8.4s, v7.4s |
|
rev64 v8.4s, v8.4s |
|
ext v8.16b, v8.16b, v8.16b, #8 |
|
CPU_LE( rev32 v8.16b, v8.16b ) |
|
st1 {v8.4s}, [x1] |
|
ret |
|
SYM_FUNC_END(sm4_ce_do_crypt)
|
|
|