On Tue, Oct 29, 2019 at 8:57 AM Jakub Jelinek <ja...@redhat.com> wrote:
>
> Hi!
>
> While working on the OpenMP isa patch, I've noticed most of the x86 ISA
> options imply in the help text that it enables MMX, when they do not.
> We now have the mmx in sse2, so to some extent most of the built-in functions
> are enabled with sse2 on 64-bit targets, but we do not enable MMX code
> generation and I think listing MMX in there does more harm than good,
> it is something that should better be explained in the documentation.

But e.g. -msse does enable MMX built-in functions. The fact that these
builtins are implemented using SSE instructions on x86_64 is just an
implementation detail. OTOH, on 32bit targets -msse still enables MMX
buitlins *and* code generation.

So, this test:

--cut here--
typedef int __m64 __attribute__ ((__vector_size__ (8), __may_alias__));

__m64 test (__m64 __m1, __m64 __m2)
{
  return __builtin_ia32_paddd (__m1, __m2);
}
--cut here--

compiles MMX built-in function with -msse option to what the
documentation claims.

Uros.

> Ok for trunk?
>
> 2019-10-29  Jakub Jelinek  <ja...@redhat.com>
>
>         * config/i386/i386.opt (-msse, -msse2, -msse3, -mssse3, -msse4.1,
>         -msse4.2, -msse4, -mavx, -mavx2, -mavx512f, -mavx512pf, -mavx512er,
>         -mavx512cd, -mavx512dq, -mavx512bw, -mavx512vl, -mavx512ifma,
>         -mavx512vbmi, -mavx5124fmaps, -mavx5124vnniw, -mavx512vpopcntdq,
>         -mavx512vbmi2, -mavx512bitalg, -mfma, -msse4a, -mavx512bf16): Don't
>         mention MMX among supported builtins or code generation.
>
> --- gcc/config/i386/i386.opt.jj 2019-09-11 21:50:55.000000000 +0200
> +++ gcc/config/i386/i386.opt    2019-10-26 22:12:58.122039453 +0200
> @@ -646,31 +646,31 @@ Support Athlon 3Dnow! built-in functions
>
>  msse
>  Target Report Mask(ISA_SSE) Var(ix86_isa_flags) Save
> -Support MMX and SSE built-in functions and code generation.
> +Support SSE built-in functions and code generation.
>
>  msse2
>  Target Report Mask(ISA_SSE2) Var(ix86_isa_flags) Save
> -Support MMX, SSE and SSE2 built-in functions and code generation.
> +Support SSE and SSE2 built-in functions and code generation.
>
>  msse3
>  Target Report Mask(ISA_SSE3) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2 and SSE3 built-in functions and code generation.
> +Support SSE, SSE2 and SSE3 built-in functions and code generation.
>
>  mssse3
>  Target Report Mask(ISA_SSSE3) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3 and SSSE3 built-in functions and code 
> generation.
> +Support SSE, SSE2, SSE3 and SSSE3 built-in functions and code generation.
>
>  msse4.1
>  Target Report Mask(ISA_SSE4_1) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code 
> generation.
> +Support SSE, SSE2, SSE3, SSSE3 and SSE4.1 built-in functions and code 
> generation.
>
>  msse4.2
>  Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions 
> and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and 
> code generation.
>
>  msse4
>  Target RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions 
> and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and 
> code generation.
>
>  mno-sse4
>  Target RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
> @@ -682,63 +682,63 @@ Target Undocumented Alias(mavx) Warn(%<-
>
>  mavx
>  Target Report Mask(ISA_AVX) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in 
> functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2 and AVX built-in functions 
> and code generation.
>
>  mavx2
>  Target Report Mask(ISA_AVX2) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in 
> functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and AVX2 built-in 
> functions and code generation.
>
>  mavx512f
>  Target Report Mask(ISA_AVX512F) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> built-in functions and code generation.
>
>  mavx512pf
>  Target Report Mask(ISA_AVX512PF) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> and AVX512PF built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and 
> AVX512PF built-in functions and code generation.
>
>  mavx512er
>  Target Report Mask(ISA_AVX512ER) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> and AVX512ER built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and 
> AVX512ER built-in functions and code generation.
>
>  mavx512cd
>  Target Report Mask(ISA_AVX512CD) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> and AVX512CD built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and 
> AVX512CD built-in functions and code generation.
>
>  mavx512dq
>  Target Report Mask(ISA_AVX512DQ) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> and AVX512DQ built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and 
> AVX512DQ built-in functions and code generation.
>
>  mavx512bw
>  Target Report Mask(ISA_AVX512BW) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> and AVX512BW built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and 
> AVX512BW built-in functions and code generation.
>
>  mavx512vl
>  Target Report Mask(ISA_AVX512VL) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> and AVX512VL built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and 
> AVX512VL built-in functions and code generation.
>
>  mavx512ifma
>  Target Report Mask(ISA_AVX512IFMA) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> and AVX512IFMA built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and 
> AVX512IFMA built-in functions and code generation.
>
>  mavx512vbmi
>  Target Report Mask(ISA_AVX512VBMI) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F 
> and AVX512VBMI built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and AVX512F and 
> AVX512VBMI built-in functions and code generation.
>
>  mavx5124fmaps
>  Target Report Mask(ISA_AVX5124FMAPS) Var(ix86_isa_flags2) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX5124FMAPS built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX5124FMAPS built-in functions and code generation.
>
>  mavx5124vnniw
>  Target Report Mask(ISA_AVX5124VNNIW) Var(ix86_isa_flags2) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX5124VNNIW built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX5124VNNIW built-in functions and code generation.
>
>  mavx512vpopcntdq
>  Target Report Mask(ISA_AVX512VPOPCNTDQ) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX512VPOPCNTDQ built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX512VPOPCNTDQ built-in functions and code generation.
>
>  mavx512vbmi2
>  Target Report Mask(ISA_AVX512VBMI2) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX512VBMI2 built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX512VBMI2 built-in functions and code generation.
>
>  mavx512vnni
>  Target Report Mask(ISA_AVX512VNNI) Var(ix86_isa_flags) Save
> @@ -746,7 +746,7 @@ Support AVX512VNNI built-in functions an
>
>  mavx512bitalg
>  Target Report Mask(ISA_AVX512BITALG) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX512BITALG built-in functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and 
> AVX512BITALG built-in functions and code generation.
>
>  mavx512vp2intersect
>  Target Report Mask(ISA_AVX512VP2INTERSECT) Var(ix86_isa_flags2) Save
> @@ -754,11 +754,11 @@ Support AVX512VP2INTERSECT built-in func
>
>  mfma
>  Target Report Mask(ISA_FMA) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in 
> functions and code generation.
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX and FMA built-in 
> functions and code generation.
>
>  msse4a
>  Target Report Mask(ISA_SSE4A) Var(ix86_isa_flags) Save
> -Support MMX, SSE, SSE2, SSE3 and SSE4A built-in functions and code 
> generation.
> +Support SSE, SSE2, SSE3 and SSE4A built-in functions and code generation.
>
>  mfma4
>  Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
> @@ -1105,7 +1105,7 @@ Generate a __return_loc section pointing
>
>  mavx512bf16
>  Target Report Mask(ISA_AVX512BF16) Var(ix86_isa_flags2) Save
> -Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and
> +Support SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and
>  AVX512BF16 built-in functions and code generation.
>
>  menqcmd
>
>         Jakub
>

Reply via email to