diff --git a/sm3/sm3block_arm64.go b/sm3/sm3block_arm64.go index de6a808..75616c7 100644 --- a/sm3/sm3block_arm64.go +++ b/sm3/sm3block_arm64.go @@ -9,7 +9,7 @@ import ( var useSM3NI = cpu.ARM64.HasSM3 && os.Getenv("DISABLE_SM3NI") != "1" -var t = []uint32{ +var t = [...]uint32{ 0x79cc4519, 0x9d8a7a87, } @@ -18,13 +18,13 @@ var t = []uint32{ func blockARM64(dig *digest, p []byte) //go:noescape -func blockSM3NI(h []uint32, p []byte, t []uint32) +func blockSM3NI(h []uint32, p []byte, t *uint32) func block(dig *digest, p []byte) { if !useSM3NI { blockARM64(dig, p) } else { h := dig.h[:] - blockSM3NI(h, p, t) + blockSM3NI(h, p, &t[0]) } } diff --git a/sm3/sm3blockni_arm64.s b/sm3/sm3blockni_arm64.s index 67a440b..b4d9ca1 100644 --- a/sm3/sm3blockni_arm64.s +++ b/sm3/sm3blockni_arm64.s @@ -3,12 +3,12 @@ #include "textflag.h" -// func blockSM3NI(h []uint32, p []byte, t []uint32) +// func blockSM3NI(h []uint32, p []byte, t *uint32) TEXT ·blockSM3NI(SB), 0, $0 MOVD h_base+0(FP), R0 // Hash value first address MOVD p_base+24(FP), R1 // message first address MOVD p_len+32(FP), R3 // message length - MOVD t_base+48(FP), R2 // t constants first address + MOVD t+48(FP), R2 // t constants first address VLD1 (R0), [V8.S4, V9.S4] // load h(a,b,c,d,e,f,g,h) VREV64 V8.S4, V8.S4