Add separate Polynomial Multiply feature test on POWER8 (GH#742)
parent
215f9dc164
commit
f52a141f6e
36
GNUmakefile
36
GNUmakefile
|
|
@ -626,7 +626,7 @@ ifeq ($(DETECT_FEATURES),1)
|
|||
#endif
|
||||
|
||||
#####################################################################
|
||||
# AES is a separate submodule of POWER8 due to possible export
|
||||
# Crypto is a separate submodule of POWER8 due to possible export
|
||||
# restrictions by the government. It is the reason LLVM choose
|
||||
# different intrinsics than GCC and XLC.
|
||||
|
||||
|
|
@ -644,6 +644,20 @@ ifeq ($(DETECT_FEATURES),1)
|
|||
AES_FLAG = $(POWER8_FLAG)
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_ppc_vmull.cxx
|
||||
TOPT = $(POWER9_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
GCM_FLAG = $(POWER9_FLAG)
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_ppc_vmull.cxx
|
||||
TOPT = $(POWER8_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
ifeq ($(strip $(HAVE_OPT)),0)
|
||||
GCM_FLAG = $(POWER8_FLAG)
|
||||
endif
|
||||
|
||||
TPROG = TestPrograms/test_ppc_sha.cxx
|
||||
TOPT = $(POWER9_FLAG)
|
||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | tr ' ' '\n' | wc -l)
|
||||
|
|
@ -669,7 +683,6 @@ ifeq ($(DETECT_FEATURES),1)
|
|||
BLAKE2B_FLAG = $(POWER9_FLAG)
|
||||
BLAKE2S_FLAG = $(POWER9_FLAG)
|
||||
CHACHA_FLAG = $(POWER9_FLAG)
|
||||
GCM_FLAG = $(POWER9_FLAG)
|
||||
SM4_FLAG = $(POWER9_FLAG)
|
||||
SIMON64_FLAG = $(POWER9_FLAG)
|
||||
SIMON128_FLAG = $(POWER9_FLAG)
|
||||
|
|
@ -687,7 +700,6 @@ ifeq ($(DETECT_FEATURES),1)
|
|||
BLAKE2B_FLAG = $(POWER8_FLAG)
|
||||
BLAKE2S_FLAG = $(POWER8_FLAG)
|
||||
CHACHA_FLAG = $(POWER8_FLAG)
|
||||
GCM_FLAG = $(POWER8_FLAG)
|
||||
SM4_FLAG = $(POWER8_FLAG)
|
||||
SIMON64_FLAG = $(POWER8_FLAG)
|
||||
SIMON128_FLAG = $(POWER8_FLAG)
|
||||
|
|
@ -787,13 +799,19 @@ ifeq ($(DETECT_FEATURES),1)
|
|||
# Fixups for missing crypto
|
||||
|
||||
ifneq ($(POWER9_FLAG)$(POWER8_FLAG),)
|
||||
ifeq ($(AES_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8_AES
|
||||
ifeq ($(AES_FLAG)$(GCM_FLAG)$(SHA_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8_CRYPTO
|
||||
else
|
||||
ifeq ($(AES_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8_AES
|
||||
endif
|
||||
ifeq ($(GCM_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8_VMULL
|
||||
endif
|
||||
ifeq ($(SHA_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8_SHA
|
||||
endif
|
||||
endif
|
||||
ifeq ($(SHA_FLAG),)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8_SHA
|
||||
endif
|
||||
# CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8_VMULL
|
||||
endif
|
||||
|
||||
# DETECT_FEATURES
|
||||
|
|
|
|||
|
|
@ -756,7 +756,7 @@ void GCM_Xor16_POWER7(byte *a, const byte *b, const byte *c)
|
|||
{
|
||||
VecStore(VecXor(VecLoad(b), VecLoad(c)), a);
|
||||
}
|
||||
#endif // CRYPTOPP_ALTIVEC_AVAILABLE
|
||||
#endif // CRYPTOPP_POWER7_AVAILABLE
|
||||
|
||||
#if CRYPTOPP_POWER8_VMULL_AVAILABLE
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue