zuc: eia256 ppc64x use VPERXOR for bit reverse #262

This commit is contained in:
Sun Yimin 2024-11-08 09:25:02 +08:00 committed by GitHub
parent 9057b79253
commit a33c2ae118
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,7 +20,6 @@
#define KS_H V11 #define KS_H V11
#define BIT_REV_TAB_L V12 #define BIT_REV_TAB_L V12
#define BIT_REV_TAB_H V13 #define BIT_REV_TAB_H V13
#define BIT_REV_AND_TAB V14
#define ZERO V15 #define ZERO V15
#define PTR R7 #define PTR R7
@ -43,26 +42,18 @@ TEXT ·eia256RoundTag8(SB),NOSPLIT,$0
VPERM XDATA, XDATA, XTMP1, XDATA VPERM XDATA, XDATA, XTMP1, XDATA
#endif #endif
LXVD2X (PTR)(R0), BIT_REV_AND_TAB
VAND BIT_REV_AND_TAB, XDATA, XTMP3
VSPLTISB $4, XTMP2; VSPLTISB $4, XTMP2;
VSRW XDATA, XTMP2, XTMP1 LXVD2X (PTR)(R0), BIT_REV_TAB_L
VAND BIT_REV_AND_TAB, XTMP1, XTMP1
MOVD $0x10, R8
LXVD2X (PTR)(R8), BIT_REV_TAB_L
VSLB BIT_REV_TAB_L, XTMP2, BIT_REV_TAB_H VSLB BIT_REV_TAB_L, XTMP2, BIT_REV_TAB_H
VPERM BIT_REV_TAB_L, BIT_REV_TAB_L, XTMP1, XTMP1 VPERMXOR BIT_REV_TAB_L, BIT_REV_TAB_H, XDATA, XTMP3 // XTMP3 - bit reverse data bytes
VPERM BIT_REV_TAB_H, BIT_REV_TAB_H, XTMP3, XTMP3
VXOR XTMP1, XTMP3, XTMP3 // XTMP3 - bit reverse data bytes
// ZUC authentication part, 4x32 data bits // ZUC authentication part, 4x32 data bits
// setup data // setup data
VSPLTISB $0, ZERO VSPLTISB $0, ZERO
MOVD $0x20, R8 MOVD $0x10, R8
LXVD2X (PTR)(R8), XTMP4 LXVD2X (PTR)(R8), XTMP4
VPERM ZERO, XTMP3, XTMP4, XTMP1 VPERM ZERO, XTMP3, XTMP4, XTMP1
MOVD $0x30, R8 MOVD $0x20, R8
LXVD2X (PTR)(R8), XTMP4 LXVD2X (PTR)(R8), XTMP4
VPERM ZERO, XTMP3, XTMP4, XTMP2 VPERM ZERO, XTMP3, XTMP4, XTMP2
@ -72,7 +63,7 @@ TEXT ·eia256RoundTag8(SB),NOSPLIT,$0
LXVW4X (R8)(R4), KS_M1 LXVW4X (R8)(R4), KS_M1
MOVD $16, R8 MOVD $16, R8
LXVW4X (R8)(R4), KS_M2 LXVW4X (R8)(R4), KS_M2
MOVD $0x40, R8 MOVD $0x30, R8
LXVD2X (PTR)(R8), XTMP4 LXVD2X (PTR)(R8), XTMP4
VPERM KS_L, KS_L, XTMP4, KS_L VPERM KS_L, KS_L, XTMP4, KS_L
VPERM KS_M1, KS_M1, XTMP4, KS_M1 VPERM KS_M1, KS_M1, XTMP4, KS_M1
@ -131,26 +122,18 @@ TEXT ·eia256RoundTag16(SB),NOSPLIT,$0
VPERM XDATA, XDATA, XTMP1, XDATA VPERM XDATA, XDATA, XTMP1, XDATA
#endif #endif
LXVD2X (PTR)(R0), BIT_REV_AND_TAB
VAND BIT_REV_AND_TAB, XDATA, XTMP3
VSPLTISB $4, XTMP2; VSPLTISB $4, XTMP2;
VSRW XDATA, XTMP2, XTMP1 LXVD2X (PTR)(R0), BIT_REV_TAB_L
VAND BIT_REV_AND_TAB, XTMP1, XTMP1
MOVD $0x10, R8
LXVD2X (PTR)(R8), BIT_REV_TAB_L
VSLB BIT_REV_TAB_L, XTMP2, BIT_REV_TAB_H VSLB BIT_REV_TAB_L, XTMP2, BIT_REV_TAB_H
VPERM BIT_REV_TAB_L, BIT_REV_TAB_L, XTMP1, XTMP1 VPERMXOR BIT_REV_TAB_L, BIT_REV_TAB_H, XDATA, XTMP3 // XTMP3 - bit reverse data bytes
VPERM BIT_REV_TAB_H, BIT_REV_TAB_H, XTMP3, XTMP3
VXOR XTMP1, XTMP3, XTMP3 // XTMP3 - bit reverse data bytes
// ZUC authentication part, 4x32 data bits // ZUC authentication part, 4x32 data bits
// setup data // setup data
VSPLTISB $0, ZERO VSPLTISB $0, ZERO
MOVD $0x20, R8 MOVD $0x10, R8
LXVD2X (PTR)(R8), XTMP4 LXVD2X (PTR)(R8), XTMP4
VPERM ZERO, XTMP3, XTMP4, XTMP1 VPERM ZERO, XTMP3, XTMP4, XTMP1
MOVD $0x30, R8 MOVD $0x20, R8
LXVD2X (PTR)(R8), XTMP4 LXVD2X (PTR)(R8), XTMP4
VPERM ZERO, XTMP3, XTMP4, XTMP2 VPERM ZERO, XTMP3, XTMP4, XTMP2
@ -161,7 +144,7 @@ TEXT ·eia256RoundTag16(SB),NOSPLIT,$0
MOVD $16, R8 MOVD $16, R8
LXVW4X (R8)(R4), KS_M2 LXVW4X (R8)(R4), KS_M2
VOR KS_M2, KS_M2, KS_H VOR KS_M2, KS_M2, KS_H
MOVD $0x40, R8 MOVD $0x30, R8
LXVD2X (PTR)(R8), XTMP4 LXVD2X (PTR)(R8), XTMP4
VPERM KS_L, KS_L, XTMP4, KS_L VPERM KS_L, KS_L, XTMP4, KS_L
VPERM KS_M1, KS_M1, XTMP4, KS_M1 VPERM KS_M1, KS_M1, XTMP4, KS_M1