Hello guys, After conversation in IRC with Richard, I've slightly updated the patch. 1. According to Richards suggestion I moved PTA_HLE to `generic` march. 2. Applied and updated Andi's patch (see [1]). 3. Updated tests to use proper memory model combintations 4. Added 1-sentense description to extend.texi to mention
Since, I've changed i386 part, I thing Uros's OK is also needed. ChangeLog entry: 2012-04-27 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 and generic64. (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. testsuite/ChageLog entry: 2012-04-27 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. bootstrap passing. HLE tests passing. Patch attached. OK? [1] - http://gcc.gnu.org/ml/gcc-patches/2012-04/msg01538.html. Thanks, K On Thu, Apr 19, 2012 at 9:18 PM, Uros Bizjak <ubiz...@gmail.com> wrote: > On Thu, Apr 19, 2012 at 5:21 PM, Kirill Yukhin <kirill.yuk...@gmail.com> > wrote: >> Folks, >> Thanks a lot for prompts! >> I've updated my patch, so cmparing to previous it is: >> - have dedicated hook var, to define target dep. bits in mem model. >> Check (and warning) is performed in get_memmodel >> - prefix emit performed through dedicated operand type (%K) > > +#else > + fputs ("\n" ASM_BYTE "0xf3\n\t"); > +#endif > > Ouch, my bad, you need to add file argument here (no need to repost > patch because of this). FYI, you have wrong indentation here. > > Otherwise, OK as far as x86 is concerned, but you will need separate > approval for middle-end part. > > Thanks, > Uros.
hle-5.gcc.patch
Description: Binary data