Update ARM recipes

pull/752/head
Jeffrey Walton 2018-12-01 10:42:20 -05:00
parent d9288fa870
commit 42de69d883
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
3 changed files with 23 additions and 29 deletions

View File

@ -56,7 +56,7 @@ IS_PPC64 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'ppc64|powerpc64|power64'
IS_SPARC32 := $(shell echo "$(HOSTX)" | $(GREP) -v "64" | $(GREP) -i -c -E 'sun|sparc') IS_SPARC32 := $(shell echo "$(HOSTX)" | $(GREP) -v "64" | $(GREP) -i -c -E 'sun|sparc')
IS_SPARC64 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'sun|sparc64') IS_SPARC64 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'sun|sparc64')
IS_ARM32 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'arm|armhf|arm7l|eabihf') IS_ARM32 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'arm|armhf|arm7l|eabihf')
IS_ARMV8 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'aarch32|aarch64') IS_ARMV8 := $(shell echo "$(HOSTX)" | $(GREP) -i -c -E 'aarch32|aarch64|arm64|armv8')
IS_NEON := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c -E 'armv7|armhf|arm7l|eabihf|armv8|aarch32|aarch64') IS_NEON := $(shell $(CXX) $(CXXFLAGS) -dumpmachine 2>/dev/null | $(GREP) -i -c -E 'armv7|armhf|arm7l|eabihf|armv8|aarch32|aarch64')
@ -527,15 +527,22 @@ ifeq ($(IS_ARMV8),1)
CXXFLAGS += -DCRYPTOPP_ARM_SHA_AVAILABLE=0 CXXFLAGS += -DCRYPTOPP_ARM_SHA_AVAILABLE=0
endif endif
ifneq ($(AES_FLAG),) TPROG = TestPrograms/test_arm_sm3.cxx
TPROG = TestPrograms/test_crypto_v84.cxx
TOPT = -march=armv8.4-a+crypto TOPT = -march=armv8.4-a+crypto
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l) HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
ifeq ($(strip $(HAVE_OPT)),0) ifeq ($(strip $(HAVE_OPT)),0)
SM3_FLAG = -march=armv8.4-a+crypto SM3_FLAG = -march=armv8.4-a+crypto
SM4_FLAG = -march=armv8.4-a+crypto SM4_FLAG = -march=armv8.4-a+crypto
endif endif
TPROG = TestPrograms/test_arm_sha3.cxx
TOPT = -march=armv8.4-a+crypto
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ACLE_FLAG) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
ifeq ($(strip $(HAVE_OPT)),0)
SHA3_FLAG = -march=armv8.4-a+crypto
endif endif
# ASIMD_FLAG
endif endif
# IS_ARMV8 # IS_ARMV8
@ -1020,10 +1027,11 @@ INCL += resource.h
endif endif
# Cryptogams AES for ARMv4 and above. We couple to ARMv7. # Cryptogams AES for ARMv4 and above. We couple to ARMv7.
# Avoid iOS. It cannot consume the assembly.
ifeq ($(IS_ARM32),1) ifeq ($(IS_ARM32),1)
CRYPTOGAMS_AES_FLAG = -march=armv7-a CRYPTOGAMS_AES_FLAG = -march=armv7-a
CRYPTOGAMS_AES_FLAG += -Wa,--noexecstack CRYPTOGAMS_AES_FLAG += -Wa,--noexecstack
SRCS += aes_armv4.S SRCS += aes_armv4.S
endif endif
# List cryptlib.cpp first, then cpu.cpp, then integer.cpp to tame C++ static initialization problems. # List cryptlib.cpp first, then cpu.cpp, then integer.cpp to tame C++ static initialization problems.
@ -1449,6 +1457,9 @@ rijndael_simd.o : rijndael_simd.cpp
sha_simd.o : sha_simd.cpp sha_simd.o : sha_simd.cpp
$(CXX) $(strip $(CXXFLAGS) $(SHA_FLAG) -c) $< $(CXX) $(strip $(CXXFLAGS) $(SHA_FLAG) -c) $<
sha3_simd.o : sha3_simd.cpp
$(CXX) $(strip $(CXXFLAGS) $(SHA3_FLAG) -c) $<
# SSE4.2/SHA-NI or ARMv8a available # SSE4.2/SHA-NI or ARMv8a available
shacal2_simd.o : shacal2_simd.cpp shacal2_simd.o : shacal2_simd.cpp
$(CXX) $(strip $(CXXFLAGS) $(SHA_FLAG) -c) $< $(CXX) $(strip $(CXXFLAGS) $(SHA_FLAG) -c) $<

View File

@ -10,11 +10,6 @@
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
// SM4 block cipher
uint32x4_t x;
x=vsm4ekeyq_u32(x,x);
x=vsm4eq_u32(x,x);
// SM3 hash // SM3 hash
uint32x4_t y; uint32x4_t y;
y=vsm3ss1q_u32(x,y,y); y=vsm3ss1q_u32(x,y,y);
@ -24,6 +19,5 @@ int main(int argc, char* argv[])
y=vsm3tt2bq_u32(x,y,y,3); y=vsm3tt2bq_u32(x,y,y,3);
y=vsm3partw1q_u32(x,y,y); y=vsm3partw1q_u32(x,y,y);
y=vsm3partw2q_u32(x,y,y); y=vsm3partw2q_u32(x,y,y);
return 0; return 0;
} }

View File

@ -14,16 +14,5 @@ int main(int argc, char* argv[])
uint32x4_t x; uint32x4_t x;
x=vsm4ekeyq_u32(x,x); x=vsm4ekeyq_u32(x,x);
x=vsm4eq_u32(x,x); x=vsm4eq_u32(x,x);
// SM3 hash
uint32x4_t y;
y=vsm3ss1q_u32(x,y,y);
y=vsm3tt1aq_u32(x,y,y,3);
y=vsm3tt1bq_u32(x,y,y,1);
y=vsm3tt2aq_u32(x,y,y,2);
y=vsm3tt2bq_u32(x,y,y,3);
y=vsm3partw1q_u32(x,y,y);
y=vsm3partw2q_u32(x,y,y);
return 0; return 0;
} }