Skip to content

Commit

Permalink
sm4: ppc64x, missing macro #249
Browse files Browse the repository at this point in the history
  • Loading branch information
emmansun authored Sep 12, 2024
1 parent 420b9e9 commit 0dba120
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions sm4/asm_ppc64x.s
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,26 @@ GLOBL ·rcon(SB), RODATA, $192
VRLW tmp1, tmp3, tmp1; \ // tmp1 = (x xor (x <<< 8) xor (x <<< 16)) <<< 2
VXOR tmp1, x, x

// SM4 round function
// t0 ^= tao_l1(t1^t2^t3^xk)
// parameters:
// - RK: round key register
// - x: 128 bits temp register
// - tmp1: 128 bits temp register
// - tmp2: 128 bits temp register
// - tmp3: 128 bits temp register
// - t0: 128 bits register for data as result
// - t1: 128 bits register for data
// - t2: 128 bits register for data
// - t3: 128 bits register for data
#define SM4_ROUND(RK, x, tmp1, tmp2, tmp3, t0, t1, t2, t3) \
VXOR RK, x, x; \
VXOR t1, x, x; \
VXOR t2, x, x; \
VXOR t3, x, x; \
SM4_TAO_L1(x, tmp1, tmp2, tmp3); \
VXOR x, t0, t0

// func expandKeyAsm(key *byte, ck, enc, dec *uint32, inst int)
TEXT ·expandKeyAsm(SB),NOSPLIT,$0
// prepare/load constants
Expand Down

0 comments on commit 0dba120

Please sign in to comment.