mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-23 19:39:53 +08:00
Split Makefile symbol CFLAGS_VECTOR into two symbols.
Replace CFLAGS_VECTOR with CFLAGS_UNROLL_LOOPS and CFLAGS_VECTORIZE, allowing us to distinguish whether we want to apply -funroll-loops, -ftree-vectorize, or both to a particular source file. Up to now the only consumer of the symbol has been checksum.c which wants both, so that there was no need to distinguish; but that's about to change. Amit Khandekar, reviewed and edited a little by me Discussion: https://postgr.es/m/CAJ3gD9evtA_vBo+WMYMyT-u=keHX7-r8p2w7OSRfXf42LTwCZQ@mail.gmail.com
This commit is contained in:
parent
784b1ba1a2
commit
695de5d1ed
32
configure
vendored
32
configure
vendored
@ -734,7 +734,8 @@ CPP
|
||||
CFLAGS_SL
|
||||
BITCODE_CXXFLAGS
|
||||
BITCODE_CFLAGS
|
||||
CFLAGS_VECTOR
|
||||
CFLAGS_VECTORIZE
|
||||
CFLAGS_UNROLL_LOOPS
|
||||
PERMIT_DECLARATION_AFTER_STATEMENT
|
||||
LLVM_BINPATH
|
||||
LLVM_CXXFLAGS
|
||||
@ -5266,9 +5267,12 @@ BITCODE_CFLAGS=""
|
||||
user_BITCODE_CXXFLAGS=$BITCODE_CXXFLAGS
|
||||
BITCODE_CXXFLAGS=""
|
||||
|
||||
# set CFLAGS_VECTOR from the environment, if available
|
||||
if test "$ac_env_CFLAGS_VECTOR_set" = set; then
|
||||
CFLAGS_VECTOR=$ac_env_CFLAGS_VECTOR_value
|
||||
# set CFLAGS_UNROLL_LOOPS and CFLAGS_VECTORIZE from the environment, if present
|
||||
if test "$ac_env_CFLAGS_UNROLL_LOOPS_set" = set; then
|
||||
CFLAGS_UNROLL_LOOPS=$ac_env_CFLAGS_UNROLL_LOOPS_value
|
||||
fi
|
||||
if test "$ac_env_CFLAGS_VECTORIZE_set" = set; then
|
||||
CFLAGS_VECTORIZE=$ac_env_CFLAGS_VECTORIZE_value
|
||||
fi
|
||||
|
||||
# Some versions of GCC support some additional useful warning flags.
|
||||
@ -6102,16 +6106,16 @@ if test x"$pgac_cv_prog_CXX_cxxflags__fexcess_precision_standard" = x"yes"; then
|
||||
fi
|
||||
|
||||
|
||||
# Optimization flags for specific files that benefit from vectorization
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -funroll-loops, for CFLAGS_VECTOR" >&5
|
||||
$as_echo_n "checking whether ${CC} supports -funroll-loops, for CFLAGS_VECTOR... " >&6; }
|
||||
# Optimization flags for specific files that benefit from loop unrolling
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -funroll-loops, for CFLAGS_UNROLL_LOOPS" >&5
|
||||
$as_echo_n "checking whether ${CC} supports -funroll-loops, for CFLAGS_UNROLL_LOOPS... " >&6; }
|
||||
if ${pgac_cv_prog_CC_cflags__funroll_loops+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
pgac_save_CFLAGS=$CFLAGS
|
||||
pgac_save_CC=$CC
|
||||
CC=${CC}
|
||||
CFLAGS="${CFLAGS_VECTOR} -funroll-loops"
|
||||
CFLAGS="${CFLAGS_UNROLL_LOOPS} -funroll-loops"
|
||||
ac_save_c_werror_flag=$ac_c_werror_flag
|
||||
ac_c_werror_flag=yes
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@ -6138,19 +6142,20 @@ fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CC_cflags__funroll_loops" >&5
|
||||
$as_echo "$pgac_cv_prog_CC_cflags__funroll_loops" >&6; }
|
||||
if test x"$pgac_cv_prog_CC_cflags__funroll_loops" = x"yes"; then
|
||||
CFLAGS_VECTOR="${CFLAGS_VECTOR} -funroll-loops"
|
||||
CFLAGS_UNROLL_LOOPS="${CFLAGS_UNROLL_LOOPS} -funroll-loops"
|
||||
fi
|
||||
|
||||
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -ftree-vectorize, for CFLAGS_VECTOR" >&5
|
||||
$as_echo_n "checking whether ${CC} supports -ftree-vectorize, for CFLAGS_VECTOR... " >&6; }
|
||||
# Optimization flags for specific files that benefit from vectorization
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${CC} supports -ftree-vectorize, for CFLAGS_VECTORIZE" >&5
|
||||
$as_echo_n "checking whether ${CC} supports -ftree-vectorize, for CFLAGS_VECTORIZE... " >&6; }
|
||||
if ${pgac_cv_prog_CC_cflags__ftree_vectorize+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
pgac_save_CFLAGS=$CFLAGS
|
||||
pgac_save_CC=$CC
|
||||
CC=${CC}
|
||||
CFLAGS="${CFLAGS_VECTOR} -ftree-vectorize"
|
||||
CFLAGS="${CFLAGS_VECTORIZE} -ftree-vectorize"
|
||||
ac_save_c_werror_flag=$ac_c_werror_flag
|
||||
ac_c_werror_flag=yes
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@ -6177,7 +6182,7 @@ fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $pgac_cv_prog_CC_cflags__ftree_vectorize" >&5
|
||||
$as_echo "$pgac_cv_prog_CC_cflags__ftree_vectorize" >&6; }
|
||||
if test x"$pgac_cv_prog_CC_cflags__ftree_vectorize" = x"yes"; then
|
||||
CFLAGS_VECTOR="${CFLAGS_VECTOR} -ftree-vectorize"
|
||||
CFLAGS_VECTORIZE="${CFLAGS_VECTORIZE} -ftree-vectorize"
|
||||
fi
|
||||
|
||||
|
||||
@ -6782,6 +6787,7 @@ fi
|
||||
|
||||
|
||||
|
||||
|
||||
# Determine flags used to emit bitcode for JIT inlining. Need to test
|
||||
# for behaviour changing compiler flags, to keep compatibility with
|
||||
# compiler used for normal postgres code.
|
||||
|
17
configure.ac
17
configure.ac
@ -466,9 +466,12 @@ BITCODE_CFLAGS=""
|
||||
user_BITCODE_CXXFLAGS=$BITCODE_CXXFLAGS
|
||||
BITCODE_CXXFLAGS=""
|
||||
|
||||
# set CFLAGS_VECTOR from the environment, if available
|
||||
if test "$ac_env_CFLAGS_VECTOR_set" = set; then
|
||||
CFLAGS_VECTOR=$ac_env_CFLAGS_VECTOR_value
|
||||
# set CFLAGS_UNROLL_LOOPS and CFLAGS_VECTORIZE from the environment, if present
|
||||
if test "$ac_env_CFLAGS_UNROLL_LOOPS_set" = set; then
|
||||
CFLAGS_UNROLL_LOOPS=$ac_env_CFLAGS_UNROLL_LOOPS_value
|
||||
fi
|
||||
if test "$ac_env_CFLAGS_VECTORIZE_set" = set; then
|
||||
CFLAGS_VECTORIZE=$ac_env_CFLAGS_VECTORIZE_value
|
||||
fi
|
||||
|
||||
# Some versions of GCC support some additional useful warning flags.
|
||||
@ -512,9 +515,10 @@ if test "$GCC" = yes -a "$ICC" = no; then
|
||||
# Disable FP optimizations that cause various errors on gcc 4.5+ or maybe 4.6+
|
||||
PGAC_PROG_CC_CFLAGS_OPT([-fexcess-precision=standard])
|
||||
PGAC_PROG_CXX_CFLAGS_OPT([-fexcess-precision=standard])
|
||||
# Optimization flags for specific files that benefit from loop unrolling
|
||||
PGAC_PROG_CC_VAR_OPT(CFLAGS_UNROLL_LOOPS, [-funroll-loops])
|
||||
# Optimization flags for specific files that benefit from vectorization
|
||||
PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTOR, [-funroll-loops])
|
||||
PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTOR, [-ftree-vectorize])
|
||||
PGAC_PROG_CC_VAR_OPT(CFLAGS_VECTORIZE, [-ftree-vectorize])
|
||||
# We want to suppress clang's unhelpful unused-command-line-argument warnings
|
||||
# but gcc won't complain about unrecognized -Wno-foo switches, so we have to
|
||||
# test for the positive form and if that works, add the negative form
|
||||
@ -555,7 +559,8 @@ elif test "$PORTNAME" = "hpux"; then
|
||||
PGAC_PROG_CXX_CFLAGS_OPT([+Olibmerrno])
|
||||
fi
|
||||
|
||||
AC_SUBST(CFLAGS_VECTOR)
|
||||
AC_SUBST(CFLAGS_UNROLL_LOOPS)
|
||||
AC_SUBST(CFLAGS_VECTORIZE)
|
||||
|
||||
# Determine flags used to emit bitcode for JIT inlining. Need to test
|
||||
# for behaviour changing compiler flags, to keep compatibility with
|
||||
|
@ -259,7 +259,8 @@ SUN_STUDIO_CC = @SUN_STUDIO_CC@
|
||||
CXX = @CXX@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAGS_SL = @CFLAGS_SL@
|
||||
CFLAGS_VECTOR = @CFLAGS_VECTOR@
|
||||
CFLAGS_UNROLL_LOOPS = @CFLAGS_UNROLL_LOOPS@
|
||||
CFLAGS_VECTORIZE = @CFLAGS_VECTORIZE@
|
||||
CFLAGS_SSE42 = @CFLAGS_SSE42@
|
||||
CFLAGS_ARMV8_CRC32C = @CFLAGS_ARMV8_CRC32C@
|
||||
PERMIT_DECLARATION_AFTER_STATEMENT = @PERMIT_DECLARATION_AFTER_STATEMENT@
|
||||
|
@ -19,5 +19,5 @@ OBJS = \
|
||||
|
||||
include $(top_srcdir)/src/backend/common.mk
|
||||
|
||||
# important optimizations flags for checksum.c
|
||||
checksum.o: CFLAGS += ${CFLAGS_VECTOR}
|
||||
# Provide special optimization flags for checksum.c
|
||||
checksum.o: CFLAGS += ${CFLAGS_UNROLL_LOOPS} ${CFLAGS_VECTORIZE}
|
||||
|
Loading…
Reference in New Issue
Block a user