mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-28 05:06:18 +08:00
[SM4] refactoring
This commit is contained in:
parent
4ed467a7d4
commit
32da31b074
138
sm4/asm_arm64.s
138
sm4/asm_arm64.s
@ -108,6 +108,27 @@ GLOBL fk_mask<>(SB), (NOPTR+RODATA), $16
|
|||||||
VEOR XTMP7.B16, y.B16, y.B16; \
|
VEOR XTMP7.B16, y.B16, y.B16; \
|
||||||
VEOR x.B16, y.B16, x.B16
|
VEOR x.B16, y.B16, x.B16
|
||||||
|
|
||||||
|
#define SM4_ROUND(RK, x, y, t0, t1, t2, t3) \
|
||||||
|
MOVW.P 4(RK), R19; \
|
||||||
|
VMOV R19, x.S4; \
|
||||||
|
VEOR t1.B16, x.B16, x.B16; \
|
||||||
|
VEOR t2.B16, x.B16, x.B16; \
|
||||||
|
VEOR t3.B16, x.B16, x.B16; \
|
||||||
|
SM4_TAO_L1(x, y); \
|
||||||
|
VEOR x.B16, t0.B16, t0.B16
|
||||||
|
|
||||||
|
#define SM4_EXPANDKEY_ROUND(x, y, t0, t1, t2, t3) \
|
||||||
|
MOVW.P 4(R9), R19; \
|
||||||
|
VMOV R19, x.S[0]; \
|
||||||
|
VEOR t1.B16, x.B16, x.B16; \
|
||||||
|
VEOR t2.B16, x.B16, x.B16; \
|
||||||
|
VEOR t3.B16, x.B16, x.B16; \
|
||||||
|
SM4_TAO_L2(x, y); \
|
||||||
|
VEOR x.B16, t0.B16, t0.B16; \
|
||||||
|
VMOV t0.S[0], R2; \
|
||||||
|
MOVW.P R2, 4(R10); \
|
||||||
|
MOVW.P R2, -4(R11)
|
||||||
|
|
||||||
#define load_global_data_1() \
|
#define load_global_data_1() \
|
||||||
LDP nibble_mask<>(SB), (R0, R1) \
|
LDP nibble_mask<>(SB), (R0, R1) \
|
||||||
VMOV R0, NIBBLE_MASK.D[0] \
|
VMOV R0, NIBBLE_MASK.D[0] \
|
||||||
@ -164,49 +185,10 @@ TEXT ·expandKeyAsm(SB),NOSPLIT,$0
|
|||||||
VEOR ZERO.B16, ZERO.B16, ZERO.B16
|
VEOR ZERO.B16, ZERO.B16, ZERO.B16
|
||||||
|
|
||||||
ksLoop:
|
ksLoop:
|
||||||
MOVW.P 4(R9), R19
|
SM4_EXPANDKEY_ROUND(x, y, t0, t1, t2, t3)
|
||||||
VMOV R19, x.S[0]
|
SM4_EXPANDKEY_ROUND(x, y, t1, t2, t3, t0)
|
||||||
VEOR t1.B16, x.B16, x.B16
|
SM4_EXPANDKEY_ROUND(x, y, t2, t3, t0, t1)
|
||||||
VEOR t2.B16, x.B16, x.B16
|
SM4_EXPANDKEY_ROUND(x, y, t3, t0, t1, t2)
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L2(x, y)
|
|
||||||
VEOR x.B16, t0.B16, t0.B16
|
|
||||||
VMOV t0.S[0], R2
|
|
||||||
MOVW.P R2, 4(R10)
|
|
||||||
MOVW.P R2, -4(R11)
|
|
||||||
|
|
||||||
MOVW.P 4(R9), R19
|
|
||||||
VMOV R19, x.S[0]
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t2.B16, x.B16, x.B16
|
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L2(x, y)
|
|
||||||
VEOR x.B16, t1.B16, t1.B16
|
|
||||||
VMOV t1.S[0], R2
|
|
||||||
MOVW.P R2, 4(R10)
|
|
||||||
MOVW.P R2, -4(R11)
|
|
||||||
|
|
||||||
MOVW.P 4(R9), R19
|
|
||||||
VMOV R19, x.S[0]
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t1.B16, x.B16, x.B16
|
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L2(x, y)
|
|
||||||
VEOR x.B16, t2.B16, t2.B16
|
|
||||||
VMOV t2.S[0], R2
|
|
||||||
MOVW.P R2, 4(R10)
|
|
||||||
MOVW.P R2, -4(R11)
|
|
||||||
|
|
||||||
MOVW.P 4(R9), R19
|
|
||||||
VMOV R19, x.S[0]
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t1.B16, x.B16, x.B16
|
|
||||||
VEOR t2.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L2(x, y)
|
|
||||||
VEOR x.B16, t3.B16, t3.B16
|
|
||||||
VMOV t3.S[0], R2
|
|
||||||
MOVW.P R2, 4(R10)
|
|
||||||
MOVW.P R2, -4(R11)
|
|
||||||
|
|
||||||
ADD $16, R0
|
ADD $16, R0
|
||||||
CMP $128, R0
|
CMP $128, R0
|
||||||
@ -252,37 +234,10 @@ TEXT ·encryptBlocksAsm(SB),NOSPLIT,$0
|
|||||||
EOR R0, R0
|
EOR R0, R0
|
||||||
|
|
||||||
encryptBlocksLoop:
|
encryptBlocksLoop:
|
||||||
MOVW.P 4(R8), R19
|
SM4_ROUND(R8, x, y, t0, t1, t2, t3)
|
||||||
VMOV R19, x.S4
|
SM4_ROUND(R8, x, y, t1, t2, t3, t0)
|
||||||
VEOR t1.B16, x.B16, x.B16
|
SM4_ROUND(R8, x, y, t2, t3, t0, t1)
|
||||||
VEOR t2.B16, x.B16, x.B16
|
SM4_ROUND(R8, x, y, t3, t0, t1, t2)
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L1(x, y)
|
|
||||||
VEOR x.B16, t0.B16, t0.B16
|
|
||||||
|
|
||||||
MOVW.P 4(R8), R19
|
|
||||||
VMOV R19, x.S4
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t2.B16, x.B16, x.B16
|
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L1(x, y)
|
|
||||||
VEOR x.B16, t1.B16, t1.B16
|
|
||||||
|
|
||||||
MOVW.P 4(R8), R19
|
|
||||||
VMOV R19, x.S4
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t1.B16, x.B16, x.B16
|
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L1(x, y)
|
|
||||||
VEOR x.B16, t2.B16, t2.B16
|
|
||||||
|
|
||||||
MOVW.P 4(R8), R19
|
|
||||||
VMOV R19, x.S4
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t1.B16, x.B16, x.B16
|
|
||||||
VEOR t2.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L1(x, y)
|
|
||||||
VEOR x.B16, t3.B16, t3.B16
|
|
||||||
|
|
||||||
ADD $16, R0
|
ADD $16, R0
|
||||||
CMP $128, R0
|
CMP $128, R0
|
||||||
@ -338,37 +293,10 @@ TEXT ·encryptBlockAsm(SB),NOSPLIT,$0
|
|||||||
EOR R0, R0
|
EOR R0, R0
|
||||||
|
|
||||||
encryptBlockLoop:
|
encryptBlockLoop:
|
||||||
MOVW.P 4(R8), R19
|
SM4_ROUND(R8, x, y, t0, t1, t2, t3)
|
||||||
VMOV R19, x.S4
|
SM4_ROUND(R8, x, y, t1, t2, t3, t0)
|
||||||
VEOR t1.B16, x.B16, x.B16
|
SM4_ROUND(R8, x, y, t2, t3, t0, t1)
|
||||||
VEOR t2.B16, x.B16, x.B16
|
SM4_ROUND(R8, x, y, t3, t0, t1, t2)
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L1(x, y)
|
|
||||||
VEOR x.B16, t0.B16, t0.B16
|
|
||||||
|
|
||||||
MOVW.P 4(R8), R19
|
|
||||||
VMOV R19, x.S4
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t2.B16, x.B16, x.B16
|
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L1(x, y)
|
|
||||||
VEOR x.B16, t1.B16, t1.B16
|
|
||||||
|
|
||||||
MOVW.P 4(R8), R19
|
|
||||||
VMOV R19, x.S4
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t1.B16, x.B16, x.B16
|
|
||||||
VEOR t3.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L1(x, y)
|
|
||||||
VEOR x.B16, t2.B16, t2.B16
|
|
||||||
|
|
||||||
MOVW.P 4(R8), R19
|
|
||||||
VMOV R19, x.S4
|
|
||||||
VEOR t0.B16, x.B16, x.B16
|
|
||||||
VEOR t1.B16, x.B16, x.B16
|
|
||||||
VEOR t2.B16, x.B16, x.B16
|
|
||||||
SM4_TAO_L1(x, y)
|
|
||||||
VEOR x.B16, t3.B16, t3.B16
|
|
||||||
|
|
||||||
ADD $16, R0
|
ADD $16, R0
|
||||||
CMP $128, R0
|
CMP $128, R0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user