]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/config/rs6000/rs6000-cpus.def
Update copyright years.
[thirdparty/gcc.git] / gcc / config / rs6000 / rs6000-cpus.def
index 062a91b27343b8f7c0845f605be4b5f5ae1b3e76..fa5c75bb49c8f2bc7c33feab504d45cb39325caf 100644 (file)
@@ -1,5 +1,5 @@
 /* IBM RS/6000 CPU names..
-   Copyright (C) 1991-2017 Free Software Foundation, Inc.
+   Copyright (C) 1991-2021 Free Software Foundation, Inc.
    Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
 
    This file is part of GCC.
 #define ISA_2_2_MASKS          (ISA_2_1_MASKS | OPTION_MASK_POPCNTB)
 #define ISA_2_4_MASKS          (ISA_2_2_MASKS | OPTION_MASK_FPRND)
 
-  /* For ISA 2.05, do not add MFPGPR, since it isn't in ISA 2.06, and don't add
-     ALTIVEC, since in general it isn't a win on power6.  In ISA 2.04, fsel,
-     fre, fsqrt, etc. were no longer documented as optional.  Group masks by
-     server and embedded. */
+  /* For ISA 2.05, don't add ALTIVEC, since in general it isn't a win on
+     power6.  In ISA 2.04, fsel, fre, fsqrt, etc. were no longer documented
+     as optional.  Group masks by server and embedded. */
 #define ISA_2_5_MASKS_EMBEDDED (ISA_2_4_MASKS                          \
                                 | OPTION_MASK_CMPB                     \
                                 | OPTION_MASK_RECIP_PRECISION          \
 
   /* For ISA 2.06, don't add ISEL, since in general it isn't a win, but
      altivec is a win so enable it.  */
-  /* OPTION_MASK_VSX_TIMODE should be set, but disable it for now until
-     PR 58587 is fixed.  */
 #define ISA_2_6_MASKS_EMBEDDED (ISA_2_5_MASKS_EMBEDDED | OPTION_MASK_POPCNTD)
 #define ISA_2_6_MASKS_SERVER   (ISA_2_5_MASKS_SERVER                   \
                                 | OPTION_MASK_POPCNTD                  \
                                 | OPTION_MASK_ALTIVEC                  \
                                 | OPTION_MASK_VSX)
 
-/* For now, don't provide an embedded version of ISA 2.07.  */
+/* For now, don't provide an embedded version of ISA 2.07.  Do not set power8
+   fusion here, instead set it in rs6000.c if we are tuning for a power8
+   system.  */
 #define ISA_2_7_MASKS_SERVER   (ISA_2_6_MASKS_SERVER                   \
-                                | OPTION_MASK_P8_FUSION                \
                                 | OPTION_MASK_P8_VECTOR                \
                                 | OPTION_MASK_CRYPTO                   \
                                 | OPTION_MASK_DIRECT_MOVE              \
                                 | OPTION_MASK_EFFICIENT_UNALIGNED_VSX  \
-                                | OPTION_MASK_HTM                      \
                                 | OPTION_MASK_QUAD_MEMORY              \
-                                | OPTION_MASK_QUAD_MEMORY_ATOMIC       \
-                                | OPTION_MASK_VSX_SMALL_INTEGER)
+                                | OPTION_MASK_QUAD_MEMORY_ATOMIC)
+
+/* ISA masks setting fusion options.  */
+#define OTHER_FUSION_MASKS     (OPTION_MASK_P8_FUSION                  \
+                                | OPTION_MASK_P8_FUSION_SIGN)
 
 /* Add ISEL back into ISA 3.0, since it is supposed to be a win.  Do not add
    FLOAT128_HW here until we are ready to make -mfloat128 on by default.  */
-#define ISA_3_0_MASKS_SERVER   (ISA_2_7_MASKS_SERVER                   \
-                                | OPTION_MASK_ISEL                     \
-                                | OPTION_MASK_MODULO                   \
-                                | OPTION_MASK_P9_FUSION                \
-                                | OPTION_MASK_P9_DFORM_SCALAR          \
-                                | OPTION_MASK_P9_DFORM_VECTOR          \
-                                | OPTION_MASK_P9_MINMAX                \
-                                | OPTION_MASK_P9_MISC                  \
-                                | OPTION_MASK_P9_VECTOR)
+#define ISA_3_0_MASKS_SERVER   ((ISA_2_7_MASKS_SERVER                  \
+                                 | OPTION_MASK_ISEL                    \
+                                 | OPTION_MASK_MODULO                  \
+                                 | OPTION_MASK_P9_MINMAX               \
+                                 | OPTION_MASK_P9_MISC                 \
+                                 | OPTION_MASK_P9_VECTOR)              \
+                                & ~OTHER_FUSION_MASKS)
 
 /* Support for the IEEE 128-bit floating point hardware requires a lot of the
    VSX instructions that are part of ISA 3.0.  */
 #define ISA_3_0_MASKS_IEEE     (OPTION_MASK_VSX                        \
                                 | OPTION_MASK_P8_VECTOR                \
-                                | OPTION_MASK_P9_VECTOR                \
-                                | OPTION_MASK_DIRECT_MOVE              \
-                                | OPTION_MASK_VSX_SMALL_INTEGER)
+                                | OPTION_MASK_P9_VECTOR)
+
+/* Flags that need to be turned off if -mno-power10.  */
+#define OTHER_POWER10_MASKS    (OPTION_MASK_MMA                        \
+                                | OPTION_MASK_PCREL                    \
+                                | OPTION_MASK_PREFIXED)
+
+#define ISA_3_1_MASKS_SERVER   (ISA_3_0_MASKS_SERVER                   \
+                                | OPTION_MASK_POWER10                  \
+                                | OTHER_POWER10_MASKS)
 
 /* Flags that need to be turned off if -mno-power9-vector.  */
 #define OTHER_P9_VECTOR_MASKS  (OPTION_MASK_FLOAT128_HW                \
-                                | OPTION_MASK_P9_DFORM_SCALAR          \
-                                | OPTION_MASK_P9_DFORM_VECTOR          \
                                 | OPTION_MASK_P9_MINMAX)
 
 /* Flags that need to be turned off if -mno-power8-vector.  */
 #define OTHER_VSX_VECTOR_MASKS (OTHER_P8_VECTOR_MASKS                  \
                                 | OPTION_MASK_EFFICIENT_UNALIGNED_VSX  \
                                 | OPTION_MASK_FLOAT128_KEYWORD         \
-                                | OPTION_MASK_FLOAT128_TYPE            \
-                                | OPTION_MASK_P8_VECTOR                \
-                                | OPTION_MASK_VSX_SMALL_INTEGER        \
-                                | OPTION_MASK_VSX_TIMODE)
+                                | OPTION_MASK_P8_VECTOR)
+
+/* Flags that need to be turned off if -mno-altivec.  */
+#define OTHER_ALTIVEC_MASKS    (OTHER_VSX_VECTOR_MASKS                 \
+                                | OPTION_MASK_VSX)
 
 #define POWERPC_7400_MASK      (OPTION_MASK_PPC_GFXOPT | OPTION_MASK_ALTIVEC)
 
                                 | OPTION_MASK_EFFICIENT_UNALIGNED_VSX  \
                                 | OPTION_MASK_FLOAT128_HW              \
                                 | OPTION_MASK_FLOAT128_KEYWORD         \
-                                | OPTION_MASK_FLOAT128_TYPE            \
                                 | OPTION_MASK_FPRND                    \
+                                | OPTION_MASK_POWER10                  \
                                 | OPTION_MASK_HTM                      \
                                 | OPTION_MASK_ISEL                     \
-                                | OPTION_MASK_LRA                      \
                                 | OPTION_MASK_MFCRF                    \
-                                | OPTION_MASK_MFPGPR                   \
+                                | OPTION_MASK_MMA                      \
                                 | OPTION_MASK_MODULO                   \
                                 | OPTION_MASK_MULHW                    \
                                 | OPTION_MASK_NO_UPDATE                \
                                 | OPTION_MASK_P8_FUSION                \
                                 | OPTION_MASK_P8_VECTOR                \
-                                | OPTION_MASK_P9_DFORM_SCALAR          \
-                                | OPTION_MASK_P9_DFORM_VECTOR          \
-                                | OPTION_MASK_P9_FUSION                \
                                 | OPTION_MASK_P9_MINMAX                \
                                 | OPTION_MASK_P9_MISC                  \
                                 | OPTION_MASK_P9_VECTOR                \
+                                | OPTION_MASK_PCREL                    \
                                 | OPTION_MASK_POPCNTB                  \
                                 | OPTION_MASK_POPCNTD                  \
                                 | OPTION_MASK_POWERPC64                \
                                 | OPTION_MASK_PPC_GFXOPT               \
                                 | OPTION_MASK_PPC_GPOPT                \
+                                | OPTION_MASK_PREFIXED                 \
                                 | OPTION_MASK_QUAD_MEMORY              \
                                 | OPTION_MASK_QUAD_MEMORY_ATOMIC       \
                                 | OPTION_MASK_RECIP_PRECISION          \
                                 | OPTION_MASK_SOFT_FLOAT               \
                                 | OPTION_MASK_STRICT_ALIGN_OPTIONAL    \
-                                | OPTION_MASK_TOC_FUSION               \
-                                | OPTION_MASK_VSX                      \
-                                | OPTION_MASK_VSX_SMALL_INTEGER        \
-                                | OPTION_MASK_VSX_TIMODE)
+                                | OPTION_MASK_VSX)
 
 #endif
 
@@ -186,7 +185,7 @@ RS6000_CPU ("476fp", PROCESSOR_PPC476,
            MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND
            | MASK_CMPB | MASK_MULHW | MASK_DLMZB)
 RS6000_CPU ("505", PROCESSOR_MPCCORE, 0)
-RS6000_CPU ("601", PROCESSOR_PPC601, MASK_MULTIPLE | MASK_STRING)
+RS6000_CPU ("601", PROCESSOR_PPC601, MASK_MULTIPLE)
 RS6000_CPU ("602", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
 RS6000_CPU ("603", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
 RS6000_CPU ("603e", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
@@ -238,11 +237,15 @@ RS6000_CPU ("power6", PROCESSOR_POWER6, MASK_POWERPC64 | MASK_PPC_GPOPT
            | MASK_CMPB | MASK_DFP | MASK_RECIP_PRECISION)
 RS6000_CPU ("power6x", PROCESSOR_POWER6, MASK_POWERPC64 | MASK_PPC_GPOPT
            | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND
-           | MASK_CMPB | MASK_DFP | MASK_MFPGPR | MASK_RECIP_PRECISION)
+           | MASK_CMPB | MASK_DFP | MASK_RECIP_PRECISION)
 RS6000_CPU ("power7", PROCESSOR_POWER7, MASK_POWERPC64 | ISA_2_6_MASKS_SERVER)
-RS6000_CPU ("power8", PROCESSOR_POWER8, MASK_POWERPC64 | ISA_2_7_MASKS_SERVER)
-RS6000_CPU ("power9", PROCESSOR_POWER9, MASK_POWERPC64 | ISA_3_0_MASKS_SERVER)
+RS6000_CPU ("power8", PROCESSOR_POWER8, MASK_POWERPC64 | ISA_2_7_MASKS_SERVER
+           | OPTION_MASK_HTM)
+RS6000_CPU ("power9", PROCESSOR_POWER9, MASK_POWERPC64 | ISA_3_0_MASKS_SERVER
+           | OPTION_MASK_HTM)
+RS6000_CPU ("power10", PROCESSOR_POWER10, MASK_POWERPC64 | ISA_3_1_MASKS_SERVER)
 RS6000_CPU ("powerpc", PROCESSOR_POWERPC, 0)
 RS6000_CPU ("powerpc64", PROCESSOR_POWERPC64, MASK_PPC_GFXOPT | MASK_POWERPC64)
-RS6000_CPU ("powerpc64le", PROCESSOR_POWER8, MASK_POWERPC64 | ISA_2_7_MASKS_SERVER)
+RS6000_CPU ("powerpc64le", PROCESSOR_POWER8, MASK_POWERPC64 | ISA_2_7_MASKS_SERVER
+           | OPTION_MASK_HTM)
 RS6000_CPU ("rs64", PROCESSOR_RS64A, MASK_PPC_GFXOPT | MASK_POWERPC64)