http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53194

--- Comment #8 from eraman at gcc dot gnu.org 2012-08-14 00:51:15 UTC ---
Author: eraman
Date: Tue Aug 14 00:51:10 2012
New Revision: 190375

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=190375
Log:
2012-08-13   Easwaran Raman  <era...@google.com>
    Backport the following patches from trunk to add support for Intel
    Transactional Memory Instructions support (Google ref b/6496405):
    r185218, r185223, r187051, r187084.

    r185218,r185223:
    2012-02-12  Kirill Yukhin  <kirill.yuk...@intel.com>
        * doc/invoke.texi: Document -mrtm option.
        * common/config/i386/i386-common.c (OPTION_MASK_ISA_RTM_SET):
        New.
        (OPTION_MASK_ISA_RTM_UNSET): Ditto.
        (ix86_handle_option): Handle OPT_mrtm.
        * config.gcc (i[34567]86-*-*): Add rtmintrin.h and
        xtestintrin.h.
        (x86_64-*-*): Ditto.
        * i386-builtin-types.def (INT_FTYPE_VOID): New.
        * config/i386/i386-c.c (ix86_target_macros_internal): Define
        __RTM__ if needed.
        (ix86_target_string): Define -mrtm option.
        (PTA_RTM): New.
        (ix86_option_override_internal): Extend "corei7-avx" with
        RTM option. Handle new option.
        (ix86_valid_target_attribute_inner_p): Add OPT_mrtm.
        (ix86_builtins): Add IX86_BUILTIN_XBEGIN, IX86_BUILTIN_XEND,
        IX86_BUILTIN_XTEST.
        (bdesc_special_args): Ditto.
        (ix86_init_mmx_sse_builtins): Add IX86_BUILTIN_XABORT.
        (ix86_expand_special_args_builtin): Handle new built-in type.
        (ix86_expand_builtin): Handle XABORT instruction.
        * config/i386/i386.h (TARGET_RTM): New.
        * config/i386/i386.md (UNSPECV_XBEGIN): New.
        (UNSPECV_XEND): Ditto.
        (UNSPECV_XABORT): Ditto.
        (UNSPECV_XTEST): Ditto.
        (xbegin): Ditto.
        (xbegin_1): Ditto.
        (xend): Ditto.
        (xabort): Ditto
        (xtest): Ditto.
        (xtest_1): Ditto.
        * config/i386/i386.opt (mrtm): New.
        * config/i386/immintrin.h: Include rtmintrin.h and
        xtestintrin.h.
        * config/i386/rtmintrin.h: New header.
        * config/i386/xtestintrin.h: Ditto.

    r187051:
    2012-05-02  Kirill Yukhin  <kirill.yuk...@intel.com>
            Andi Kleen <a...@linux.intel.com>

        * coretypes (MEMMODEL_MASK): New.
        * builtins.c (get_memmodel): Add val. Call target.memmodel_check
        and return new variable.
        (expand_builtin_atomic_exchange):  Mask memmodel values.
        (expand_builtin_atomic_compare_exchange): Ditto.
        (expand_builtin_atomic_load): Ditto.
        (expand_builtin_atomic_store): Ditto.
        (expand_builtin_atomic_clear): Ditto.
        * doc/extend.texi: Mention port-dependent memory model flags.
        * config/i386/cpuid.h (bit_HLE): New.
        * config/i386/driver-i386.c (host_detect_local_cpu): Detect
        HLE support.
        * config/i386/i386-protos.h (ix86_generate_hle_prefix): New.
        * config/i386/i386-c.c (ix86_target_macros_internal): Set
        HLE defines.
        (ix86_target_string)<-mhle>: New.
        (ix86_valid_target_attribute_inner_p)<OPT_mhle>: Ditto.
        * config/i386/i386.c (ix86_target_string)<OPTION_MASK_ISA_HLE>:
        New.
        (ix86_valid_target_attribute_inner_p)<OPT_mhle>: Ditto.
        (ix86_option_override_internal)<PTA_HLE>: New switch, set it
        enabled for generic, generic64 and core-avx2.
        (ix86_print_operand): Generate HLE lock prefixes.
        (ix86_memmodel_check): New.
        (TARGET_MEMMODEL_CHECK): Ditto.
        * config/i386/i386.h (OPTION_ISA_HLE): Ditto.
        (IX86_HLE_ACQUIRE): Ditto.
        (IX86_HLE_RELEASE): Ditto.
        * config/i386/i386.h (ix86_generate_hle_prefix): Ditto.
        * config/i386/i386.opt (mhle): Ditto.
        * config/i386/sync.md(atomic_compare_and_swap<mode>): Pass
        success model to instruction emitter.
        (atomic_fetch_add<mode>): Ditto.
        (atomic_exchange<mode>): Ditto.
        (atomic_add<mode>): Ditto.
        (atomic_sub<mode>): Ditto.
        (atomic_<code><mode>): Ditto.
        (*atomic_compare_and_swap_doubledi_pic): Ditto.
        (atomic_compare_and_swap_single<mode>): Define and use argument
        for success model.
        (atomic_compare_and_swap_double<mode>): Ditto.
        * configure.ac: Check if assembler support HLE prefixes.
        * configure: Regenerate.
        * config.in: Ditto.

    r187084:
    2012-05-03  Jakub Jelinek  <ja...@redhat.com>
        PR target/53194
        * config/i386/i386-c.c (ix86_target_macros_internal): Don't
        define __ATOMIC_HLE_* macros here.
        (ix86_target_macros): But here, using cpp_define_formatted.

testsuite/ChangeLog.google-4_7:

2012-08-13   Easwaran Raman  <era...@google.com>
    Backport the following patches from trunk to add support for Intel
    Transactional Memory Instructions support (Google ref b/6496405):
    r185218, r185223, r187051, r187089, r187094.

    r85218,r185223:
    2012-03-12  Kirill Yukhin  <kirill.yuk...@intel.com>
        * gcc.target/i386/rtm-xabort-1.c: New.
        * gcc.target/i386/rtm-xbegin-1.c: Ditto.
        * gcc.target/i386/rtm-xend-1.c: Ditto.
        * gcc.target/i386/rtm-xtest-1.c: Ditto.
        * gcc.target/i386/sse-12.c: Test RTM intrinsics.
        * gcc.target/i386/sse-13.c: Ditto.
        * gcc.target/i386/sse-14.c: Ditto.
        * gcc.target/i386/sse-22.c: Ditto.
        * gcc.target/i386/sse-23.c: Ditto.
        * g++.dg/other/i386-2.C: Ditto.
        * g++.dg/other/i386-3.C: Ditto.

    r187051:
    2012-05-02  Kirill Yukhin  <kirill.yuk...@intel.com>
        * gcc.target/i386/hle-cmpxchg-acq-1.c: New.
        * gcc.target/i386/hle-cmpxchg-rel-1.c: Ditto.
        * gcc.target/i386/hle-add-acq-1.c: Ditto.
        * gcc.target/i386/hle-add-rel-1.c: Ditto.
        * gcc.target/i386/hle-and-acq-1.c: Ditto.
        * gcc.target/i386/hle-and-rel-1.c: Ditto.
        * gcc.target/i386/hle-or-acq-1.c: Ditto.
        * gcc.target/i386/hle-or-rel-1.c: Ditto.
        * gcc.target/i386/hle-sub-acq-1.c: Ditto.
        * gcc.target/i386/hle-sub-rel-1.c: Ditto.
        * gcc.target/i386/hle-xadd-acq-1.c: Ditto.
        * gcc.target/i386/hle-xadd-rel-1.c: Ditto.
        * gcc.target/i386/hle-xchg-acq-1.c: Ditto.
        * gcc.target/i386/hle-xchg-rel-1.c: Ditto.
        * gcc.target/i386/hle-xor-acq-1.c: Ditto.
        * gcc.target/i386/hle-xor-rel-1.c: Ditto.

    r187089:
    2012-05-03  Jakub Jelinek  <ja...@redhat.com>
        * gcc.target/i386/hle-xadd-rel-1.c: Match .byte 0xf3 instead of
        .byte 0xf2.
        * gcc.target/i386/hle-sub-rel-1.c: Likewise.
        * gcc.target/i386/hle-xchg-rel-1.c: Likewise.
        * gcc.target/i386/hle-add-rel-1.c: Likewise.

    r187094:
    2012-05-03  Uros Bizjak  <ubiz...@gmail.com>
        * gcc.target/i386/hle-cmpxchg-acq-1.c (dg-options): Add -march=x86-64.
        * gcc.target/i386/hle-xadd-acq-1.c (dg-options): Ditto.
        * gcc.target/i386/hle-cmpxchg-rel-1.c (dg-options): Ditto.
        * gcc.target/i386/hle-xadd-rel-1.c (dg-options): Ditto.


Added:
    branches/google/gcc-4_7/gcc/config/i386/rtmintrin.h
      - copied unchanged from r185223, trunk/gcc/config/i386/rtmintrin.h
    branches/google/gcc-4_7/gcc/config/i386/xtestintrin.h
      - copied unchanged from r185223, trunk/gcc/config/i386/xtestintrin.h
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-add-acq-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-add-acq-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-add-rel-1.c
      - copied, changed from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-add-rel-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-and-acq-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-and-acq-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-and-rel-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-and-rel-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-cmpxchg-acq-1.c
      - copied, changed from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-cmpxchg-acq-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-cmpxchg-rel-1.c
      - copied, changed from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-cmpxchg-rel-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-or-acq-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-or-acq-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-or-rel-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-or-rel-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-sub-acq-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-sub-acq-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-sub-rel-1.c
      - copied, changed from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-sub-rel-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-xadd-acq-1.c
      - copied, changed from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-xadd-acq-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-xadd-rel-1.c
      - copied, changed from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-xadd-rel-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-xchg-acq-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-xchg-acq-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-xchg-rel-1.c
      - copied, changed from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-xchg-rel-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
      - copied unchanged from r187051,
trunk/gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/rtm-xabort-1.c
      - copied unchanged from r185223,
trunk/gcc/testsuite/gcc.target/i386/rtm-xabort-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/rtm-xbegin-1.c
      - copied unchanged from r185223,
trunk/gcc/testsuite/gcc.target/i386/rtm-xbegin-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/rtm-xend-1.c
      - copied unchanged from r185223,
trunk/gcc/testsuite/gcc.target/i386/rtm-xend-1.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/rtm-xtest-1.c
      - copied unchanged from r185223,
trunk/gcc/testsuite/gcc.target/i386/rtm-xtest-1.c
Modified:
    branches/google/gcc-4_7/gcc/ChangeLog.google-4_7
    branches/google/gcc-4_7/gcc/builtins.c
    branches/google/gcc-4_7/gcc/common/config/i386/i386-common.c
    branches/google/gcc-4_7/gcc/config.gcc
    branches/google/gcc-4_7/gcc/config.in
    branches/google/gcc-4_7/gcc/config/i386/cpuid.h
    branches/google/gcc-4_7/gcc/config/i386/driver-i386.c
    branches/google/gcc-4_7/gcc/config/i386/i386-builtin-types.def
    branches/google/gcc-4_7/gcc/config/i386/i386-c.c
    branches/google/gcc-4_7/gcc/config/i386/i386.c
    branches/google/gcc-4_7/gcc/config/i386/i386.h
    branches/google/gcc-4_7/gcc/config/i386/i386.md
    branches/google/gcc-4_7/gcc/config/i386/i386.opt
    branches/google/gcc-4_7/gcc/config/i386/immintrin.h
    branches/google/gcc-4_7/gcc/config/i386/sync.md
    branches/google/gcc-4_7/gcc/configure
    branches/google/gcc-4_7/gcc/configure.ac
    branches/google/gcc-4_7/gcc/coretypes.h
    branches/google/gcc-4_7/gcc/doc/extend.texi
    branches/google/gcc-4_7/gcc/doc/invoke.texi
    branches/google/gcc-4_7/gcc/doc/tm.texi
    branches/google/gcc-4_7/gcc/doc/tm.texi.in
    branches/google/gcc-4_7/gcc/target.def
    branches/google/gcc-4_7/gcc/testsuite/ChangeLog.google-4_7
    branches/google/gcc-4_7/gcc/testsuite/g++.dg/other/i386-2.C
    branches/google/gcc-4_7/gcc/testsuite/g++.dg/other/i386-3.C
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/sse-12.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/sse-13.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/sse-14.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/sse-22.c
    branches/google/gcc-4_7/gcc/testsuite/gcc.target/i386/sse-23.c

Reply via email to