Re: [GCC-11] [PATCH 0/5] Finish and general-regs-only

2021-08-26 Thread Richard Biener via Gcc-patches
On Wed, Aug 25, 2021 at 9:34 AM Uros Bizjak  wrote:
>
> On Tue, Aug 24, 2021 at 4:57 PM H.J. Lu  wrote:
> >
> > On Sun, Aug 15, 2021 at 11:11 PM Richard Biener
> >  wrote:
> > >
> > > On Fri, Aug 13, 2021 at 3:51 PM H.J. Lu  wrote:
> > > >
> > > >  and target("general-regs-only") function attribute
> > > > were added to GCC 11.  But their implementations are incomplete.  I'd
> > > > like to backport the following patches to GCC 11 branch to finish them.
> > >
> > > Fine with me if x86 maintainers do not disagree (also see one comment I 
> > > have
> > > on the -mwait adding patch).
> >
> > Hi Uros, Honza,
> >
> > Do you have any comments?  The updated -mwait patch with LTO_minor_version
> > bump is at:
> >
> > https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577471.html
>
> I don't have any comments, but IIRC, approved changes can be
> backported from mainline to release branches without additional
> approval.

If they fix regressions, yes.  I understood this wasn't such obvious case here
(instead it's a new but buggy feature).

Richard.

> Uros.
>
> > Thanks.
> >
> > H.J.
> > > > H.J. Lu (5):
> > > >   x86: Add -mmwait for -mgeneral-regs-only
> > > >   x86: Use crc32 target option for CRC32 intrinsics
> > > >   x86: Remove OPTION_MASK_ISA_SSE4_2 from CRC32 _builtin functions
> > > >   x86: Enable the GPR only instructions for -mgeneral-regs-only
> > > >   : Add pragma GCC target("general-regs-only")
> > > >
> > > >  gcc/common/config/i386/i386-common.c   |  45 ++-
> > > >  gcc/config.gcc |   6 +-
> > > >  gcc/config/i386/i386-builtin.def   |   8 +-
> > > >  gcc/config/i386/i386-builtins.c|   4 +-
> > > >  gcc/config/i386/i386-c.c   |   2 +
> > > >  gcc/config/i386/i386-options.c |  12 +
> > > >  gcc/config/i386/i386.c |   6 +-
> > > >  gcc/config/i386/i386.h |   2 +
> > > >  gcc/config/i386/i386.md|   4 +-
> > > >  gcc/config/i386/i386.opt   |   4 +
> > > >  gcc/config/i386/ia32intrin.h   |  42 ++-
> > > >  gcc/config/i386/mwaitintrin.h  |  52 +++
> > > >  gcc/config/i386/pmmintrin.h|  13 +-
> > > >  gcc/config/i386/serializeintrin.h  |   7 +-
> > > >  gcc/config/i386/sse.md |   4 +-
> > > >  gcc/config/i386/x86gprintrin.h |  13 +
> > > >  gcc/doc/extend.texi|   5 +
> > > >  gcc/doc/invoke.texi|   8 +-
> > > >  gcc/testsuite/gcc.target/i386/crc32-6.c|  13 +
> > > >  gcc/testsuite/gcc.target/i386/monitor-2.c  |  27 ++
> > > >  gcc/testsuite/gcc.target/i386/pr101492-1.c |  10 +
> > > >  gcc/testsuite/gcc.target/i386/pr101492-2.c |  10 +
> > > >  gcc/testsuite/gcc.target/i386/pr101492-3.c |  10 +
> > > >  gcc/testsuite/gcc.target/i386/pr101492-4.c |  12 +
> > > >  gcc/testsuite/gcc.target/i386/pr99744-3.c  |  13 +
> > > >  gcc/testsuite/gcc.target/i386/pr99744-4.c  | 357 +
> > > >  gcc/testsuite/gcc.target/i386/pr99744-5.c  |  25 ++
> > > >  gcc/testsuite/gcc.target/i386/pr99744-6.c  |  23 ++
> > > >  gcc/testsuite/gcc.target/i386/pr99744-7.c  |  12 +
> > > >  gcc/testsuite/gcc.target/i386/pr99744-8.c  |  13 +
> > > >  30 files changed, 717 insertions(+), 45 deletions(-)
> > > >  create mode 100644 gcc/config/i386/mwaitintrin.h
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/crc32-6.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/monitor-2.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-1.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-2.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-3.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-4.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-3.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-4.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-5.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-6.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-7.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-8.c
> > > >
> > > > --
> > > > 2.31.1
> > > >
> >
> >
> >
> > --
> > H.J.


Re: [GCC-11] [PATCH 0/5] Finish and general-regs-only

2021-08-25 Thread H.J. Lu via Gcc-patches
On Wed, Aug 25, 2021 at 12:34 AM Uros Bizjak  wrote:
>
> On Tue, Aug 24, 2021 at 4:57 PM H.J. Lu  wrote:
> >
> > On Sun, Aug 15, 2021 at 11:11 PM Richard Biener
> >  wrote:
> > >
> > > On Fri, Aug 13, 2021 at 3:51 PM H.J. Lu  wrote:
> > > >
> > > >  and target("general-regs-only") function attribute
> > > > were added to GCC 11.  But their implementations are incomplete.  I'd
> > > > like to backport the following patches to GCC 11 branch to finish them.
> > >
> > > Fine with me if x86 maintainers do not disagree (also see one comment I 
> > > have
> > > on the -mwait adding patch).
> >
> > Hi Uros, Honza,
> >
> > Do you have any comments?  The updated -mwait patch with LTO_minor_version
> > bump is at:
> >
> > https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577471.html
>
> I don't have any comments, but IIRC, approved changes can be
> backported from mainline to release branches without additional
> approval.

I am checking them in.

Thanks.

> Uros.
>
> > Thanks.
> >
> > H.J.
> > > > H.J. Lu (5):
> > > >   x86: Add -mmwait for -mgeneral-regs-only
> > > >   x86: Use crc32 target option for CRC32 intrinsics
> > > >   x86: Remove OPTION_MASK_ISA_SSE4_2 from CRC32 _builtin functions
> > > >   x86: Enable the GPR only instructions for -mgeneral-regs-only
> > > >   : Add pragma GCC target("general-regs-only")
> > > >
> > > >  gcc/common/config/i386/i386-common.c   |  45 ++-
> > > >  gcc/config.gcc |   6 +-
> > > >  gcc/config/i386/i386-builtin.def   |   8 +-
> > > >  gcc/config/i386/i386-builtins.c|   4 +-
> > > >  gcc/config/i386/i386-c.c   |   2 +
> > > >  gcc/config/i386/i386-options.c |  12 +
> > > >  gcc/config/i386/i386.c |   6 +-
> > > >  gcc/config/i386/i386.h |   2 +
> > > >  gcc/config/i386/i386.md|   4 +-
> > > >  gcc/config/i386/i386.opt   |   4 +
> > > >  gcc/config/i386/ia32intrin.h   |  42 ++-
> > > >  gcc/config/i386/mwaitintrin.h  |  52 +++
> > > >  gcc/config/i386/pmmintrin.h|  13 +-
> > > >  gcc/config/i386/serializeintrin.h  |   7 +-
> > > >  gcc/config/i386/sse.md |   4 +-
> > > >  gcc/config/i386/x86gprintrin.h |  13 +
> > > >  gcc/doc/extend.texi|   5 +
> > > >  gcc/doc/invoke.texi|   8 +-
> > > >  gcc/testsuite/gcc.target/i386/crc32-6.c|  13 +
> > > >  gcc/testsuite/gcc.target/i386/monitor-2.c  |  27 ++
> > > >  gcc/testsuite/gcc.target/i386/pr101492-1.c |  10 +
> > > >  gcc/testsuite/gcc.target/i386/pr101492-2.c |  10 +
> > > >  gcc/testsuite/gcc.target/i386/pr101492-3.c |  10 +
> > > >  gcc/testsuite/gcc.target/i386/pr101492-4.c |  12 +
> > > >  gcc/testsuite/gcc.target/i386/pr99744-3.c  |  13 +
> > > >  gcc/testsuite/gcc.target/i386/pr99744-4.c  | 357 +
> > > >  gcc/testsuite/gcc.target/i386/pr99744-5.c  |  25 ++
> > > >  gcc/testsuite/gcc.target/i386/pr99744-6.c  |  23 ++
> > > >  gcc/testsuite/gcc.target/i386/pr99744-7.c  |  12 +
> > > >  gcc/testsuite/gcc.target/i386/pr99744-8.c  |  13 +
> > > >  30 files changed, 717 insertions(+), 45 deletions(-)
> > > >  create mode 100644 gcc/config/i386/mwaitintrin.h
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/crc32-6.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/monitor-2.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-1.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-2.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-3.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-4.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-3.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-4.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-5.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-6.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-7.c
> > > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-8.c
> > > >
> > > > --
> > > > 2.31.1
> > > >
> >
> >
> >
> > --
> > H.J.



-- 
H.J.


Re: [GCC-11] [PATCH 0/5] Finish and general-regs-only

2021-08-25 Thread Uros Bizjak via Gcc-patches
On Tue, Aug 24, 2021 at 4:57 PM H.J. Lu  wrote:
>
> On Sun, Aug 15, 2021 at 11:11 PM Richard Biener
>  wrote:
> >
> > On Fri, Aug 13, 2021 at 3:51 PM H.J. Lu  wrote:
> > >
> > >  and target("general-regs-only") function attribute
> > > were added to GCC 11.  But their implementations are incomplete.  I'd
> > > like to backport the following patches to GCC 11 branch to finish them.
> >
> > Fine with me if x86 maintainers do not disagree (also see one comment I have
> > on the -mwait adding patch).
>
> Hi Uros, Honza,
>
> Do you have any comments?  The updated -mwait patch with LTO_minor_version
> bump is at:
>
> https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577471.html

I don't have any comments, but IIRC, approved changes can be
backported from mainline to release branches without additional
approval.

Uros.

> Thanks.
>
> H.J.
> > > H.J. Lu (5):
> > >   x86: Add -mmwait for -mgeneral-regs-only
> > >   x86: Use crc32 target option for CRC32 intrinsics
> > >   x86: Remove OPTION_MASK_ISA_SSE4_2 from CRC32 _builtin functions
> > >   x86: Enable the GPR only instructions for -mgeneral-regs-only
> > >   : Add pragma GCC target("general-regs-only")
> > >
> > >  gcc/common/config/i386/i386-common.c   |  45 ++-
> > >  gcc/config.gcc |   6 +-
> > >  gcc/config/i386/i386-builtin.def   |   8 +-
> > >  gcc/config/i386/i386-builtins.c|   4 +-
> > >  gcc/config/i386/i386-c.c   |   2 +
> > >  gcc/config/i386/i386-options.c |  12 +
> > >  gcc/config/i386/i386.c |   6 +-
> > >  gcc/config/i386/i386.h |   2 +
> > >  gcc/config/i386/i386.md|   4 +-
> > >  gcc/config/i386/i386.opt   |   4 +
> > >  gcc/config/i386/ia32intrin.h   |  42 ++-
> > >  gcc/config/i386/mwaitintrin.h  |  52 +++
> > >  gcc/config/i386/pmmintrin.h|  13 +-
> > >  gcc/config/i386/serializeintrin.h  |   7 +-
> > >  gcc/config/i386/sse.md |   4 +-
> > >  gcc/config/i386/x86gprintrin.h |  13 +
> > >  gcc/doc/extend.texi|   5 +
> > >  gcc/doc/invoke.texi|   8 +-
> > >  gcc/testsuite/gcc.target/i386/crc32-6.c|  13 +
> > >  gcc/testsuite/gcc.target/i386/monitor-2.c  |  27 ++
> > >  gcc/testsuite/gcc.target/i386/pr101492-1.c |  10 +
> > >  gcc/testsuite/gcc.target/i386/pr101492-2.c |  10 +
> > >  gcc/testsuite/gcc.target/i386/pr101492-3.c |  10 +
> > >  gcc/testsuite/gcc.target/i386/pr101492-4.c |  12 +
> > >  gcc/testsuite/gcc.target/i386/pr99744-3.c  |  13 +
> > >  gcc/testsuite/gcc.target/i386/pr99744-4.c  | 357 +
> > >  gcc/testsuite/gcc.target/i386/pr99744-5.c  |  25 ++
> > >  gcc/testsuite/gcc.target/i386/pr99744-6.c  |  23 ++
> > >  gcc/testsuite/gcc.target/i386/pr99744-7.c  |  12 +
> > >  gcc/testsuite/gcc.target/i386/pr99744-8.c  |  13 +
> > >  30 files changed, 717 insertions(+), 45 deletions(-)
> > >  create mode 100644 gcc/config/i386/mwaitintrin.h
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/crc32-6.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/monitor-2.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-1.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-2.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-3.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-4.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-3.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-4.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-5.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-6.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-7.c
> > >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-8.c
> > >
> > > --
> > > 2.31.1
> > >
>
>
>
> --
> H.J.


Re: [GCC-11] [PATCH 0/5] Finish and general-regs-only

2021-08-24 Thread H.J. Lu via Gcc-patches
On Sun, Aug 15, 2021 at 11:11 PM Richard Biener
 wrote:
>
> On Fri, Aug 13, 2021 at 3:51 PM H.J. Lu  wrote:
> >
> >  and target("general-regs-only") function attribute
> > were added to GCC 11.  But their implementations are incomplete.  I'd
> > like to backport the following patches to GCC 11 branch to finish them.
>
> Fine with me if x86 maintainers do not disagree (also see one comment I have
> on the -mwait adding patch).

Hi Uros, Honza,

Do you have any comments?  The updated -mwait patch with LTO_minor_version
bump is at:

https://gcc.gnu.org/pipermail/gcc-patches/2021-August/577471.html

Thanks.

H.J.
> > H.J. Lu (5):
> >   x86: Add -mmwait for -mgeneral-regs-only
> >   x86: Use crc32 target option for CRC32 intrinsics
> >   x86: Remove OPTION_MASK_ISA_SSE4_2 from CRC32 _builtin functions
> >   x86: Enable the GPR only instructions for -mgeneral-regs-only
> >   : Add pragma GCC target("general-regs-only")
> >
> >  gcc/common/config/i386/i386-common.c   |  45 ++-
> >  gcc/config.gcc |   6 +-
> >  gcc/config/i386/i386-builtin.def   |   8 +-
> >  gcc/config/i386/i386-builtins.c|   4 +-
> >  gcc/config/i386/i386-c.c   |   2 +
> >  gcc/config/i386/i386-options.c |  12 +
> >  gcc/config/i386/i386.c |   6 +-
> >  gcc/config/i386/i386.h |   2 +
> >  gcc/config/i386/i386.md|   4 +-
> >  gcc/config/i386/i386.opt   |   4 +
> >  gcc/config/i386/ia32intrin.h   |  42 ++-
> >  gcc/config/i386/mwaitintrin.h  |  52 +++
> >  gcc/config/i386/pmmintrin.h|  13 +-
> >  gcc/config/i386/serializeintrin.h  |   7 +-
> >  gcc/config/i386/sse.md |   4 +-
> >  gcc/config/i386/x86gprintrin.h |  13 +
> >  gcc/doc/extend.texi|   5 +
> >  gcc/doc/invoke.texi|   8 +-
> >  gcc/testsuite/gcc.target/i386/crc32-6.c|  13 +
> >  gcc/testsuite/gcc.target/i386/monitor-2.c  |  27 ++
> >  gcc/testsuite/gcc.target/i386/pr101492-1.c |  10 +
> >  gcc/testsuite/gcc.target/i386/pr101492-2.c |  10 +
> >  gcc/testsuite/gcc.target/i386/pr101492-3.c |  10 +
> >  gcc/testsuite/gcc.target/i386/pr101492-4.c |  12 +
> >  gcc/testsuite/gcc.target/i386/pr99744-3.c  |  13 +
> >  gcc/testsuite/gcc.target/i386/pr99744-4.c  | 357 +
> >  gcc/testsuite/gcc.target/i386/pr99744-5.c  |  25 ++
> >  gcc/testsuite/gcc.target/i386/pr99744-6.c  |  23 ++
> >  gcc/testsuite/gcc.target/i386/pr99744-7.c  |  12 +
> >  gcc/testsuite/gcc.target/i386/pr99744-8.c  |  13 +
> >  30 files changed, 717 insertions(+), 45 deletions(-)
> >  create mode 100644 gcc/config/i386/mwaitintrin.h
> >  create mode 100644 gcc/testsuite/gcc.target/i386/crc32-6.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/monitor-2.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-1.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-2.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-3.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-4.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-3.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-4.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-5.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-6.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-7.c
> >  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-8.c
> >
> > --
> > 2.31.1
> >



--
H.J.


Re: [GCC-11] [PATCH 0/5] Finish and general-regs-only

2021-08-16 Thread Richard Biener via Gcc-patches
On Fri, Aug 13, 2021 at 3:51 PM H.J. Lu  wrote:
>
>  and target("general-regs-only") function attribute
> were added to GCC 11.  But their implementations are incomplete.  I'd
> like to backport the following patches to GCC 11 branch to finish them.

Fine with me if x86 maintainers do not disagree (also see one comment I have
on the -mwait adding patch).

> H.J. Lu (5):
>   x86: Add -mmwait for -mgeneral-regs-only
>   x86: Use crc32 target option for CRC32 intrinsics
>   x86: Remove OPTION_MASK_ISA_SSE4_2 from CRC32 _builtin functions
>   x86: Enable the GPR only instructions for -mgeneral-regs-only
>   : Add pragma GCC target("general-regs-only")
>
>  gcc/common/config/i386/i386-common.c   |  45 ++-
>  gcc/config.gcc |   6 +-
>  gcc/config/i386/i386-builtin.def   |   8 +-
>  gcc/config/i386/i386-builtins.c|   4 +-
>  gcc/config/i386/i386-c.c   |   2 +
>  gcc/config/i386/i386-options.c |  12 +
>  gcc/config/i386/i386.c |   6 +-
>  gcc/config/i386/i386.h |   2 +
>  gcc/config/i386/i386.md|   4 +-
>  gcc/config/i386/i386.opt   |   4 +
>  gcc/config/i386/ia32intrin.h   |  42 ++-
>  gcc/config/i386/mwaitintrin.h  |  52 +++
>  gcc/config/i386/pmmintrin.h|  13 +-
>  gcc/config/i386/serializeintrin.h  |   7 +-
>  gcc/config/i386/sse.md |   4 +-
>  gcc/config/i386/x86gprintrin.h |  13 +
>  gcc/doc/extend.texi|   5 +
>  gcc/doc/invoke.texi|   8 +-
>  gcc/testsuite/gcc.target/i386/crc32-6.c|  13 +
>  gcc/testsuite/gcc.target/i386/monitor-2.c  |  27 ++
>  gcc/testsuite/gcc.target/i386/pr101492-1.c |  10 +
>  gcc/testsuite/gcc.target/i386/pr101492-2.c |  10 +
>  gcc/testsuite/gcc.target/i386/pr101492-3.c |  10 +
>  gcc/testsuite/gcc.target/i386/pr101492-4.c |  12 +
>  gcc/testsuite/gcc.target/i386/pr99744-3.c  |  13 +
>  gcc/testsuite/gcc.target/i386/pr99744-4.c  | 357 +
>  gcc/testsuite/gcc.target/i386/pr99744-5.c  |  25 ++
>  gcc/testsuite/gcc.target/i386/pr99744-6.c  |  23 ++
>  gcc/testsuite/gcc.target/i386/pr99744-7.c  |  12 +
>  gcc/testsuite/gcc.target/i386/pr99744-8.c  |  13 +
>  30 files changed, 717 insertions(+), 45 deletions(-)
>  create mode 100644 gcc/config/i386/mwaitintrin.h
>  create mode 100644 gcc/testsuite/gcc.target/i386/crc32-6.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/monitor-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-2.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-3.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-4.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-5.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-6.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-7.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-8.c
>
> --
> 2.31.1
>


[GCC-11] [PATCH 0/5] Finish and general-regs-only

2021-08-13 Thread H.J. Lu via Gcc-patches
 and target("general-regs-only") function attribute
were added to GCC 11.  But their implementations are incomplete.  I'd
like to backport the following patches to GCC 11 branch to finish them.

H.J. Lu (5):
  x86: Add -mmwait for -mgeneral-regs-only
  x86: Use crc32 target option for CRC32 intrinsics
  x86: Remove OPTION_MASK_ISA_SSE4_2 from CRC32 _builtin functions
  x86: Enable the GPR only instructions for -mgeneral-regs-only
  : Add pragma GCC target("general-regs-only")

 gcc/common/config/i386/i386-common.c   |  45 ++-
 gcc/config.gcc |   6 +-
 gcc/config/i386/i386-builtin.def   |   8 +-
 gcc/config/i386/i386-builtins.c|   4 +-
 gcc/config/i386/i386-c.c   |   2 +
 gcc/config/i386/i386-options.c |  12 +
 gcc/config/i386/i386.c |   6 +-
 gcc/config/i386/i386.h |   2 +
 gcc/config/i386/i386.md|   4 +-
 gcc/config/i386/i386.opt   |   4 +
 gcc/config/i386/ia32intrin.h   |  42 ++-
 gcc/config/i386/mwaitintrin.h  |  52 +++
 gcc/config/i386/pmmintrin.h|  13 +-
 gcc/config/i386/serializeintrin.h  |   7 +-
 gcc/config/i386/sse.md |   4 +-
 gcc/config/i386/x86gprintrin.h |  13 +
 gcc/doc/extend.texi|   5 +
 gcc/doc/invoke.texi|   8 +-
 gcc/testsuite/gcc.target/i386/crc32-6.c|  13 +
 gcc/testsuite/gcc.target/i386/monitor-2.c  |  27 ++
 gcc/testsuite/gcc.target/i386/pr101492-1.c |  10 +
 gcc/testsuite/gcc.target/i386/pr101492-2.c |  10 +
 gcc/testsuite/gcc.target/i386/pr101492-3.c |  10 +
 gcc/testsuite/gcc.target/i386/pr101492-4.c |  12 +
 gcc/testsuite/gcc.target/i386/pr99744-3.c  |  13 +
 gcc/testsuite/gcc.target/i386/pr99744-4.c  | 357 +
 gcc/testsuite/gcc.target/i386/pr99744-5.c  |  25 ++
 gcc/testsuite/gcc.target/i386/pr99744-6.c  |  23 ++
 gcc/testsuite/gcc.target/i386/pr99744-7.c  |  12 +
 gcc/testsuite/gcc.target/i386/pr99744-8.c  |  13 +
 30 files changed, 717 insertions(+), 45 deletions(-)
 create mode 100644 gcc/config/i386/mwaitintrin.h
 create mode 100644 gcc/testsuite/gcc.target/i386/crc32-6.c
 create mode 100644 gcc/testsuite/gcc.target/i386/monitor-2.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-1.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-2.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-3.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr101492-4.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-3.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-4.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-5.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-6.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-7.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr99744-8.c

-- 
2.31.1