From a33c2ae118a8f01e9c851b055ef61e2bcd5e369b Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Fri, 8 Nov 2024 09:25:02 +0800 Subject: [PATCH] zuc: eia256 ppc64x use VPERXOR for bit reverse #262 --- zuc/eia256_asm_ppc64x.s | 39 +++++++++++---------------------------- 1 file changed, 11 insertions(+), 28 deletions(-) diff --git a/zuc/eia256_asm_ppc64x.s b/zuc/eia256_asm_ppc64x.s index 5fd7c97..722d37a 100644 --- a/zuc/eia256_asm_ppc64x.s +++ b/zuc/eia256_asm_ppc64x.s @@ -20,7 +20,6 @@ #define KS_H V11 #define BIT_REV_TAB_L V12 #define BIT_REV_TAB_H V13 -#define BIT_REV_AND_TAB V14 #define ZERO V15 #define PTR R7 @@ -43,26 +42,18 @@ TEXT ·eia256RoundTag8(SB),NOSPLIT,$0 VPERM XDATA, XDATA, XTMP1, XDATA #endif - LXVD2X (PTR)(R0), BIT_REV_AND_TAB - VAND BIT_REV_AND_TAB, XDATA, XTMP3 VSPLTISB $4, XTMP2; - VSRW XDATA, XTMP2, XTMP1 - VAND BIT_REV_AND_TAB, XTMP1, XTMP1 - - MOVD $0x10, R8 - LXVD2X (PTR)(R8), BIT_REV_TAB_L + LXVD2X (PTR)(R0), BIT_REV_TAB_L VSLB BIT_REV_TAB_L, XTMP2, BIT_REV_TAB_H - VPERM BIT_REV_TAB_L, BIT_REV_TAB_L, XTMP1, XTMP1 - VPERM BIT_REV_TAB_H, BIT_REV_TAB_H, XTMP3, XTMP3 - VXOR XTMP1, XTMP3, XTMP3 // XTMP3 - bit reverse data bytes - + VPERMXOR BIT_REV_TAB_L, BIT_REV_TAB_H, XDATA, XTMP3 // XTMP3 - bit reverse data bytes + // ZUC authentication part, 4x32 data bits // setup data VSPLTISB $0, ZERO - MOVD $0x20, R8 + MOVD $0x10, R8 LXVD2X (PTR)(R8), XTMP4 VPERM ZERO, XTMP3, XTMP4, XTMP1 - MOVD $0x30, R8 + MOVD $0x20, R8 LXVD2X (PTR)(R8), XTMP4 VPERM ZERO, XTMP3, XTMP4, XTMP2 @@ -72,7 +63,7 @@ TEXT ·eia256RoundTag8(SB),NOSPLIT,$0 LXVW4X (R8)(R4), KS_M1 MOVD $16, R8 LXVW4X (R8)(R4), KS_M2 - MOVD $0x40, R8 + MOVD $0x30, R8 LXVD2X (PTR)(R8), XTMP4 VPERM KS_L, KS_L, XTMP4, KS_L VPERM KS_M1, KS_M1, XTMP4, KS_M1 @@ -131,26 +122,18 @@ TEXT ·eia256RoundTag16(SB),NOSPLIT,$0 VPERM XDATA, XDATA, XTMP1, XDATA #endif - LXVD2X (PTR)(R0), BIT_REV_AND_TAB - VAND BIT_REV_AND_TAB, XDATA, XTMP3 VSPLTISB $4, XTMP2; - VSRW XDATA, XTMP2, XTMP1 - VAND BIT_REV_AND_TAB, XTMP1, XTMP1 - - MOVD $0x10, R8 - LXVD2X (PTR)(R8), BIT_REV_TAB_L + LXVD2X (PTR)(R0), BIT_REV_TAB_L VSLB BIT_REV_TAB_L, XTMP2, BIT_REV_TAB_H - VPERM BIT_REV_TAB_L, BIT_REV_TAB_L, XTMP1, XTMP1 - VPERM BIT_REV_TAB_H, BIT_REV_TAB_H, XTMP3, XTMP3 - VXOR XTMP1, XTMP3, XTMP3 // XTMP3 - bit reverse data bytes + VPERMXOR BIT_REV_TAB_L, BIT_REV_TAB_H, XDATA, XTMP3 // XTMP3 - bit reverse data bytes // ZUC authentication part, 4x32 data bits // setup data VSPLTISB $0, ZERO - MOVD $0x20, R8 + MOVD $0x10, R8 LXVD2X (PTR)(R8), XTMP4 VPERM ZERO, XTMP3, XTMP4, XTMP1 - MOVD $0x30, R8 + MOVD $0x20, R8 LXVD2X (PTR)(R8), XTMP4 VPERM ZERO, XTMP3, XTMP4, XTMP2 @@ -161,7 +144,7 @@ TEXT ·eia256RoundTag16(SB),NOSPLIT,$0 MOVD $16, R8 LXVW4X (R8)(R4), KS_M2 VOR KS_M2, KS_M2, KS_H - MOVD $0x40, R8 + MOVD $0x30, R8 LXVD2X (PTR)(R8), XTMP4 VPERM KS_L, KS_L, XTMP4, KS_L VPERM KS_M1, KS_M1, XTMP4, KS_M1