From 50f5d29e491750664c559f140dfe358339cff146 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Mon, 30 Sep 2024 17:27:26 +0800 Subject: [PATCH] zuc: eia, ppc64x optimization #253 --- internal/cpuid/cpuid_amd64.go | 1 + internal/cpuid/cpuid_arm64.go | 1 + internal/cpuid/cpuid_arm64_darwin.go | 1 + internal/cpuid/cpuid_ppc64x.go | 1 + zuc/eia_asm.go | 2 +- zuc/eia_asm_ppc64x.s | 6 ++++++ 6 files changed, 11 insertions(+), 1 deletion(-) diff --git a/internal/cpuid/cpuid_amd64.go b/internal/cpuid/cpuid_amd64.go index 7903e62..abac744 100644 --- a/internal/cpuid/cpuid_amd64.go +++ b/internal/cpuid/cpuid_amd64.go @@ -4,3 +4,4 @@ import "golang.org/x/sys/cpu" var HasAES = cpu.X86.HasAES var HasGFMUL = cpu.X86.HasPCLMULQDQ +var HasVPMSUMD = false diff --git a/internal/cpuid/cpuid_arm64.go b/internal/cpuid/cpuid_arm64.go index 608f44d..c259f43 100644 --- a/internal/cpuid/cpuid_arm64.go +++ b/internal/cpuid/cpuid_arm64.go @@ -6,3 +6,4 @@ import "golang.org/x/sys/cpu" var HasAES = cpu.ARM64.HasAES var HasGFMUL = cpu.ARM64.HasPMULL +var HasVPMSUMD = false diff --git a/internal/cpuid/cpuid_arm64_darwin.go b/internal/cpuid/cpuid_arm64_darwin.go index 9b051d1..aac260b 100644 --- a/internal/cpuid/cpuid_arm64_darwin.go +++ b/internal/cpuid/cpuid_arm64_darwin.go @@ -8,3 +8,4 @@ package cpuid // to all Go programs running on darwin/arm64. var HasAES = true var HasGFMUL = true +var HasVPMSUMD = false \ No newline at end of file diff --git a/internal/cpuid/cpuid_ppc64x.go b/internal/cpuid/cpuid_ppc64x.go index a15273f..0955c9b 100644 --- a/internal/cpuid/cpuid_ppc64x.go +++ b/internal/cpuid/cpuid_ppc64x.go @@ -4,3 +4,4 @@ package cpuid var HasAES = true var HasGFMUL = false +var HasVPMSUMD = true diff --git a/zuc/eia_asm.go b/zuc/eia_asm.go index bf8f614..04733d1 100644 --- a/zuc/eia_asm.go +++ b/zuc/eia_asm.go @@ -8,7 +8,7 @@ import ( ) var supportsAES = cpuid.HasAES -var supportsGFMUL = cpuid.HasGFMUL +var supportsGFMUL = cpuid.HasGFMUL || cpuid.HasVPMSUMD var useAVX = cpu.X86.HasAVX //go:noescape diff --git a/zuc/eia_asm_ppc64x.s b/zuc/eia_asm_ppc64x.s index c7f320f..122b6ee 100644 --- a/zuc/eia_asm_ppc64x.s +++ b/zuc/eia_asm_ppc64x.s @@ -93,9 +93,15 @@ TEXT ·eia3Round16B(SB),NOSPLIT,$0 VXOR XTMP3, XTMP4, XTMP3 VSPLTW $2, XTMP3, XDIGEST + // Update tag MFVSRWZ XDIGEST, PTR MOVWZ (R3), R6 XOR R6, PTR, R6 MOVW R6, (R3) + // Copy last 16 bytes of KS to the front + MOVD $16, PTR + LXVD2X (PTR)(R4), XTMP1 + STXVD2X XTMP1, (R4)(R0) + RET