Fix XLC flags with LLVM front-end
parent
5b9b9b8d08
commit
7bd02896a0
274
GNUmakefile
274
GNUmakefile
|
|
@ -593,184 +593,132 @@ endif
|
||||||
ifneq ($(IS_PPC32)$(IS_PPC64),00)
|
ifneq ($(IS_PPC32)$(IS_PPC64),00)
|
||||||
ifeq ($(DETECT_FEATURES),1)
|
ifeq ($(DETECT_FEATURES),1)
|
||||||
|
|
||||||
# GCC and some compatibles
|
ifeq ($(XLC_COMPILER),1)
|
||||||
ifneq ($(GCC_COMPILER)$(CLANG_COMPILER),00)
|
POWER9_FLAG = -qarch=pwr9 -qaltivec
|
||||||
|
POWER8_FLAG = -qarch=pwr8 -qaltivec
|
||||||
TPROG = TestPrograms/test_ppc_power8.cxx
|
POWER7_FLAG = -qarch=pwr7 -qaltivec
|
||||||
TOPT = -mcpu=power8 -maltivec
|
POWER6_FLAG = -qarch=pwr6 -qaltivec
|
||||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT))
|
POWER5_FLAG = -qarch=pwr5 -qaltivec
|
||||||
ifeq ($(HAVE_OPT),0)
|
POWER4_FLAG = -qarch=pwr4 -qaltivec
|
||||||
POWER8_FLAG = -mcpu=power8 -maltivec
|
else
|
||||||
AES_FLAG = $(POWER8_FLAG)
|
POWER9_FLAG = -mcpu=power9 -maltivec
|
||||||
BLAKE2B_FLAG = $(POWER8_FLAG)
|
POWER8_FLAG = -mcpu=power8 -maltivec
|
||||||
BLAKE2S_FLAG = $(POWER8_FLAG)
|
POWER7_FLAG = -mcpu=power7 -maltivec
|
||||||
CHACHA_FLAG = $(POWER8_FLAG)
|
POWER6_FLAG = -mcpu=power6 -maltivec
|
||||||
GCM_FLAG = $(POWER8_FLAG)
|
POWER5_FLAG = -mcpu=power5 -maltivec
|
||||||
SHA_FLAG = $(POWER8_FLAG)
|
POWER4_FLAG = -mcpu=power4 -maltivec
|
||||||
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
|
|
||||||
|
|
||||||
TPROG = TestPrograms/test_ppc_altivec.cxx
|
|
||||||
TOPT = -mcpu=power4 -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=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
|
|
||||||
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
|
endif
|
||||||
|
|
||||||
# IBM XL C/C++
|
# XLC with LLVM front-ends failed to define XLC defines.
|
||||||
ifeq ($(XLC_COMPILER),1)
|
ifeq ($(findstring -qxlcompatmacros,$(CXXFLAGS)),)
|
||||||
|
|
||||||
# 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 = -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_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_altivec.cxx
|
TPROG = TestPrograms/test_ppc_altivec.cxx
|
||||||
TOPT = -qarch=pwr4 -qaltivec
|
TOPT = -qxlcompatmacros
|
||||||
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT))
|
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT))
|
||||||
ifeq ($(HAVE_OPT),0)
|
ifeq ($(HAVE_OPT),0)
|
||||||
ALTIVEC_FLAG = -qarch=pwr4 -qaltivec
|
CXXFLAGS += -qxlcompatmacros
|
||||||
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
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# LLVM front-end to XLC only provide Power8. It really jambs
|
TPROG = TestPrograms/test_ppc_power8.cxx
|
||||||
# us up for ppc_simd.cpp which needs ALTIVEC/POWER4. We have
|
TOPT = $(POWER9_FLAG)
|
||||||
# similar problems with POWER7.
|
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT))
|
||||||
ifneq ($(POWER8_FLAG),)
|
ifeq ($(HAVE_OPT),0)
|
||||||
ifeq ($(POWER7_FLAG),)
|
ALTIVEC_FLAG = $(POWER9_FLAG)
|
||||||
POWER7_FLAG = $(POWER8_FLAG)
|
AES_FLAG = $(POWER9_FLAG)
|
||||||
ARIA_FLAG = $(POWER8_FLAG)
|
BLAKE2B_FLAG = $(POWER9_FLAG)
|
||||||
BLAKE2B_FLAG = $(POWER8_FLAG)
|
BLAKE2S_FLAG = $(POWER9_FLAG)
|
||||||
BLAKE2S_FLAG = $(POWER8_FLAG)
|
CHACHA_FLAG = $(POWER9_FLAG)
|
||||||
CHACHA_FLAG = $(POWER8_FLAG)
|
GCM_FLAG = $(POWER9_FLAG)
|
||||||
CHAM_FLAG = $(POWER8_FLAG)
|
SHA_FLAG = $(POWER9_FLAG)
|
||||||
LEA_FLAG = $(POWER8_FLAG)
|
SM4_FLAG = $(POWER9_FLAG)
|
||||||
SIMECK_FLAG = $(POWER8_FLAG)
|
SIMON64_FLAG = $(POWER9_FLAG)
|
||||||
SIMON64_FLAG = $(POWER8_FLAG)
|
SIMON128_FLAG = $(POWER9_FLAG)
|
||||||
SIMON128_FLAG = $(POWER8_FLAG)
|
SPECK64_FLAG = $(POWER9_FLAG)
|
||||||
SPECK64_FLAG = $(POWER8_FLAG)
|
SPECK128_FLAG = $(POWER9_FLAG)
|
||||||
SPECK128_FLAG = $(POWER8_FLAG)
|
else
|
||||||
endif
|
POWER9_FLAG =
|
||||||
ifeq ($(ALTIVEC_FLAG),)
|
endif
|
||||||
ALTIVEC_FLAG = $(POWER8_FLAG)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Drop SIMON64 and SPECK64 to Power4 if Power7 not available
|
TPROG = TestPrograms/test_ppc_power8.cxx
|
||||||
ifeq ($(SIMON64_FLAG)$(SPECK64_FLAG),)
|
TOPT = $(POWER8_FLAG)
|
||||||
SIMON64_FLAG = $(ALTIVEC_FLAG)
|
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT))
|
||||||
SPECK64_FLAG = $(ALTIVEC_FLAG)
|
ifeq ($(HAVE_OPT),0)
|
||||||
endif
|
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
|
||||||
|
|
||||||
# Drop ChaCha to Power4 if Power7 and Power8 not available
|
TPROG = TestPrograms/test_ppc_power7.cxx
|
||||||
ifeq ($(CHACHA_FLAG),)
|
TOPT = $(POWER7_FLAG)
|
||||||
CHACHA_FLAG = $(ALTIVEC_FLAG)
|
HAVE_OPT = $(shell $(CXX) $(CXXFLAGS) $(ZOPT) $(TOPT) $(TPROG) -o $(TOUT) 2>&1 | $(GREP) -i -c -E $(BAD_RESULT))
|
||||||
endif
|
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
|
||||||
|
|
||||||
# IBM XL C/C++
|
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
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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 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
|
||||||
|
|
||||||
|
# Drop ChaCha to Power4 if Power7 and Power8 not available
|
||||||
|
ifeq ($(CHACHA_FLAG)$(ALTIVEC_FLAG),$(ALTIVEC_FLAG))
|
||||||
|
CHACHA_FLAG = $(ALTIVEC_FLAG)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ALTIVEC_FLAG),)
|
ifeq ($(ALTIVEC_FLAG),)
|
||||||
CXXFLAGS += -DCRYPTOPP_DISABLE_ALTIVEC
|
CXXFLAGS += -DCRYPTOPP_DISABLE_ALTIVEC
|
||||||
else ifeq ($(POWER7_FLAG),)
|
else ifeq ($(POWER9_FLAG)$(POWER8_FLAG)$(POWER7_FLAG),)
|
||||||
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER7
|
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER7
|
||||||
else ifeq ($(POWER8_FLAG),)
|
else ifeq ($(POWER9_FLAG)$(POWER8_FLAG),)
|
||||||
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8
|
CXXFLAGS += -DCRYPTOPP_DISABLE_POWER8
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue