mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
For all ppc compilers, implement compare_exchange and fetch_add with asm.
This is more like how we handle s_lock.h and arch-x86.h. Reviewed by Tom Lane. Discussion: https://postgr.es/m/20191005173400.GA3979129@rfd.leadboat.com
This commit is contained in:
20
configure.in
20
configure.in
@ -1539,6 +1539,26 @@ case $host_cpu in
|
||||
if test x"$pgac_cv_have_ppc_mutex_hint" = xyes ; then
|
||||
AC_DEFINE(HAVE_PPC_LWARX_MUTEX_HINT, 1, [Define to 1 if the assembler supports PPC's LWARX mutex hint bit.])
|
||||
fi
|
||||
# Check if compiler accepts "i"(x) when __builtin_constant_p(x).
|
||||
AC_CACHE_CHECK([whether __builtin_constant_p(x) implies "i"(x) acceptance],
|
||||
[pgac_cv_have_i_constraint__builtin_constant_p],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
|
||||
[static inline int
|
||||
addi(int ra, int si)
|
||||
{
|
||||
int res = 0;
|
||||
if (__builtin_constant_p(si))
|
||||
__asm__ __volatile__(
|
||||
" addi %0,%1,%2\n" : "=r"(res) : "b"(ra), "i"(si));
|
||||
return res;
|
||||
}
|
||||
int test_adds(int x) { return addi(3, x) + addi(x, 5); }], [])],
|
||||
[pgac_cv_have_i_constraint__builtin_constant_p=yes],
|
||||
[pgac_cv_have_i_constraint__builtin_constant_p=no])])
|
||||
if test x"$pgac_cv_have_i_constraint__builtin_constant_p" = xyes ; then
|
||||
AC_DEFINE(HAVE_I_CONSTRAINT__BUILTIN_CONSTANT_P, 1,
|
||||
[Define to 1 if __builtin_constant_p(x) implies "i"(x) acceptance.])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
|
Reference in New Issue
Block a user