On Wed, Feb 13, 2019 at 9:21 PM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> On Tue, Feb 12, 2019 at 4:07 AM Uros Bizjak <ubiz...@gmail.com> wrote:
> >
> > On Mon, Feb 11, 2019 at 11:55 PM H.J. Lu <hjl.to...@gmail.com> wrote:
> > >
> > > Allow MMX intrinsic emulation with SSE/SSE2/SSSE3.  Don't enable MMX ISA
> > > by default with TARGET_MMX_WITH_SSE.
> > >
> > > For pr82483-1.c and pr82483-2.c, "-mssse3 -mno-mmx" compiles in 64-bit
> > > mode since MMX intrinsics can be emulated wit SSE.
> > >
> > > gcc/
> > >
> > >         PR target/89021
> > >         * config/i386/i386-builtin.def: Enable MMX intrinsics with
> > >         SSE/SSE2/SSSE3.
> > >         * config/i386/i386.c (ix86_option_override_internal): Don't
> > >         enable MMX ISA with TARGET_MMX_WITH_SSE by default.
> > >         (bdesc_tm): Enable MMX intrinsics with SSE/SSE2/SSSE3.
> > >         (ix86_init_mmx_sse_builtins): Likewise.
> > >         (ix86_expand_builtin): Allow SSE/SSE2/SSSE3 to emulate MMX
> > >         intrinsics with TARGET_MMX_WITH_SSE.
> > >         * config/i386/mmintrin.h: Don't require MMX in 64-bit mode.
> > >
> > > gcc/testsuite/
> > >
> > >         PR target/89021
> > >         * gcc.target/i386/pr82483-1.c: Error only on ia32.
> > >         * gcc.target/i386/pr82483-2.c: Likewise.
> > > ---
> > >  gcc/config/i386/i386-builtin.def          | 126 +++++++++++-----------
> > >  gcc/config/i386/i386.c                    |  62 +++++++----
> > >  gcc/config/i386/mmintrin.h                |  10 +-
> > >  gcc/testsuite/gcc.target/i386/pr82483-1.c |   2 +-
> > >  gcc/testsuite/gcc.target/i386/pr82483-2.c |   2 +-
> > >  5 files changed, 118 insertions(+), 84 deletions(-)
> > >
>
> > > @@ -30810,13 +30815,13 @@ static const struct builtin_description 
> > > bdesc_##kind[] =                  \
> > >     we're lazy.  Add casts to make them fit.  */
> > >  static const struct builtin_description bdesc_tm[] =
> > >  {
> > > -  { OPTION_MASK_ISA_MMX, 0, CODE_FOR_nothing, "__builtin__ITM_WM64", 
> > > (enum ix86_builtins) BUILT_IN_TM_STORE_M64, UNKNOWN, 
> > > VOID_FTYPE_PV2SI_V2SI },
> > > -  { OPTION_MASK_ISA_MMX, 0, CODE_FOR_nothing, "__builtin__ITM_WaRM64", 
> > > (enum ix86_builtins) BUILT_IN_TM_STORE_WAR_M64, UNKNOWN, 
> > > VOID_FTYPE_PV2SI_V2SI },
> > > -  { OPTION_MASK_ISA_MMX, 0, CODE_FOR_nothing, "__builtin__ITM_WaWM64", 
> > > (enum ix86_builtins) BUILT_IN_TM_STORE_WAW_M64, UNKNOWN, 
> > > VOID_FTYPE_PV2SI_V2SI },
> > > -  { OPTION_MASK_ISA_MMX, 0, CODE_FOR_nothing, "__builtin__ITM_RM64", 
> > > (enum ix86_builtins) BUILT_IN_TM_LOAD_M64, UNKNOWN, V2SI_FTYPE_PCV2SI },
> > > -  { OPTION_MASK_ISA_MMX, 0, CODE_FOR_nothing, "__builtin__ITM_RaRM64", 
> > > (enum ix86_builtins) BUILT_IN_TM_LOAD_RAR_M64, UNKNOWN, V2SI_FTYPE_PCV2SI 
> > > },
> > > -  { OPTION_MASK_ISA_MMX, 0, CODE_FOR_nothing, "__builtin__ITM_RaWM64", 
> > > (enum ix86_builtins) BUILT_IN_TM_LOAD_RAW_M64, UNKNOWN, V2SI_FTYPE_PCV2SI 
> > > },
> > > -  { OPTION_MASK_ISA_MMX, 0, CODE_FOR_nothing, "__builtin__ITM_RfWM64", 
> > > (enum ix86_builtins) BUILT_IN_TM_LOAD_RFW_M64, UNKNOWN, V2SI_FTYPE_PCV2SI 
> > > },
> > > +  { OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_nothing, 
> > > "__builtin__ITM_WM64", (enum ix86_builtins) BUILT_IN_TM_STORE_M64, 
> > > UNKNOWN, VOID_FTYPE_PV2SI_V2SI },
> > > +  { OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_nothing, 
> > > "__builtin__ITM_WaRM64", (enum ix86_builtins) BUILT_IN_TM_STORE_WAR_M64, 
> > > UNKNOWN, VOID_FTYPE_PV2SI_V2SI },
> > > +  { OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_nothing, 
> > > "__builtin__ITM_WaWM64", (enum ix86_builtins) BUILT_IN_TM_STORE_WAW_M64, 
> > > UNKNOWN, VOID_FTYPE_PV2SI_V2SI },
> > > +  { OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_nothing, 
> > > "__builtin__ITM_RM64", (enum ix86_builtins) BUILT_IN_TM_LOAD_M64, 
> > > UNKNOWN, V2SI_FTYPE_PCV2SI },
> > > +  { OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_nothing, 
> > > "__builtin__ITM_RaRM64", (enum ix86_builtins) BUILT_IN_TM_LOAD_RAR_M64, 
> > > UNKNOWN, V2SI_FTYPE_PCV2SI },
> > > +  { OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_nothing, 
> > > "__builtin__ITM_RaWM64", (enum ix86_builtins) BUILT_IN_TM_LOAD_RAW_M64, 
> > > UNKNOWN, V2SI_FTYPE_PCV2SI },
> > > +  { OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_SSE2, 0, CODE_FOR_nothing, 
> > > "__builtin__ITM_RfWM64", (enum ix86_builtins) BUILT_IN_TM_LOAD_RFW_M64, 
> > > UNKNOWN, V2SI_FTYPE_PCV2SI },
> >
> > Please explain why you need the above change.
>
> Reverted.

Actually, I don't know if this change is needed or not, since I don't
know ITM that good. We still have __m64 (V2SI) loads and stores; they
are handled by a different (SSE2) instruction, but the access is still
there. Does ITM care if the access is atomic or not? I don't know.

Uros.

Reply via email to