Update ARM recipes
parent
d9288fa870
commit
42de69d883
35
GNUmakefile
35
GNUmakefile
|
|
@ -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
|
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
|
||||||
|
|
||||||
|
# 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) $<
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue