re PR target/79569 (Unrecognized command line option ‘-m3dnowa’)
authorJakub Jelinek <jakub@redhat.com>
Sat, 18 Feb 2017 13:14:43 +0000 (14:14 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Sat, 18 Feb 2017 13:14:43 +0000 (14:14 +0100)
PR target/79569
* config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
* common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
(ix86_handle_option): Handle OPT_m3dnowa.
* doc/invoke.texi (-m3dnowa): Document.
* doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
-m3dnowa instead of -m3dnow -march=athlon.

* gcc.target/i386/3dnowA-3.c: New test.

From-SVN: r245561

gcc/ChangeLog
gcc/common/config/i386/i386-common.c
gcc/config/i386/i386.opt
gcc/doc/extend.texi
gcc/doc/invoke.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/3dnowA-3.c [new file with mode: 0644]

index 90e6d1f0ae51fa1d66c85506011b0547ad64789c..69db3df49d0cfb70b7b14331c5556b7750b103bc 100644 (file)
@@ -1,5 +1,13 @@
 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
 
+       PR target/79569
+       * config/i386/i386.opt (m3dnowa): Replace Undocumented with Report.
+       * common/config/i386/i386-common.c (OPTION_MASK_ISA_3DNOW_A_SET): Define.
+       (ix86_handle_option): Handle OPT_m3dnowa.
+       * doc/invoke.texi (-m3dnowa): Document.
+       * doc/extend.texi (__builtin_ia32_pmulhuw, __builtin_ia32_pf2iw): Use
+       -m3dnowa instead of -m3dnow -march=athlon.
+
        PR target/79559
        * config/i386/i386.c (ix86_print_operand): Use output_operand_lossage
        instead of gcc_assert for K, r and R code checks.  Formatting fixes.
index 8284a311d25376caf0cba817a79e1afcb939ca62..4185176495a2096a49ba305c5a411f1e96741458 100644 (file)
@@ -35,6 +35,8 @@ along with GCC; see the file COPYING3.  If not see
 #define OPTION_MASK_ISA_MMX_SET OPTION_MASK_ISA_MMX
 #define OPTION_MASK_ISA_3DNOW_SET \
   (OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_MMX_SET)
+#define OPTION_MASK_ISA_3DNOW_A_SET \
+  (OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_3DNOW_SET)
 
 #define OPTION_MASK_ISA_SSE_SET OPTION_MASK_ISA_SSE
 #define OPTION_MASK_ISA_SSE2_SET \
@@ -293,7 +295,17 @@ ix86_handle_option (struct gcc_options *opts,
       return true;
 
     case OPT_m3dnowa:
-      return false;
+      if (value)
+       {
+         opts->x_ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_A_SET;
+         opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_A_SET;
+       }
+      else
+       {
+         opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_A_UNSET;
+         opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_A_UNSET;
+       }
+      return true;
 
     case OPT_msse:
       if (value)
index b3b961cc3ca3cdd250d73adf68757a59691db0cd..71100d98708e648acfb8c2de605dd1162cc088a0 100644 (file)
@@ -614,7 +614,7 @@ Target Report Mask(ISA_3DNOW) Var(ix86_isa_flags) Save
 Support 3DNow! built-in functions.
 
 m3dnowa
-Target Undocumented Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
+Target Report Mask(ISA_3DNOW_A) Var(ix86_isa_flags) Save
 Support Athlon 3Dnow! built-in functions.
 
 msse
index 3d1546abdd55d90e9575d1ace88db1a85447e97d..143a7b7eb617ebdb86399ab4a1d8b8f5512fbe10 100644 (file)
@@ -19513,9 +19513,8 @@ v2si __builtin_ia32_psradi (v2si, int)
 @end smallexample
 
 The following built-in functions are made available either with
-@option{-msse}, or with a combination of @option{-m3dnow} and
-@option{-march=athlon}.  All of them generate the machine
-instruction that is part of the name.
+@option{-msse}, or with @option{-m3dnowa}.  All of them generate
+the machine instruction that is part of the name.
 
 @smallexample
 v4hi __builtin_ia32_pmulhuw (v4hi, v4hi)
@@ -20615,9 +20614,8 @@ v2sf __builtin_ia32_pi2fd (v2si)
 v4hi __builtin_ia32_pmulhrw (v4hi, v4hi)
 @end smallexample
 
-The following built-in functions are available when both @option{-m3dnow}
-and @option{-march=athlon} are used.  All of them generate the machine
-instruction that is part of the name.
+The following built-in functions are available when @option{-m3dnowa} is used.
+All of them generate the machine instruction that is part of the name.
 
 @smallexample
 v2si __builtin_ia32_pf2iw (v2sf)
index 72038a1ada02248555d952b4b8cccac40b8afe82..31d1095856048da446fa47b2a0eb0cc738b250a4 100644 (file)
@@ -1188,9 +1188,9 @@ See RS/6000 and PowerPC Options.
 -mavx512bw  -mavx512dq  -mavx512ifma  -mavx512vbmi  -msha  -maes @gol
 -mpclmul  -mfsgsbase  -mrdrnd  -mf16c  -mfma @gol
 -mprefetchwt1  -mclflushopt  -mxsavec  -mxsaves @gol
--msse4a  -m3dnow  -mpopcnt  -mabm  -mbmi  -mtbm  -mfma4  -mxop  -mlzcnt @gol
--mbmi2  -mfxsr  -mxsave  -mxsaveopt  -mrtm  -mlwp  -mmpx  -mmwaitx @gol
--mclzero  -mpku  -mthreads @gol
+-msse4a  -m3dnow  -m3dnowa  -mpopcnt  -mabm  -mbmi  -mtbm  -mfma4  -mxop @gol
+-mlzcnt  -mbmi2  -mfxsr  -mxsave  -mxsaveopt  -mrtm  -mlwp  -mmpx  @gol
+-mmwaitx  -mclzero  -mpku  -mthreads @gol
 -mms-bitfields  -mno-align-stringops  -minline-all-stringops @gol
 -minline-stringops-dynamically  -mstringop-strategy=@var{alg} @gol
 -mmemcpy-strategy=@var{strategy}  -mmemset-strategy=@var{strategy} @gol
@@ -24998,6 +24998,9 @@ preferred alignment to @option{-mpreferred-stack-boundary=2}.
 @itemx -m3dnow
 @opindex m3dnow
 @need 200
+@itemx -m3dnowa
+@opindex m3dnowa
+@need 200
 @itemx -mpopcnt
 @opindex mpopcnt
 @need 200
@@ -25047,7 +25050,7 @@ These switches enable the use of instructions in the MMX, SSE,
 SSE2, SSE3, SSSE3, SSE4.1, AVX, AVX2, AVX512F, AVX512PF, AVX512ER, AVX512CD,
 SHA, AES, PCLMUL, FSGSBASE, RDRND, F16C, FMA, SSE4A, FMA4, XOP, LWP, ABM,
 AVX512VL, AVX512BW, AVX512DQ, AVX512IFMA AVX512VBMI, BMI, BMI2, FXSR,
-XSAVE, XSAVEOPT, LZCNT, RTM, MPX, MWAITX, PKU or 3DNow!@:
+XSAVE, XSAVEOPT, LZCNT, RTM, MPX, MWAITX, PKU, 3DNow!@: or enhanced 3DNow!@:
 extended instruction sets.  Each has a corresponding @option{-mno-} option
 to disable use of these instructions.
 
index b4edfe81361a8048d507e675cde265c327201a92..6f741582a70e34892e2f7d18391024e704073885 100644 (file)
@@ -1,5 +1,8 @@
 2017-02-18  Jakub Jelinek  <jakub@redhat.com>
 
+       PR target/79569
+       * gcc.target/i386/3dnowA-3.c: New test.
+
        PR target/79559
        * gcc.target/i386/pr79559.c: New test.
 
diff --git a/gcc/testsuite/gcc.target/i386/3dnowA-3.c b/gcc/testsuite/gcc.target/i386/3dnowA-3.c
new file mode 100644 (file)
index 0000000..7cd57af
--- /dev/null
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-O0 -Werror-implicit-function-declaration -m3dnowa" } */
+
+#include <mm3dnow.h>
+
+__m64
+foo (__m64 x, __m64 y)
+{
+  return _m_pfnacc (x, y);
+}