mirror of git://gcc.gnu.org/git/gcc.git
s390.c: (s390_expand_builtin): Allow -mhtm to be enabled without -march=zEC12.
2013-07-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> * config/s390/s390.c: (s390_expand_builtin): Allow -mhtm to be enabled without -march=zEC12. * config/s390/s390.h (TARGET_HTM): Do not require EC12 machine flags to be set. 2013-07-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> * acinclude.m4: Add htm asm check for s390. * configure.tgt: Add -mhtm and -Wa,-march=zEC12 to the options. * configure: Regenerate. * config/s390/target.h: Remove __HTM__ check. (htm_available): Call getauxval to get hwcaps and check whether HTM is available or not. From-SVN: r201004
This commit is contained in:
parent
1b2d0112c5
commit
167f68ede4
|
|
@ -1,3 +1,10 @@
|
||||||
|
2013-07-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||||
|
|
||||||
|
* config/s390/s390.c: (s390_expand_builtin): Allow -mhtm to be
|
||||||
|
enabled without -march=zEC12.
|
||||||
|
* config/s390/s390.h (TARGET_HTM): Do not require EC12 machine
|
||||||
|
flags to be set.
|
||||||
|
|
||||||
2013-07-16 Maciej W. Rozycki <macro@codesourcery.com>
|
2013-07-16 Maciej W. Rozycki <macro@codesourcery.com>
|
||||||
|
|
||||||
* config/mips/mips.h (ISA_HAS_FP4): Correct formatting.
|
* config/mips/mips.h (ISA_HAS_FP4): Correct formatting.
|
||||||
|
|
|
||||||
|
|
@ -9771,11 +9771,8 @@ s390_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED,
|
||||||
if (icode == 0)
|
if (icode == 0)
|
||||||
internal_error ("bad builtin fcode");
|
internal_error ("bad builtin fcode");
|
||||||
|
|
||||||
if (!TARGET_ZEC12)
|
if (!TARGET_HTM)
|
||||||
error ("Transactional execution builtins require zEC12 or later\n");
|
error ("Transactional execution builtins not enabled (-mhtm)\n");
|
||||||
|
|
||||||
if (!TARGET_HTM && TARGET_ZEC12)
|
|
||||||
error ("Transactional execution builtins not enabled (-mtx)\n");
|
|
||||||
|
|
||||||
/* Set a flag in the machine specific cfun part in order to support
|
/* Set a flag in the machine specific cfun part in order to support
|
||||||
saving/restoring of FPRs. */
|
saving/restoring of FPRs. */
|
||||||
|
|
|
||||||
|
|
@ -81,8 +81,7 @@ enum processor_flags
|
||||||
(TARGET_ZARCH && TARGET_CPU_Z196)
|
(TARGET_ZARCH && TARGET_CPU_Z196)
|
||||||
#define TARGET_ZEC12 \
|
#define TARGET_ZEC12 \
|
||||||
(TARGET_ZARCH && TARGET_CPU_ZEC12)
|
(TARGET_ZARCH && TARGET_CPU_ZEC12)
|
||||||
#define TARGET_HTM \
|
#define TARGET_HTM (TARGET_OPT_HTM)
|
||||||
(TARGET_ZARCH && TARGET_CPU_HTM && TARGET_OPT_HTM)
|
|
||||||
|
|
||||||
|
|
||||||
#define TARGET_AVOID_CMP_AND_BRANCH (s390_tune == PROCESSOR_2817_Z196)
|
#define TARGET_AVOID_CMP_AND_BRANCH (s390_tune == PROCESSOR_2817_Z196)
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,12 @@
|
||||||
|
2013-07-17 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||||
|
|
||||||
|
* acinclude.m4: Add htm asm check for s390.
|
||||||
|
* configure.tgt: Add -mhtm and -Wa,-march=zEC12 to the options.
|
||||||
|
* configure: Regenerate.
|
||||||
|
* config/s390/target.h: Remove __HTM__ check.
|
||||||
|
(htm_available): Call getauxval to get hwcaps and check whether
|
||||||
|
HTM is available or not.
|
||||||
|
|
||||||
2013-07-15 Peter Bergner <bergner@vnet.ibm.com>
|
2013-07-15 Peter Bergner <bergner@vnet.ibm.com>
|
||||||
|
|
||||||
* acinclude.m4 (LIBITM_CHECK_AS_HTM): New.
|
* acinclude.m4 (LIBITM_CHECK_AS_HTM): New.
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,17 @@ powerpc*)
|
||||||
AC_DEFINE(HAVE_AS_HTM, 1, [Define to 1 if the assembler supports HTM.])
|
AC_DEFINE(HAVE_AS_HTM, 1, [Define to 1 if the assembler supports HTM.])
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
s390*)
|
||||||
|
AC_CACHE_CHECK([if the assembler supports HTM], libitm_cv_as_htm, [
|
||||||
|
save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$CFLAGS -march=zEC12"
|
||||||
|
AC_TRY_COMPILE([], [asm("tbegin 0,0; tend");],
|
||||||
|
[libitm_cv_as_htm=yes], [libitm_cv_as_htm=no])
|
||||||
|
CFLAGS="$save_CFLAGS"])
|
||||||
|
if test x$libitm_cv_as_htm = xyes; then
|
||||||
|
AC_DEFINE(HAVE_AS_HTM, 1, [Define to 1 if the assembler supports HTM.])
|
||||||
|
fi
|
||||||
|
;;
|
||||||
esac])
|
esac])
|
||||||
|
|
||||||
sinclude(../libtool.m4)
|
sinclude(../libtool.m4)
|
||||||
|
|
|
||||||
|
|
@ -22,11 +22,9 @@
|
||||||
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
|
#ifdef HAVE_SYS_AUXV_H
|
||||||
#include <htmintrin.h>
|
#include <sys/auxv.h>
|
||||||
|
#endif
|
||||||
/* Number of retries for transient failures. */
|
|
||||||
#define _HTM_ITM_RETRIES 10
|
|
||||||
|
|
||||||
namespace GTM HIDDEN {
|
namespace GTM HIDDEN {
|
||||||
|
|
||||||
|
|
@ -58,13 +56,24 @@ cpu_relax (void)
|
||||||
__asm volatile ("" : : : "memory");
|
__asm volatile ("" : : : "memory");
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __HTM__
|
|
||||||
|
// Use HTM if it is supported by the system.
|
||||||
|
// See gtm_thread::begin_transaction for how these functions are used.
|
||||||
|
#if defined (__linux__) \
|
||||||
|
&& defined (HAVE_AS_HTM) \
|
||||||
|
&& defined (HAVE_GETAUXVAL) \
|
||||||
|
&& defined (HWCAP_S390_TE)
|
||||||
|
|
||||||
|
#include <htmintrin.h>
|
||||||
|
|
||||||
|
/* Number of retries for transient failures. */
|
||||||
|
#define _HTM_ITM_RETRIES 10
|
||||||
#define USE_HTM_FASTPATH
|
#define USE_HTM_FASTPATH
|
||||||
|
|
||||||
static inline bool
|
static inline bool
|
||||||
htm_available ()
|
htm_available ()
|
||||||
{
|
{
|
||||||
return true;
|
return (getauxval (AT_HWCAP) & HWCAP_S390_TE) ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline uint32_t
|
static inline uint32_t
|
||||||
|
|
|
||||||
|
|
@ -17395,6 +17395,42 @@ fi
|
||||||
$as_echo "$libitm_cv_as_htm" >&6; }
|
$as_echo "$libitm_cv_as_htm" >&6; }
|
||||||
if test x$libitm_cv_as_htm = xyes; then
|
if test x$libitm_cv_as_htm = xyes; then
|
||||||
|
|
||||||
|
$as_echo "#define HAVE_AS_HTM 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
s390*)
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the assembler supports HTM" >&5
|
||||||
|
$as_echo_n "checking if the assembler supports HTM... " >&6; }
|
||||||
|
if test "${libitm_cv_as_htm+set}" = set; then :
|
||||||
|
$as_echo_n "(cached) " >&6
|
||||||
|
else
|
||||||
|
|
||||||
|
save_CFLAGS="$CFLAGS"
|
||||||
|
CFLAGS="$CFLAGS -march=zEC12"
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
|
/* end confdefs.h. */
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
asm("tbegin 0,0; tend");
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
_ACEOF
|
||||||
|
if ac_fn_c_try_compile "$LINENO"; then :
|
||||||
|
libitm_cv_as_htm=yes
|
||||||
|
else
|
||||||
|
libitm_cv_as_htm=no
|
||||||
|
fi
|
||||||
|
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||||
|
CFLAGS="$save_CFLAGS"
|
||||||
|
fi
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libitm_cv_as_htm" >&5
|
||||||
|
$as_echo "$libitm_cv_as_htm" >&6; }
|
||||||
|
if test x$libitm_cv_as_htm = xyes; then
|
||||||
|
|
||||||
$as_echo "#define HAVE_AS_HTM 1" >>confdefs.h
|
$as_echo "#define HAVE_AS_HTM 1" >>confdefs.h
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -109,8 +109,8 @@ case "${target_cpu}" in
|
||||||
ARCH=x86
|
ARCH=x86
|
||||||
;;
|
;;
|
||||||
s390|s390x)
|
s390|s390x)
|
||||||
|
XCFLAGS="${XCFLAGS} -mzarch -mhtm -Wa,-march=zEC12"
|
||||||
ARCH=s390
|
ARCH=s390
|
||||||
XCFLAGS="${XCFLAGS} -mzarch"
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue