https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126293

--- Comment #16 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by H.J. Lu <[email protected]>:

https://gcc.gnu.org/g:d9e21f7c4d1666baec96398f07ac500d1c912a12

commit r17-3230-gd9e21f7c4d1666baec96398f07ac500d1c912a12
Author: H.J. Lu <[email protected]>
Date:   Fri Jul 17 08:35:34 2026 +0800

    x86-64: Add -m128bit-atomic

    With the silicon vendor guarantees from Intel, AMD, Hygon and Zhaoxin in:

    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104688

    many software developers would happily use inline 128-bit atomic loads
    and stores in their programs because they only target compatible CPUs.
    Add -m128bit-atomic to generate 128-bit atomic loads and stores to avoid
    the overhead of calling into libatomic.  Enable -m128bit-atomic in 64-bit
    mode by default if supported by the targeting processor, which is one of
    x86-64-v3 capable processors as well as AVX capable processors from Intel,
    AMD, Hygon and Zhaoxin.

    gcc/

            PR target/94649
            PR target/126293
            * common/config/i386/i386-cpuinfo.h (ix86_decode_cpu_info): New
            function.
            * config/i386/i386-options.cc
            (ix86_option_override_internal): Issue an error for -m128bit-atomic
            in 32-bit mode.  Turn on -mcx16 if -m128bit-atomic is enabled.
            Enable -m128bit-atomic in 64-bit mode by default if supported by
            the targeting processor.
            * config/i386/i386.h (TARGET_128BIT_ATOMIC_ENABLED): New.
            * config/i386/i386.opt (m128bit-atomic): New option.
            * config/i386/i386.opt.urls: Regenerated.
            * config/i386/sync.md: Update comments for 128-bit aligned vector
            loads and stores.
            (atomic_loadti): New pattern.
            (atomic_loadti_sse): Likewise.
            (atomic_storeti): Likewise.
            (atomic_storeti_sse): Likewise.
            * doc/invoke.texi: Remove __atomic Builtins reference from -mcx16.
            Document -m128bit-atomic.

    gcc/testsuite/

            PR target/94649
            PR target/126293
            * g++.target/i386/pr94649-1.C: New test.
            * gcc.target/i386/pr126293-1a.c: Likewise.
            * gcc.target/i386/pr126293-1b.c: Likewise.
            * gcc.target/i386/pr126293-1c.c: Likewise.
            * gcc.target/i386/pr126293-1d.c: Likewise.
            * gcc.target/i386/pr126293-2a.c: Likewise.
            * gcc.target/i386/pr126293-2b.c: Likewise.
            * gcc.target/i386/pr126293-3a.c: Likewise.
            * gcc.target/i386/pr126293-3b.c: Likewise.
            * gcc.target/i386/pr126293-4a.c: Likewise.
            * gcc.target/i386/pr126293-4b.c: Likewise.
            * gcc.target/i386/pr126293-4c.c: Likewise.
            * gcc.target/i386/pr126293-4d.c: Likewise.
            * gcc.target/i386/pr126293-4e.c: Likewise.
            * gcc.target/i386/pr126293-4f.c: Likewise.
            * gcc.target/i386/pr126293-4g.c: Likewise.
            * gcc.target/i386/pr126293-4h.c: Likewise.
            * gcc.target/i386/pr126293-4i.c: Likewise.
            * gcc.target/i386/pr126293-4j.c: Likewise.
            * gcc.target/i386/pr126293-4k.c: Likewise.
            * gcc.target/i386/pr126293-4l.c: Likewise.
            * gcc.target/i386/pr126293-4m.c: Likewise.
            * gcc.target/i386/pr126293-4n.c: Likewise.
            * gcc.target/i386/pr126293-4o.c: Likewise.
            * gcc.target/i386/pr126293-4p.c: Likewise.
            * gcc.target/i386/pr126293-4q.c: Likewise.
            * gcc.target/i386/pr126293-4r.c: Likewise.
            * gcc.target/i386/pr126293-4s.c: Likewise.
            * gcc.target/i386/pr126293-5.c: Likewise.
            * gcc.target/i386/pr126293-6.c: Likewise.
            * gcc.target/i386/pr126293-7.c: Likewise.
            * gcc.target/i386/pr126293-8.c: Likewise.
            * gcc.target/i386/pr126293-9.c: Likewise.
            * gcc.target/i386/pr126293-10.c: Likewise.
            * gcc.target/i386/pr126293-11.c: Likewise.
            * gcc.target/i386/pr126293-12.c: Likewise.
            * gcc.target/i386/pr126293-13.c: Likewise.
            * gcc.target/i386/pr126293-14.c: Likewise.
            * gcc.target/i386/pr126293-15.c: Likewise.
            * gcc.target/i386/pr126293-16.c: Likewise.
            * gcc.target/i386/pr126293-17.c: Likewise.

    Signed-off-by: H.J. Lu <[email protected]>

Reply via email to