diff options
author | Jeffrey Walton <noloader@gmail.com> | 2018-11-14 20:01:05 -0500 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2018-11-14 20:01:05 -0500 |
commit | 7bd02896a0a87bf40da07698e1edcd2929a77d95 (patch) | |
tree | 47218088bbba7df272981d95e6e87e4f33e5aee6 | |
parent | 5b9b9b8d08dc760b5762d8b49f892aed58adb013 (diff) | |
download | cryptopp-git-7bd02896a0a87bf40da07698e1edcd2929a77d95.tar.gz |
Fix XLC flags with LLVM front-end
-rwxr-xr-x | GNUmakefile | 266 |
1 files changed, 107 insertions, 159 deletions
diff --git a/GNUmakefile b/GNUmakefile index 867620fc..fe9a5977 100755 --- a/GNUmakefile +++ b/GNUmakefile @@ -593,184 +593,132 @@ endif ifneq ($(IS_PPC32)$(IS_PPC64),00) ifeq ($(DETECT_FEATURES),1) - # GCC and some compatibles - ifneq ($(GCC_COMPILER)$(CLANG_COMPILER),00) - - TPROG = TestPrograms/test_ppc_power8.cxx - TOPT = -mcpu=power8 -maltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - POWER8_FLAG = -mcpu=power8 -maltivec - AES_FLAG = $(POWER8_FLAG) - BLAKE2B_FLAG = $(POWER8_FLAG) - BLAKE2S_FLAG = $(POWER8_FLAG) - CHACHA_FLAG = $(POWER8_FLAG) - GCM_FLAG = $(POWER8_FLAG) - SHA_FLAG = $(POWER8_FLAG) - SM4_FLAG = $(POWER8_FLAG) - SIMON64_FLAG = $(POWER8_FLAG) - SIMON128_FLAG = $(POWER8_FLAG) - SPECK64_FLAG = $(POWER8_FLAG) - SPECK128_FLAG = $(POWER8_FLAG) - endif - - TPROG = TestPrograms/test_ppc_power7.cxx - TOPT = -mcpu=power7 -maltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - POWER7_FLAG = -mcpu=power7 -maltivec - ARIA_FLAG = $(POWER7_FLAG) - BLAKE2S_FLAG = $(POWER7_FLAG) - CHACHA_FLAG = $(POWER7_FLAG) - CHAM_FLAG = $(POWER7_FLAG) - LEA_FLAG = $(POWER7_FLAG) - SIMECK_FLAG = $(POWER7_FLAG) - SIMON64_FLAG = $(POWER7_FLAG) - SPECK64_FLAG = $(POWER7_FLAG) - endif + ifeq ($(XLC_COMPILER),1) + POWER9_FLAG = -qarch=pwr9 -qaltivec + POWER8_FLAG = -qarch=pwr8 -qaltivec + POWER7_FLAG = -qarch=pwr7 -qaltivec + POWER6_FLAG = -qarch=pwr6 -qaltivec + POWER5_FLAG = -qarch=pwr5 -qaltivec + POWER4_FLAG = -qarch=pwr4 -qaltivec + else + POWER9_FLAG = -mcpu=power9 -maltivec + POWER8_FLAG = -mcpu=power8 -maltivec + POWER7_FLAG = -mcpu=power7 -maltivec + POWER6_FLAG = -mcpu=power6 -maltivec + POWER5_FLAG = -mcpu=power5 -maltivec + POWER4_FLAG = -mcpu=power4 -maltivec + endif + # XLC with LLVM front-ends failed to define XLC defines. + ifeq ($(findstring -qxlcompatmacros,$(CXXFLAGS)),) TPROG = TestPrograms/test_ppc_altivec.cxx - TOPT = -mcpu=power4 -maltivec + TOPT = -qxlcompatmacros HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) ifeq ($(HAVE_OPT),0) - ALTIVEC_FLAG = -mcpu=power4 -maltivec - else - TOPT = -mcpu=power5 -maltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - ALTIVEC_FLAG = -mcpu=power5 -maltivec - else - TOPT = -mcpu=power6 -maltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - ALTIVEC_FLAG = -mcpu=power6 -maltivec - endif - endif + CXXFLAGS += -qxlcompatmacros endif - - # Drop SIMON64 and SPECK64 to Power4 if Power7 not available - ifeq ($(SIMON64_FLAG)$(SPECK64_FLAG),) - SIMON64_FLAG = $(ALTIVEC_FLAG) - SPECK64_FLAG = $(ALTIVEC_FLAG) - endif - - # Drop ChaCha to Power4 if Power7 and Power8 not available - ifeq ($(CHACHA_FLAG),) - CHACHA_FLAG = $(ALTIVEC_FLAG) - endif - - # GCC and some compatibles endif - # IBM XL C/C++ - ifeq ($(XLC_COMPILER),1) - - # LLVM front-ends only provide POWER8 and need special options to - # get XLC defines. The POWER8 really jambs us up for ppc_simd.cpp - # which needs ALTIVEC/POWER4. We have similar problems with POWER7. - ifeq ($(findstring -qxlcompatmacros,$(CXXFLAGS)),) - TPROG = TestPrograms/test_ppc_altivec.cxx - TOPT = -qxlcompatmacros - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - CXXFLAGS += -qxlcompatmacros - endif - endif + TPROG = TestPrograms/test_ppc_power8.cxx + TOPT = $(POWER9_FLAG) + HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) + ifeq ($(HAVE_OPT),0) + ALTIVEC_FLAG = $(POWER9_FLAG) + AES_FLAG = $(POWER9_FLAG) + BLAKE2B_FLAG = $(POWER9_FLAG) + BLAKE2S_FLAG = $(POWER9_FLAG) + CHACHA_FLAG = $(POWER9_FLAG) + GCM_FLAG = $(POWER9_FLAG) + SHA_FLAG = $(POWER9_FLAG) + SM4_FLAG = $(POWER9_FLAG) + SIMON64_FLAG = $(POWER9_FLAG) + SIMON128_FLAG = $(POWER9_FLAG) + SPECK64_FLAG = $(POWER9_FLAG) + SPECK128_FLAG = $(POWER9_FLAG) + else + POWER9_FLAG = + endif - TPROG = TestPrograms/test_ppc_power8.cxx - TOPT = -qarch=pwr8 -qaltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - POWER8_FLAG = -qarch=pwr8 -qaltivec - AES_FLAG = $(POWER8_FLAG) - BLAKE2B_FLAG = $(POWER8_FLAG) - BLAKE2S_FLAG = $(POWER8_FLAG) - CHACHA_FLAG = $(POWER8_FLAG) - GCM_FLAG = $(POWER8_FLAG) - SHA_FLAG = $(POWER8_FLAG) - SM4_FLAG = $(POWER8_FLAG) - SIMON64_FLAG = $(POWER8_FLAG) - SIMON128_FLAG = $(POWER8_FLAG) - SPECK64_FLAG = $(POWER8_FLAG) - SPECK128_FLAG = $(POWER8_FLAG) - endif + TPROG = TestPrograms/test_ppc_power8.cxx + TOPT = $(POWER8_FLAG) + HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) + ifeq ($(HAVE_OPT),0) + ALTIVEC_FLAG = $(POWER8_FLAG) + AES_FLAG = $(POWER8_FLAG) + BLAKE2B_FLAG = $(POWER8_FLAG) + BLAKE2S_FLAG = $(POWER8_FLAG) + CHACHA_FLAG = $(POWER8_FLAG) + GCM_FLAG = $(POWER8_FLAG) + SHA_FLAG = $(POWER8_FLAG) + SM4_FLAG = $(POWER8_FLAG) + SIMON64_FLAG = $(POWER8_FLAG) + SIMON128_FLAG = $(POWER8_FLAG) + SPECK64_FLAG = $(POWER8_FLAG) + SPECK128_FLAG = $(POWER8_FLAG) + else + POWER8_FLAG = + endif - TPROG = TestPrograms/test_ppc_power7.cxx - TOPT = -qarch=pwr7 -qaltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - POWER7_FLAG = -qarch=pwr7 -qaltivec - ARIA_FLAG = $(POWER7_FLAG) - BLAKE2S_FLAG = $(POWER7_FLAG) - CHACHA_FLAG = $(POWER7_FLAG) - CHAM_FLAG = $(POWER7_FLAG) - LEA_FLAG = $(POWER7_FLAG) - SIMECK_FLAG = $(POWER7_FLAG) - SIMON64_FLAG = $(POWER7_FLAG) - SPECK64_FLAG = $(POWER7_FLAG) - endif + TPROG = TestPrograms/test_ppc_power7.cxx + TOPT = $(POWER7_FLAG) + HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) + ifeq ($(HAVE_OPT),0) + ALTIVEC_FLAG = $(POWER7_FLAG) + ARIA_FLAG = $(POWER7_FLAG) + BLAKE2S_FLAG = $(POWER7_FLAG) + CHACHA_FLAG = $(POWER7_FLAG) + CHAM_FLAG = $(POWER7_FLAG) + LEA_FLAG = $(POWER7_FLAG) + SIMECK_FLAG = $(POWER7_FLAG) + SIMON64_FLAG = $(POWER7_FLAG) + SPECK64_FLAG = $(POWER7_FLAG) + else + POWER7_FLAG = + endif - TPROG = TestPrograms/test_ppc_altivec.cxx - TOPT = -qarch=pwr4 -qaltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - ALTIVEC_FLAG = -qarch=pwr4 -qaltivec - else - TOPT = -qarch=pwr5 -qaltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - ALTIVEC_FLAG = -qarch=pwr5 -qaltivec - else - TOPT = -qarch=pwr6 -qaltivec - HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) - ifeq ($(HAVE_OPT),0) - ALTIVEC_FLAG = -qarch=pwr6 -qaltivec - endif - endif - endif + TPROG = TestPrograms/test_ppc_altivec.cxx + TOPT = $(POWER6_FLAG) + HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) + ifeq ($(HAVE_OPT),0) + ALTIVEC_FLAG = $(POWER6_FLAG) + else + POWER6_FLAG = + endif - # LLVM front-end to XLC only provide Power8. It really jambs - # us up for ppc_simd.cpp which needs ALTIVEC/POWER4. We have - # similar problems with POWER7. - ifneq ($(POWER8_FLAG),) - ifeq ($(POWER7_FLAG),) - POWER7_FLAG = $(POWER8_FLAG) - ARIA_FLAG = $(POWER8_FLAG) - BLAKE2B_FLAG = $(POWER8_FLAG) - BLAKE2S_FLAG = $(POWER8_FLAG) - CHACHA_FLAG = $(POWER8_FLAG) - CHAM_FLAG = $(POWER8_FLAG) - LEA_FLAG = $(POWER8_FLAG) - SIMECK_FLAG = $(POWER8_FLAG) - SIMON64_FLAG = $(POWER8_FLAG) - SIMON128_FLAG = $(POWER8_FLAG) - SPECK64_FLAG = $(POWER8_FLAG) - SPECK128_FLAG = $(POWER8_FLAG) - endif - ifeq ($(ALTIVEC_FLAG),) - ALTIVEC_FLAG = $(POWER8_FLAG) - endif - endif + TPROG = TestPrograms/test_ppc_altivec.cxx + TOPT = $(POWER5_FLAG) + HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) + ifeq ($(HAVE_OPT),0) + ALTIVEC_FLAG = $(POWER5_FLAG) + else + POWER5_FLAG = + endif - # Drop SIMON64 and SPECK64 to Power4 if Power7 not available - ifeq ($(SIMON64_FLAG)$(SPECK64_FLAG),) - SIMON64_FLAG = $(ALTIVEC_FLAG) - SPECK64_FLAG = $(ALTIVEC_FLAG) - endif + TPROG = TestPrograms/test_ppc_altivec.cxx + TOPT = $(POWER4_FLAG) + HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT)) + ifeq ($(HAVE_OPT),0) + ALTIVEC_FLAG = $(POWER4_FLAG) + else + POWER4_FLAG = + endif - # Drop ChaCha to Power4 if Power7 and Power8 not available - ifeq ($(CHACHA_FLAG),) - CHACHA_FLAG = $(ALTIVEC_FLAG) - endif + # Drop SIMON64 and SPECK64 to Power4 if Power7 not available + ifeq ($(SIMON64_FLAG)$(SPECK64_FLAG)$(ALTIVEC_FLAG),$(ALTIVEC_FLAG)) + SIMON64_FLAG = $(ALTIVEC_FLAG) + SPECK64_FLAG = $(ALTIVEC_FLAG) + endif - # IBM XL C/C++ + # Drop ChaCha to Power4 if Power7 and Power8 not available + ifeq ($(CHACHA_FLAG)$(ALTIVEC_FLAG),$(ALTIVEC_FLAG)) + CHACHA_FLAG = $(ALTIVEC_FLAG) endif ifeq ($(ALTIVEC_FLAG),) CXXFLAGS += -DCRYPTOPP_DISABLE_ALTIVEC - else ifeq ($(POWER7_FLAG),) + else ifeq ($(POWER9_FLAG)$(POWER8_FLAG)$(POWER7_FLAG),) CXXFLAGS += -DCRYPTOPP_DISABLE_POWER7 - else ifeq ($(POWER8_FLAG),) + else ifeq ($(POWER9_FLAG)$(POWER8_FLAG),) CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8 endif |