[4.8, PATCH 2/26] Backport Power8 and LE support: HTM support

David Edelsohn dje.gcc@gmail.com
Thu Apr 3 14:27:00 GMT 2014


On Wed, Mar 19, 2014 at 3:25 PM, Bill Schmidt
<wschmidt@linux.vnet.ibm.com> wrote:
> Hi,
>
> This patch (diff-p8-htm) backports hardware transactional memory
> support.  Copying Jakub and Richard for the libitm support.
>
> Thanks,
> Bill
>
>
> [gcc]
>
> 2014-03-29  Bill Schmidt <wschmidt@linux.vnet.ibm.com>
>
>         Backport from mainline
>         2013-12-03  Peter Bergner  <bergner@vnet.ibm.com>
>
>         * config/rs6000/htmintrin.h (_TEXASR_INSTRUCTION_FETCH_CONFLICT): Fix
>         typo in macro name.
>         (_TEXASRU_INSTRUCTION_FETCH_CONFLICT): Likewise.
>
>         Backport from mainline r205233.
>         2013-11-21  Peter Bergner  <bergner@vnet.ibm.com>
>
>         * doc/extend.texi: Document htm builtins.
>
>         Backport from mainline
>         2013-07-17  Iain Sandoe  <iain@codesourcery.com>
>
>         * config/rs6000/darwin.h (REGISTER_NAMES): Add HTM registers.
>
>         Backport from mainline
>         2013-07-16  Peter Bergner <bergner@vnet.ibm.com>
>
>         * config/rs6000/rs6000.c (rs6000_option_override_internal): Do not
>         enable extra ISA flags with TARGET_HTM.
>
>         2013-07-16  Jakub Jelinek  <jakub@redhat.com>
>                     Peter Bergner  <bergner@vnet.ibm.com>
>
>         * config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTERS): Mention HTM
>         registers in the comment.
>         (DWARF_FRAME_REGISTERS): Subtract also the 3 HTM registers.
>         (DWARF_REG_TO_UNWIND_COLUMN): Use DWARF_FRAME_REGISTERS
>         rather than FIRST_PSEUDO_REGISTERS.
>
>         * config.gcc (powerpc*-*-*): Install htmintrin.h and htmxlintrin.h.
>         * config/rs6000/t-rs6000 (MD_INCLUDES): Add htm.md.
>         * config/rs6000/rs6000.opt: Add -mhtm option.
>         * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_HTM.
>         (ISA_2_7_MASKS_SERVER): Add OPTION_MASK_HTM.
>         * config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
>         __HTM__ if the HTM instructions are available.
>         * config/rs6000/predicates.md (u3bit_cint_operand, u10bit_cint_operand,
>         htm_spr_reg_operand): New define_predicates.
>         * config/rs6000/rs6000.md (define_attr "type"): Add htm.
>         (TFHAR_REGNO, TFIAR_REGNO, TEXASR_REGNO): New define_constants.
>         Include htm.md.
>         * config/rs6000/rs6000-builtin.def (BU_HTM_0, BU_HTM_1, BU_HTM_2,
>         BU_HTM_3, BU_HTM_SPR0, BU_HTM_SPR1): Add support macros for defining
>         HTM builtin functions.
>         * config/rs6000/rs6000.c (RS6000_BUILTIN_H): New macro.
>         (rs6000_reg_names, alt_reg_names): Add HTM SPR register names.
>         (rs6000_init_hard_regno_mode_ok): Add support for HTM instructions.
>         (rs6000_builtin_mask_calculate): Likewise.
>         (rs6000_option_override_internal): Likewise.
>         (bdesc_htm): Add new HTM builtin support.
>         (htm_spr_num): New function.
>         (htm_spr_regno): Likewise.
>         (rs6000_htm_spr_icode): Likewise.
>         (htm_expand_builtin): Likewise.
>         (htm_init_builtins): Likewise.
>         (rs6000_expand_builtin): Add support for HTM builtin functions.
>         (rs6000_init_builtins): Likewise.
>         (rs6000_invalid_builtin, rs6000_opt_mask): Add support for -mhtm option.
>         * config/rs6000/rs6000.h (ASM_CPU_SPEC): Add support for -mhtm.
>         (TARGET_HTM, MASK_HTM): Define macros.
>         (FIRST_PSEUDO_REGISTER): Adjust for new HTM SPR registers.
>         (FIXED_REGISTERS): Likewise.
>         (CALL_USED_REGISTERS): Likewise.
>         (CALL_REALLY_USED_REGISTERS): Likewise.
>         (REG_ALLOC_ORDER): Likewise.
>         (enum reg_class): Likewise.
>         (REG_CLASS_NAMES): Likewise.
>         (REG_CLASS_CONTENTS): Likewise.
>         (REGISTER_NAMES): Likewise.
>         (ADDITIONAL_REGISTER_NAMES): Likewise.
>         (RS6000_BTC_SPR, RS6000_BTC_VOID, RS6000_BTC_32BIT, RS6000_BTC_64BIT,
>         RS6000_BTC_MISC_MASK, RS6000_BTM_HTM): New macros.
>         (RS6000_BTM_COMMON): Add RS6000_BTM_HTM.
>         * config/rs6000/htm.md: New file.
>         * config/rs6000/htmintrin.h: New file.
>         * config/rs6000/htmxlintrin.h: New file.
>
> [libitm]
>
> 2014-03-29  Bill Schmidt <wschmidt@linux.vnet.ibm.com>
>
>         Backport from mainline
>         * acinclude.m4 (LIBITM_CHECK_AS_HTM): New.
>         * configure: Rebuild.
>         * configure.tgt (target_cpu): Add -mhtm to XCFLAGS.
>         * config/powerpc/target.h: Include sys/auxv.h and htmintrin.h.
>         (USE_HTM_FASTPATH): Define.
>         (_TBEGIN_STARTED, _TBEGIN_INDETERMINATE, _TBEGIN_PERSISTENT,
>         _HTM_RETRIES) New macros.
>         (htm_abort, htm_abort_should_retry, htm_available, htm_begin, htm_init,
>         htm_begin_success, htm_commit, htm_transaction_active): New functions.
>
> [gcc/testsuite]
>
> 2014-03-29  Bill Schmidt <wschmidt@linux.vnet.ibm.com>
>
>         Backport from mainline
>         * lib/target-supports.exp (check_effective_target_powerpc_htm_ok): New
>         function to test if HTM is available.
>         * gcc.target/powerpc/htm-xl-intrin-1.c: New test.
>         * gcc.target/powerpc/htm-builtin-1.c: New test.

The PowerPC bits are okay.

Thanks, David



More information about the Gcc-patches mailing list