initial 32-bit arm assembly optimization support

This commit is contained in:
Brent Cook 2018-11-11 00:24:35 -06:00
parent e7d11baaae
commit 9c6e9f0995
3 changed files with 41 additions and 1 deletions

View File

@ -260,6 +260,8 @@ if(ENABLE_ASM)
if("${CMAKE_C_COMPILER_ABI}" STREQUAL "ELF")
if("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "(x86_64|amd64)")
set(HOST_ASM_ELF_X86_64 true)
elseif("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "arm")
set(HOST_ASM_ELF_ARMV4 true)
elseif(CMAKE_SYSTEM_NAME STREQUAL "SunOS" AND "${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "i386")
set(HOST_ASM_ELF_X86_64 true)
endif()

View File

@ -1,3 +1,28 @@
if(HOST_ASM_ELF_ARMV4)
set(
ASM_ARMV4_ELF_SRC
aes/aes-elf-armv4.S
bn/gf2m-elf-armv4.S
bn/mont-elf-armv4.S
sha/sha1-elf-armv4.S
sha/sha512-elf-armv4.S
sha/sha256-elf-armv4.S
modes/ghash-elf-armv4.S
armv4cpuid.S
armcap.c
)
add_definitions(-DAES_ASM)
add_definitions(-DOPENSSL_BN_ASM_MONT)
add_definitions(-DOPENSSL_BN_ASM_GF2m)
add_definitions(-DGHASH_ASM)
add_definitions(-DSHA1_ASM)
add_definitions(-DSHA256_ASM)
add_definitions(-DSHA512_ASM)
add_definitions(-DOPENSSL_CPUID_OBJ)
set(CRYPTO_SRC ${CRYPTO_SRC} ${ASM_ARMV4_ELF_SRC})
set_property(SOURCE ${ASM_ARMV4_ELF_SRC} PROPERTY LANGUAGE C)
endif()
if(HOST_ASM_ELF_X86_64)
set(
ASM_X86_64_ELF_SRC

View File

@ -178,8 +178,21 @@ gen_asm() {
EOF
$MV $3.tmp $3
}
echo generating arm ASM source for elf
gen_asm_stdout elf aes/asm/aes-armv4.pl crypto/aes/aes-elf-armv4.S
gen_asm_stdout elf bn/asm/armv4-gf2m.pl crypto/bn/gf2m-elf-armv4.S
gen_asm_stdout elf bn/asm/armv4-mont.pl crypto/bn/mont-elf-armv4.S
gen_asm_stdout elf sha/asm/sha1-armv4-large.pl crypto/sha/sha1-elf-armv4.S
gen_asm_stdout elf sha/asm/sha256-armv4.pl crypto/sha/sha256-elf-armv4.S
gen_asm_stdout elf sha/asm/sha512-armv4.pl crypto/sha/sha512-elf-armv4.S
gen_asm_stdout elf modes/asm/ghash-armv4.pl crypto/modes/ghash-elf-armv4.S
$CP $libcrypto_src/armv4cpuid.S crypto
$CP $libcrypto_src/armcap.c crypto
$CP $libcrypto_src/arm_arch.h crypto
for abi in elf macosx; do
echo generating ASM source for $abi
echo generating x86_64 ASM source for $abi
gen_asm_stdout $abi aes/asm/aes-x86_64.pl crypto/aes/aes-$abi-x86_64.S
gen_asm_stdout $abi aes/asm/vpaes-x86_64.pl crypto/aes/vpaes-$abi-x86_64.S
gen_asm_stdout $abi aes/asm/bsaes-x86_64.pl crypto/aes/bsaes-$abi-x86_64.S