[PATCH v3 00/13] Optimizing SM3 and SM4 algorithms using arm64 NEON/CE instructions

Tianjia Zhang posted 13 patches 3 years, 5 months ago
arch/arm64/crypto/Kconfig           |   47 +-
arch/arm64/crypto/Makefile          |    9 +
arch/arm64/crypto/sm3-ce-glue.c     |    2 +-
arch/arm64/crypto/sm3-neon-core.S   |  600 +++++++++++++
arch/arm64/crypto/sm3-neon-glue.c   |  103 +++
arch/arm64/crypto/sm4-ce-asm.h      |  209 +++++
arch/arm64/crypto/sm4-ce-ccm-core.S |  328 ++++++++
arch/arm64/crypto/sm4-ce-ccm-glue.c |  303 +++++++
arch/arm64/crypto/sm4-ce-core.S     | 1205 ++++++++++++++++++---------
arch/arm64/crypto/sm4-ce-gcm-core.S |  741 ++++++++++++++++
arch/arm64/crypto/sm4-ce-gcm-glue.c |  286 +++++++
arch/arm64/crypto/sm4-ce-glue.c     |  575 ++++++++++++-
arch/arm64/crypto/sm4-ce.h          |   16 +
arch/arm64/crypto/sm4-neon-core.S   |  630 +++++++++-----
arch/arm64/crypto/sm4-neon-glue.c   |  172 +---
crypto/tcrypt.c                     |   21 +
crypto/testmgr.c                    |   19 +
crypto/testmgr.h                    |  977 ++++++++++++++++++++++
18 files changed, 5478 insertions(+), 765 deletions(-)
create mode 100644 arch/arm64/crypto/sm3-neon-core.S
create mode 100644 arch/arm64/crypto/sm3-neon-glue.c
create mode 100644 arch/arm64/crypto/sm4-ce-asm.h
create mode 100644 arch/arm64/crypto/sm4-ce-ccm-core.S
create mode 100644 arch/arm64/crypto/sm4-ce-ccm-glue.c
create mode 100644 arch/arm64/crypto/sm4-ce-gcm-core.S
create mode 100644 arch/arm64/crypto/sm4-ce-gcm-glue.c
create mode 100644 arch/arm64/crypto/sm4-ce.h
[PATCH v3 00/13] Optimizing SM3 and SM4 algorithms using arm64 NEON/CE instructions
Posted by Tianjia Zhang 3 years, 5 months ago
Hi folks,

This series of patches uses different arm64 instruction sets to optimize
the SM3 and SM4 algorithms, as well as the optimization of different
modes of SM4.

patch 1-2:   NEON instruction set optimization for SM3
patch 3:     Refactored and streamlined SM4 NEON instruction implementation
patch 4-5:   support test for new SM4 mode
patch 6-8:   Refactored and streamlined SM4 CE instruction implementation
patch 9-10:  CE accelerated implementation of SM4 CTS/XTS
patch 11:    CE accelerated implementation of SM4 CMAC/XCBC/CBCMAC
patch 12-13: CE accelerated implementation of SM4 CCM/GCM

v3 change:
  - As Eric said, remove the code for ESSIV, including testmgr and tcrypt

v2 changes:
  - remove ARMv9 SVE acceleration implementation
  - rebase onto v6.1-rc1

Cheers,
Tianjia

Tianjia Zhang (13):
  crypto: arm64/sm3 - raise the priority of the CE implementation
  crypto: arm64/sm3 - add NEON assembly implementation
  crypto: arm64/sm4 - refactor and simplify NEON implementation
  crypto: testmgr - add SM4 cts-cbc/xts/xcbc test vectors
  crypto: tcrypt - add SM4 cts-cbc/xts/xcbc test
  crypto: arm64/sm4 - refactor and simplify CE implementation
  crypto: arm64/sm4 - simplify sm4_ce_expand_key() of CE implementation
  crypto: arm64/sm4 - export reusable CE acceleration functions
  crypto: arm64/sm4 - add CE implementation for CTS-CBC mode
  crypto: arm64/sm4 - add CE implementation for XTS mode
  crypto: arm64/sm4 - add CE implementation for cmac/xcbc/cbcmac
  crypto: arm64/sm4 - add CE implementation for CCM mode
  crypto: arm64/sm4 - add CE implementation for GCM mode

 arch/arm64/crypto/Kconfig           |   47 +-
 arch/arm64/crypto/Makefile          |    9 +
 arch/arm64/crypto/sm3-ce-glue.c     |    2 +-
 arch/arm64/crypto/sm3-neon-core.S   |  600 +++++++++++++
 arch/arm64/crypto/sm3-neon-glue.c   |  103 +++
 arch/arm64/crypto/sm4-ce-asm.h      |  209 +++++
 arch/arm64/crypto/sm4-ce-ccm-core.S |  328 ++++++++
 arch/arm64/crypto/sm4-ce-ccm-glue.c |  303 +++++++
 arch/arm64/crypto/sm4-ce-core.S     | 1205 ++++++++++++++++++---------
 arch/arm64/crypto/sm4-ce-gcm-core.S |  741 ++++++++++++++++
 arch/arm64/crypto/sm4-ce-gcm-glue.c |  286 +++++++
 arch/arm64/crypto/sm4-ce-glue.c     |  575 ++++++++++++-
 arch/arm64/crypto/sm4-ce.h          |   16 +
 arch/arm64/crypto/sm4-neon-core.S   |  630 +++++++++-----
 arch/arm64/crypto/sm4-neon-glue.c   |  172 +---
 crypto/tcrypt.c                     |   21 +
 crypto/testmgr.c                    |   19 +
 crypto/testmgr.h                    |  977 ++++++++++++++++++++++
 18 files changed, 5478 insertions(+), 765 deletions(-)
 create mode 100644 arch/arm64/crypto/sm3-neon-core.S
 create mode 100644 arch/arm64/crypto/sm3-neon-glue.c
 create mode 100644 arch/arm64/crypto/sm4-ce-asm.h
 create mode 100644 arch/arm64/crypto/sm4-ce-ccm-core.S
 create mode 100644 arch/arm64/crypto/sm4-ce-ccm-glue.c
 create mode 100644 arch/arm64/crypto/sm4-ce-gcm-core.S
 create mode 100644 arch/arm64/crypto/sm4-ce-gcm-glue.c
 create mode 100644 arch/arm64/crypto/sm4-ce.h

-- 
2.24.3 (Apple Git-128)
Re: [PATCH v3 00/13] Optimizing SM3 and SM4 algorithms using arm64 NEON/CE instructions
Posted by Herbert Xu 3 years, 5 months ago
On Thu, Oct 27, 2022 at 02:54:52PM +0800, Tianjia Zhang wrote:
> Hi folks,
> 
> This series of patches uses different arm64 instruction sets to optimize
> the SM3 and SM4 algorithms, as well as the optimization of different
> modes of SM4.
> 
> patch 1-2:   NEON instruction set optimization for SM3
> patch 3:     Refactored and streamlined SM4 NEON instruction implementation
> patch 4-5:   support test for new SM4 mode
> patch 6-8:   Refactored and streamlined SM4 CE instruction implementation
> patch 9-10:  CE accelerated implementation of SM4 CTS/XTS
> patch 11:    CE accelerated implementation of SM4 CMAC/XCBC/CBCMAC
> patch 12-13: CE accelerated implementation of SM4 CCM/GCM
> 
> v3 change:
>   - As Eric said, remove the code for ESSIV, including testmgr and tcrypt
> 
> v2 changes:
>   - remove ARMv9 SVE acceleration implementation
>   - rebase onto v6.1-rc1
> 
> Cheers,
> Tianjia
> 
> Tianjia Zhang (13):
>   crypto: arm64/sm3 - raise the priority of the CE implementation
>   crypto: arm64/sm3 - add NEON assembly implementation
>   crypto: arm64/sm4 - refactor and simplify NEON implementation
>   crypto: testmgr - add SM4 cts-cbc/xts/xcbc test vectors
>   crypto: tcrypt - add SM4 cts-cbc/xts/xcbc test
>   crypto: arm64/sm4 - refactor and simplify CE implementation
>   crypto: arm64/sm4 - simplify sm4_ce_expand_key() of CE implementation
>   crypto: arm64/sm4 - export reusable CE acceleration functions
>   crypto: arm64/sm4 - add CE implementation for CTS-CBC mode
>   crypto: arm64/sm4 - add CE implementation for XTS mode
>   crypto: arm64/sm4 - add CE implementation for cmac/xcbc/cbcmac
>   crypto: arm64/sm4 - add CE implementation for CCM mode
>   crypto: arm64/sm4 - add CE implementation for GCM mode
> 
>  arch/arm64/crypto/Kconfig           |   47 +-
>  arch/arm64/crypto/Makefile          |    9 +
>  arch/arm64/crypto/sm3-ce-glue.c     |    2 +-
>  arch/arm64/crypto/sm3-neon-core.S   |  600 +++++++++++++
>  arch/arm64/crypto/sm3-neon-glue.c   |  103 +++
>  arch/arm64/crypto/sm4-ce-asm.h      |  209 +++++
>  arch/arm64/crypto/sm4-ce-ccm-core.S |  328 ++++++++
>  arch/arm64/crypto/sm4-ce-ccm-glue.c |  303 +++++++
>  arch/arm64/crypto/sm4-ce-core.S     | 1205 ++++++++++++++++++---------
>  arch/arm64/crypto/sm4-ce-gcm-core.S |  741 ++++++++++++++++
>  arch/arm64/crypto/sm4-ce-gcm-glue.c |  286 +++++++
>  arch/arm64/crypto/sm4-ce-glue.c     |  575 ++++++++++++-
>  arch/arm64/crypto/sm4-ce.h          |   16 +
>  arch/arm64/crypto/sm4-neon-core.S   |  630 +++++++++-----
>  arch/arm64/crypto/sm4-neon-glue.c   |  172 +---
>  crypto/tcrypt.c                     |   21 +
>  crypto/testmgr.c                    |   19 +
>  crypto/testmgr.h                    |  977 ++++++++++++++++++++++
>  18 files changed, 5478 insertions(+), 765 deletions(-)
>  create mode 100644 arch/arm64/crypto/sm3-neon-core.S
>  create mode 100644 arch/arm64/crypto/sm3-neon-glue.c
>  create mode 100644 arch/arm64/crypto/sm4-ce-asm.h
>  create mode 100644 arch/arm64/crypto/sm4-ce-ccm-core.S
>  create mode 100644 arch/arm64/crypto/sm4-ce-ccm-glue.c
>  create mode 100644 arch/arm64/crypto/sm4-ce-gcm-core.S
>  create mode 100644 arch/arm64/crypto/sm4-ce-gcm-glue.c
>  create mode 100644 arch/arm64/crypto/sm4-ce.h
> 
> -- 
> 2.24.3 (Apple Git-128)

All applied.  Thanks.
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt