From 9ef80771071c1da70401579ded0c5435ca66ec04 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Tue, 22 Oct 2024 08:14:56 +0800 Subject: [PATCH] zuc: eia arm64 redefine constants --- zuc/eia256_asm_arm64.s | 28 +++++++--------------------- zuc/eia_asm_arm64.s | 36 ++++++++++++++++-------------------- 2 files changed, 23 insertions(+), 41 deletions(-) diff --git a/zuc/eia256_asm_arm64.s b/zuc/eia256_asm_arm64.s index d2680a7..a120c5f 100644 --- a/zuc/eia256_asm_arm64.s +++ b/zuc/eia256_asm_arm64.s @@ -2,18 +2,6 @@ #include "textflag.h" -DATA bit_reverse_table<>+0x00(SB)/8, $0x0e060a020c040800 -DATA bit_reverse_table<>+0x08(SB)/8, $0x0f070b030d050901 -DATA bit_reverse_table<>+0x10(SB)/8, $0xe060a020c0408000 -DATA bit_reverse_table<>+0x18(SB)/8, $0xf070b030d0509010 -GLOBL bit_reverse_table<>(SB), RODATA, $32 - -DATA shuf_mask_dw<>+0x00(SB)/8, $0xffffffff03020100 -DATA shuf_mask_dw<>+0x08(SB)/8, $0xffffffff07060504 -DATA shuf_mask_dw<>+0x10(SB)/8, $0xffffffff0b0a0908 -DATA shuf_mask_dw<>+0x18(SB)/8, $0xffffffff0f0e0d0c -GLOBL shuf_mask_dw<>(SB), RODATA, $32 - #define AX R2 #define BX R3 #define CX R4 @@ -31,19 +19,17 @@ GLOBL shuf_mask_dw<>(SB), RODATA, $32 #define KS_M1 V10 #define KS_M2 V11 #define KS_H V12 -#define BIT_REV_TAB_L V20 -#define BIT_REV_TAB_H V21 -#define BIT_REV_AND_TAB V22 +#define BIT_REV_AND_TAB V20 +#define BIT_REV_TAB_L V21 +#define BIT_REV_TAB_H V22 #define SHUF_MASK_DW0_DW1 V23 #define SHUF_MASK_DW2_DW3 V24 #define LOAD_GLOBAL_DATA() \ - MOVD $bit_reverse_table<>(SB), R0 \ - VLD1 (R0), [BIT_REV_TAB_L.B16, BIT_REV_TAB_H.B16] \ - MOVW $0x0F0F0F0F, R0 \ - VDUP R0, BIT_REV_AND_TAB.S4 \ - MOVD $shuf_mask_dw<>(SB), R0 \ - VLD1 (R0), [SHUF_MASK_DW0_DW1.B16, SHUF_MASK_DW2_DW3.B16] + MOVD $·eia_const<>(SB), R0 \ + VLD1 (R0), [BIT_REV_TAB_L.B16, BIT_REV_TAB_H.B16, HUF_MASK_DW0_DW1.B16, SHUF_MASK_DW2_DW3.B16] \ + MOVW $0x0F0F0F0F, R0 \ + VDUP R0, BIT_REV_AND_TAB.S4 // func eia256RoundTag8(t *uint32, keyStream *uint32, p *byte) TEXT ·eia256RoundTag8(SB),NOSPLIT,$0 diff --git a/zuc/eia_asm_arm64.s b/zuc/eia_asm_arm64.s index 6d797d5..c203b28 100644 --- a/zuc/eia_asm_arm64.s +++ b/zuc/eia_asm_arm64.s @@ -2,17 +2,15 @@ #include "textflag.h" -DATA bit_reverse_table<>+0x00(SB)/8, $0x0e060a020c040800 -DATA bit_reverse_table<>+0x08(SB)/8, $0x0f070b030d050901 -DATA bit_reverse_table<>+0x10(SB)/8, $0xe060a020c0408000 -DATA bit_reverse_table<>+0x18(SB)/8, $0xf070b030d0509010 -GLOBL bit_reverse_table<>(SB), RODATA, $32 - -DATA shuf_mask_dw<>+0x00(SB)/8, $0xffffffff03020100 -DATA shuf_mask_dw<>+0x08(SB)/8, $0xffffffff07060504 -DATA shuf_mask_dw<>+0x10(SB)/8, $0xffffffff0b0a0908 -DATA shuf_mask_dw<>+0x18(SB)/8, $0xffffffff0f0e0d0c -GLOBL shuf_mask_dw<>(SB), RODATA, $32 +DATA ·eia_const<>+0x00(SB)/8, $0x0e060a020c040800 // bit_reverse_table low +DATA ·eia_const<>+0x08(SB)/8, $0x0f070b030d050901 +DATA ·eia_const<>+0x10(SB)/8, $0xe060a020c0408000 // bit_reverse_table high +DATA ·eia_const<>+0x18(SB)/8, $0xf070b030d0509010 +DATA ·eia_const<>+0x20(SB)/8, $0xffffffff03020100 // SHUF_MASK_DW0_DW1 +DATA ·eia_const<>+0x28(SB)/8, $0xffffffff07060504 +DATA ·eia_const<>+0x30(SB)/8, $0xffffffff0b0a0908 // SHUF_MASK_DW2_DW3 +DATA ·eia_const<>+0x38(SB)/8, $0xffffffff0f0e0d0c +GLOBL ·eia_const<>(SB), RODATA, $64 #define AX R2 #define BX R3 @@ -31,19 +29,17 @@ GLOBL shuf_mask_dw<>(SB), RODATA, $32 #define KS_M1 V10 #define KS_M2 V11 #define KS_H V12 -#define BIT_REV_TAB_L V20 -#define BIT_REV_TAB_H V21 -#define BIT_REV_AND_TAB V22 +#define BIT_REV_AND_TAB V20 +#define BIT_REV_TAB_L V21 +#define BIT_REV_TAB_H V22 #define SHUF_MASK_DW0_DW1 V23 #define SHUF_MASK_DW2_DW3 V24 #define LOAD_GLOBAL_DATA() \ - MOVD $bit_reverse_table<>(SB), R0 \ - VLD1 (R0), [BIT_REV_TAB_L.B16, BIT_REV_TAB_H.B16] \ - MOVW $0x0F0F0F0F, R0 \ - VDUP R0, BIT_REV_AND_TAB.S4 \ - MOVD $shuf_mask_dw<>(SB), R0 \ - VLD1 (R0), [SHUF_MASK_DW0_DW1.B16, SHUF_MASK_DW2_DW3.B16] + MOVD $·eia_const<>(SB), R0 \ + VLD1 (R0), [BIT_REV_TAB_L.B16, BIT_REV_TAB_H.B16, SHUF_MASK_DW0_DW1.B16, SHUF_MASK_DW2_DW3.B16] \ + MOVW $0x0F0F0F0F, R0 \ + VDUP R0, BIT_REV_AND_TAB.S4 // func eia3Round16B(t *uint32, keyStream *uint32, p *byte, tagSize int) TEXT ·eia3Round16B(SB),NOSPLIT,$0