openssl/crypto/chacha/build.info
Yangyu Chen 03ce37e117 riscv: Provide a vector only implementation of Chacha20 cipher
Although we have a Zvkb version of Chacha20, the Zvkb from the RISC-V
Vector Cryptography Bit-manipulation extension was ratified in late 2023
and does not come to the RVA23 Profile. Many CPUs in 2024 currently do not
support Zvkb but may have Vector and Bit-manipulation, which are already in
the RVA22 Profile. This commit provides a vector-only implementation that
replaced the vror with vsll+vsrl+vor and can provide enough speed for
Chacha20 for new CPUs this year.

Signed-off-by: Yangyu Chen <cyy@cyyself.name>

Reviewed-by: Paul Dale <ppzgs1@gmail.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/24069)
2024-05-08 11:10:45 +02:00

58 lines
1.8 KiB
Plaintext

LIBS=../../libcrypto
$CHACHAASM=chacha_enc.c
IF[{- !$disabled{asm} -}]
$CHACHAASM_x86=chacha-x86.S
$CHACHAASM_x86_64=chacha-x86_64.s
$CHACHAASM_ia64=chacha-ia64.s
$CHACHAASM_s390x=chacha-s390x.S
$CHACHAASM_armv4=chacha-armv4.S
$CHACHAASM_aarch64=chacha-armv8.S chacha-armv8-sve.S
$CHACHAASM_loongarch64=chacha-loongarch64.S
$CHACHAASM_ppc32=chacha_ppc.c chacha-ppc.s
IF[{- $target{sys_id} ne "AIX" && $target{sys_id} ne "MACOSX" -}]
$CHACHAASM_ppc32=chacha_ppc.c chacha-ppc.s chachap10-ppc.s
ENDIF
$CHACHAASM_ppc64=$CHACHAASM_ppc32
$CHACHAASM_c64xplus=chacha-c64xplus.s
$CHACHAASM_riscv64=chacha_riscv.c chacha_enc.c chacha-riscv64-v-zbb.s chacha-riscv64-v-zbb-zvkb.s
$CHACHADEF_riscv64=INCLUDE_C_CHACHA20
# Now that we have defined all the arch specific variables, use the
# appropriate one
IF[$CHACHAASM_{- $target{asm_arch} -}]
$CHACHAASM=$CHACHAASM_{- $target{asm_arch} -}
$CHACHADEF=$CHACHADEF_{- $target{asm_arch} -}
ENDIF
ENDIF
SOURCE[../../libcrypto]=$CHACHAASM
DEFINE[../../libcrypto]=$CHACHADEF
GENERATE[chacha-x86.S]=asm/chacha-x86.pl
GENERATE[chacha-x86_64.s]=asm/chacha-x86_64.pl
GENERATE[chacha-ppc.s]=asm/chacha-ppc.pl
GENERATE[chachap10-ppc.s]=asm/chachap10-ppc.pl
GENERATE[chacha-armv4.S]=asm/chacha-armv4.pl
INCLUDE[chacha-armv4.o]=..
GENERATE[chacha-armv8.S]=asm/chacha-armv8.pl
GENERATE[chacha-armv8-sve.S]=asm/chacha-armv8-sve.pl
INCLUDE[chacha-armv8.o]=..
INCLUDE[chacha-armv8-sve.o]=..
INCLUDE[chacha-loongarch64.o]=..
INCLUDE[chacha-s390x.o]=..
GENERATE[chacha-c64xplus.S]=asm/chacha-c64xplus.pl
GENERATE[chacha-s390x.S]=asm/chacha-s390x.pl
GENERATE[chacha-ia64.S]=asm/chacha-ia64.pl
GENERATE[chacha-ia64.s]=chacha-ia64.S
GENERATE[chacha-loongarch64.S]=asm/chacha-loongarch64.pl
GENERATE[chacha-riscv64-v-zbb.s]=asm/chacha-riscv64-v-zbb.pl
GENERATE[chacha-riscv64-v-zbb-zvkb.s]=asm/chacha-riscv64-v-zbb.pl zvkb