summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-11-14 20:01:05 -0500
committerJeffrey Walton <noloader@gmail.com>2018-11-14 20:01:05 -0500
commit7bd02896a0a87bf40da07698e1edcd2929a77d95 (patch)
tree47218088bbba7df272981d95e6e87e4f33e5aee6
parent5b9b9b8d08dc760b5762d8b49f892aed58adb013 (diff)
downloadcryptopp-git-7bd02896a0a87bf40da07698e1edcd2929a77d95.tar.gz
Fix XLC flags with LLVM front-end
-rwxr-xr-xGNUmakefile266
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