LCOV - code coverage report
Current view: top level - gcc/common/config/i386 - i386-common.c (source / functions) Hit Total Coverage
Test: gcc.info Lines: 565 579 97.6 %
Date: 2020-03-28 11:57:23 Functions: 6 6 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /* IA-32 common hooks.
       2                 :            :    Copyright (C) 1988-2020 Free Software Foundation, Inc.
       3                 :            : 
       4                 :            : This file is part of GCC.
       5                 :            : 
       6                 :            : GCC is free software; you can redistribute it and/or modify
       7                 :            : it under the terms of the GNU General Public License as published by
       8                 :            : the Free Software Foundation; either version 3, or (at your option)
       9                 :            : any later version.
      10                 :            : 
      11                 :            : GCC is distributed in the hope that it will be useful,
      12                 :            : but WITHOUT ANY WARRANTY; without even the implied warranty of
      13                 :            : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14                 :            : GNU General Public License for more details.
      15                 :            : 
      16                 :            : You should have received a copy of the GNU General Public License
      17                 :            : along with GCC; see the file COPYING3.  If not see
      18                 :            : <http://www.gnu.org/licenses/>.  */
      19                 :            : 
      20                 :            : #include "config.h"
      21                 :            : #include "system.h"
      22                 :            : #include "coretypes.h"
      23                 :            : #include "diagnostic-core.h"
      24                 :            : #include "tm.h"
      25                 :            : #include "memmodel.h"
      26                 :            : #include "tm_p.h"
      27                 :            : #include "common/common-target.h"
      28                 :            : #include "common/common-target-def.h"
      29                 :            : #include "opts.h"
      30                 :            : #include "flags.h"
      31                 :            : 
      32                 :            : /* Define a set of ISAs which are available when a given ISA is
      33                 :            :    enabled.  MMX and SSE ISAs are handled separately.  */
      34                 :            : 
      35                 :            : #define OPTION_MASK_ISA_MMX_SET OPTION_MASK_ISA_MMX
      36                 :            : #define OPTION_MASK_ISA_3DNOW_SET \
      37                 :            :   (OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_MMX_SET)
      38                 :            : #define OPTION_MASK_ISA_3DNOW_A_SET \
      39                 :            :   (OPTION_MASK_ISA_3DNOW_A | OPTION_MASK_ISA_3DNOW_SET)
      40                 :            : 
      41                 :            : #define OPTION_MASK_ISA_SSE_SET OPTION_MASK_ISA_SSE
      42                 :            : #define OPTION_MASK_ISA_SSE2_SET \
      43                 :            :   (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE_SET)
      44                 :            : #define OPTION_MASK_ISA_SSE3_SET \
      45                 :            :   (OPTION_MASK_ISA_SSE3 | OPTION_MASK_ISA_SSE2_SET)
      46                 :            : #define OPTION_MASK_ISA_SSSE3_SET \
      47                 :            :   (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSE3_SET)
      48                 :            : #define OPTION_MASK_ISA_SSE4_1_SET \
      49                 :            :   (OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSSE3_SET)
      50                 :            : #define OPTION_MASK_ISA_SSE4_2_SET \
      51                 :            :   (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_SSE4_1_SET)
      52                 :            : #define OPTION_MASK_ISA_AVX_SET \
      53                 :            :   (OPTION_MASK_ISA_AVX | OPTION_MASK_ISA_SSE4_2_SET \
      54                 :            :    | OPTION_MASK_ISA_XSAVE_SET)
      55                 :            : #define OPTION_MASK_ISA_FMA_SET \
      56                 :            :   (OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_AVX_SET)
      57                 :            : #define OPTION_MASK_ISA_AVX2_SET \
      58                 :            :   (OPTION_MASK_ISA_AVX2 | OPTION_MASK_ISA_AVX_SET)
      59                 :            : #define OPTION_MASK_ISA_FXSR_SET OPTION_MASK_ISA_FXSR
      60                 :            : #define OPTION_MASK_ISA_XSAVE_SET OPTION_MASK_ISA_XSAVE
      61                 :            : #define OPTION_MASK_ISA_XSAVEOPT_SET \
      62                 :            :   (OPTION_MASK_ISA_XSAVEOPT | OPTION_MASK_ISA_XSAVE_SET)
      63                 :            : #define OPTION_MASK_ISA_AVX512F_SET \
      64                 :            :   (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX2_SET)
      65                 :            : #define OPTION_MASK_ISA_AVX512CD_SET \
      66                 :            :   (OPTION_MASK_ISA_AVX512CD | OPTION_MASK_ISA_AVX512F_SET)
      67                 :            : #define OPTION_MASK_ISA_AVX512PF_SET \
      68                 :            :   (OPTION_MASK_ISA_AVX512PF | OPTION_MASK_ISA_AVX512F_SET)
      69                 :            : #define OPTION_MASK_ISA_AVX512ER_SET \
      70                 :            :   (OPTION_MASK_ISA_AVX512ER | OPTION_MASK_ISA_AVX512F_SET)
      71                 :            : #define OPTION_MASK_ISA_AVX512DQ_SET \
      72                 :            :   (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512F_SET)
      73                 :            : #define OPTION_MASK_ISA_AVX512BW_SET \
      74                 :            :   (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512F_SET)
      75                 :            : #define OPTION_MASK_ISA_AVX512VL_SET \
      76                 :            :   (OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512F_SET)
      77                 :            : #define OPTION_MASK_ISA_AVX512IFMA_SET \
      78                 :            :   (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512F_SET)
      79                 :            : #define OPTION_MASK_ISA_AVX512VBMI_SET \
      80                 :            :   (OPTION_MASK_ISA_AVX512VBMI | OPTION_MASK_ISA_AVX512BW_SET)
      81                 :            : #define OPTION_MASK_ISA2_AVX5124FMAPS_SET OPTION_MASK_ISA2_AVX5124FMAPS
      82                 :            : #define OPTION_MASK_ISA2_AVX5124VNNIW_SET OPTION_MASK_ISA2_AVX5124VNNIW
      83                 :            : #define OPTION_MASK_ISA_AVX512VBMI2_SET \
      84                 :            :   (OPTION_MASK_ISA_AVX512VBMI2 | OPTION_MASK_ISA_AVX512F_SET)
      85                 :            : #define OPTION_MASK_ISA_AVX512VNNI_SET \
      86                 :            :   (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512F_SET)
      87                 :            : #define OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET \
      88                 :            :   (OPTION_MASK_ISA_AVX512VPOPCNTDQ | OPTION_MASK_ISA_AVX512F_SET)
      89                 :            : #define OPTION_MASK_ISA_AVX512BITALG_SET \
      90                 :            :   (OPTION_MASK_ISA_AVX512BITALG | OPTION_MASK_ISA_AVX512F_SET)
      91                 :            : #define OPTION_MASK_ISA2_AVX512BF16_SET OPTION_MASK_ISA2_AVX512BF16
      92                 :            : #define OPTION_MASK_ISA_RTM_SET OPTION_MASK_ISA_RTM
      93                 :            : #define OPTION_MASK_ISA_PRFCHW_SET OPTION_MASK_ISA_PRFCHW
      94                 :            : #define OPTION_MASK_ISA_RDSEED_SET OPTION_MASK_ISA_RDSEED
      95                 :            : #define OPTION_MASK_ISA_ADX_SET OPTION_MASK_ISA_ADX
      96                 :            : #define OPTION_MASK_ISA_PREFETCHWT1_SET OPTION_MASK_ISA_PREFETCHWT1
      97                 :            : #define OPTION_MASK_ISA_CLFLUSHOPT_SET OPTION_MASK_ISA_CLFLUSHOPT
      98                 :            : #define OPTION_MASK_ISA_XSAVES_SET \
      99                 :            :   (OPTION_MASK_ISA_XSAVES | OPTION_MASK_ISA_XSAVE_SET)
     100                 :            : #define OPTION_MASK_ISA_XSAVEC_SET \
     101                 :            :   (OPTION_MASK_ISA_XSAVEC | OPTION_MASK_ISA_XSAVE_SET)
     102                 :            : #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB
     103                 :            : #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET OPTION_MASK_ISA2_AVX512VP2INTERSECT
     104                 :            : 
     105                 :            : /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
     106                 :            :    as -msse4.2.  */
     107                 :            : #define OPTION_MASK_ISA_SSE4_SET OPTION_MASK_ISA_SSE4_2_SET
     108                 :            : 
     109                 :            : #define OPTION_MASK_ISA_SSE4A_SET \
     110                 :            :   (OPTION_MASK_ISA_SSE4A | OPTION_MASK_ISA_SSE3_SET)
     111                 :            : #define OPTION_MASK_ISA_FMA4_SET \
     112                 :            :   (OPTION_MASK_ISA_FMA4 | OPTION_MASK_ISA_SSE4A_SET \
     113                 :            :    | OPTION_MASK_ISA_AVX_SET)
     114                 :            : #define OPTION_MASK_ISA_XOP_SET \
     115                 :            :   (OPTION_MASK_ISA_XOP | OPTION_MASK_ISA_FMA4_SET)
     116                 :            : #define OPTION_MASK_ISA_LWP_SET \
     117                 :            :   OPTION_MASK_ISA_LWP
     118                 :            : 
     119                 :            : /* AES, SHA and PCLMUL need SSE2 because they use xmm registers.  */
     120                 :            : #define OPTION_MASK_ISA_AES_SET \
     121                 :            :   (OPTION_MASK_ISA_AES | OPTION_MASK_ISA_SSE2_SET)
     122                 :            : #define OPTION_MASK_ISA_SHA_SET \
     123                 :            :   (OPTION_MASK_ISA_SHA | OPTION_MASK_ISA_SSE2_SET)
     124                 :            : #define OPTION_MASK_ISA_PCLMUL_SET \
     125                 :            :   (OPTION_MASK_ISA_PCLMUL | OPTION_MASK_ISA_SSE2_SET)
     126                 :            : 
     127                 :            : #define OPTION_MASK_ISA_ABM_SET \
     128                 :            :   (OPTION_MASK_ISA_ABM | OPTION_MASK_ISA_POPCNT)
     129                 :            : 
     130                 :            : #define OPTION_MASK_ISA2_PCONFIG_SET OPTION_MASK_ISA2_PCONFIG
     131                 :            : #define OPTION_MASK_ISA2_WBNOINVD_SET OPTION_MASK_ISA2_WBNOINVD
     132                 :            : #define OPTION_MASK_ISA2_SGX_SET OPTION_MASK_ISA2_SGX
     133                 :            : #define OPTION_MASK_ISA_BMI_SET OPTION_MASK_ISA_BMI
     134                 :            : #define OPTION_MASK_ISA_BMI2_SET OPTION_MASK_ISA_BMI2
     135                 :            : #define OPTION_MASK_ISA_LZCNT_SET OPTION_MASK_ISA_LZCNT
     136                 :            : #define OPTION_MASK_ISA_TBM_SET OPTION_MASK_ISA_TBM
     137                 :            : #define OPTION_MASK_ISA_POPCNT_SET OPTION_MASK_ISA_POPCNT
     138                 :            : #define OPTION_MASK_ISA2_CX16_SET OPTION_MASK_ISA2_CX16
     139                 :            : #define OPTION_MASK_ISA_SAHF_SET OPTION_MASK_ISA_SAHF
     140                 :            : #define OPTION_MASK_ISA2_MOVBE_SET OPTION_MASK_ISA2_MOVBE
     141                 :            : #define OPTION_MASK_ISA_CRC32_SET OPTION_MASK_ISA_CRC32
     142                 :            : 
     143                 :            : #define OPTION_MASK_ISA_FSGSBASE_SET OPTION_MASK_ISA_FSGSBASE
     144                 :            : #define OPTION_MASK_ISA_RDRND_SET OPTION_MASK_ISA_RDRND
     145                 :            : #define OPTION_MASK_ISA2_PTWRITE_SET OPTION_MASK_ISA2_PTWRITE
     146                 :            : #define OPTION_MASK_ISA_F16C_SET \
     147                 :            :   (OPTION_MASK_ISA_F16C | OPTION_MASK_ISA_AVX_SET)
     148                 :            : #define OPTION_MASK_ISA2_MWAITX_SET OPTION_MASK_ISA2_MWAITX
     149                 :            : #define OPTION_MASK_ISA2_CLZERO_SET OPTION_MASK_ISA2_CLZERO
     150                 :            : #define OPTION_MASK_ISA_PKU_SET OPTION_MASK_ISA_PKU
     151                 :            : #define OPTION_MASK_ISA2_RDPID_SET OPTION_MASK_ISA2_RDPID
     152                 :            : #define OPTION_MASK_ISA_GFNI_SET OPTION_MASK_ISA_GFNI
     153                 :            : #define OPTION_MASK_ISA_SHSTK_SET OPTION_MASK_ISA_SHSTK
     154                 :            : #define OPTION_MASK_ISA2_VAES_SET OPTION_MASK_ISA2_VAES
     155                 :            : #define OPTION_MASK_ISA_VPCLMULQDQ_SET OPTION_MASK_ISA_VPCLMULQDQ
     156                 :            : #define OPTION_MASK_ISA_MOVDIRI_SET OPTION_MASK_ISA_MOVDIRI
     157                 :            : #define OPTION_MASK_ISA2_MOVDIR64B_SET OPTION_MASK_ISA2_MOVDIR64B
     158                 :            : #define OPTION_MASK_ISA2_WAITPKG_SET OPTION_MASK_ISA2_WAITPKG
     159                 :            : #define OPTION_MASK_ISA2_CLDEMOTE_SET OPTION_MASK_ISA2_CLDEMOTE
     160                 :            : #define OPTION_MASK_ISA2_ENQCMD_SET OPTION_MASK_ISA2_ENQCMD
     161                 :            : 
     162                 :            : /* Define a set of ISAs which aren't available when a given ISA is
     163                 :            :    disabled.  MMX and SSE ISAs are handled separately.  */
     164                 :            : 
     165                 :            : #define OPTION_MASK_ISA_MMX_UNSET \
     166                 :            :   (OPTION_MASK_ISA_MMX | OPTION_MASK_ISA_3DNOW_UNSET)
     167                 :            : #define OPTION_MASK_ISA_3DNOW_UNSET \
     168                 :            :   (OPTION_MASK_ISA_3DNOW | OPTION_MASK_ISA_3DNOW_A_UNSET)
     169                 :            : #define OPTION_MASK_ISA_3DNOW_A_UNSET OPTION_MASK_ISA_3DNOW_A
     170                 :            : 
     171                 :            : #define OPTION_MASK_ISA_SSE_UNSET \
     172                 :            :   (OPTION_MASK_ISA_SSE | OPTION_MASK_ISA_SSE2_UNSET)
     173                 :            : #define OPTION_MASK_ISA_SSE2_UNSET \
     174                 :            :   (OPTION_MASK_ISA_SSE2 | OPTION_MASK_ISA_SSE3_UNSET)
     175                 :            : #define OPTION_MASK_ISA_SSE3_UNSET \
     176                 :            :   (OPTION_MASK_ISA_SSE3 \
     177                 :            :    | OPTION_MASK_ISA_SSSE3_UNSET \
     178                 :            :    | OPTION_MASK_ISA_SSE4A_UNSET )
     179                 :            : #define OPTION_MASK_ISA_SSSE3_UNSET \
     180                 :            :   (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_SSE4_1_UNSET)
     181                 :            : #define OPTION_MASK_ISA_SSE4_1_UNSET \
     182                 :            :   (OPTION_MASK_ISA_SSE4_1 | OPTION_MASK_ISA_SSE4_2_UNSET)
     183                 :            : #define OPTION_MASK_ISA_SSE4_2_UNSET \
     184                 :            :   (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_AVX_UNSET )
     185                 :            : #define OPTION_MASK_ISA_AVX_UNSET \
     186                 :            :   (OPTION_MASK_ISA_AVX | OPTION_MASK_ISA_FMA_UNSET \
     187                 :            :    | OPTION_MASK_ISA_FMA4_UNSET | OPTION_MASK_ISA_F16C_UNSET \
     188                 :            :    | OPTION_MASK_ISA_AVX2_UNSET | OPTION_MASK_ISA_XSAVE_UNSET)
     189                 :            : #define OPTION_MASK_ISA_FMA_UNSET OPTION_MASK_ISA_FMA
     190                 :            : #define OPTION_MASK_ISA_FXSR_UNSET OPTION_MASK_ISA_FXSR
     191                 :            : #define OPTION_MASK_ISA_XSAVE_UNSET \
     192                 :            :   (OPTION_MASK_ISA_XSAVE | OPTION_MASK_ISA_XSAVEOPT_UNSET \
     193                 :            :    | OPTION_MASK_ISA_XSAVES_UNSET | OPTION_MASK_ISA_XSAVEC_UNSET)
     194                 :            : #define OPTION_MASK_ISA_XSAVEOPT_UNSET OPTION_MASK_ISA_XSAVEOPT
     195                 :            : #define OPTION_MASK_ISA_AVX2_UNSET \
     196                 :            :   (OPTION_MASK_ISA_AVX2 | OPTION_MASK_ISA_AVX512F_UNSET)
     197                 :            : #define OPTION_MASK_ISA_AVX512F_UNSET \
     198                 :            :   (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \
     199                 :            :    | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \
     200                 :            :    | OPTION_MASK_ISA_AVX512DQ_UNSET | OPTION_MASK_ISA_AVX512BW_UNSET \
     201                 :            :    | OPTION_MASK_ISA_AVX512VL_UNSET | OPTION_MASK_ISA_AVX512IFMA_UNSET \
     202                 :            :    | OPTION_MASK_ISA_AVX512VBMI2_UNSET \
     203                 :            :    | OPTION_MASK_ISA_AVX512VNNI_UNSET \
     204                 :            :    | OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET \
     205                 :            :    | OPTION_MASK_ISA_AVX512BITALG_UNSET)
     206                 :            : #define OPTION_MASK_ISA_AVX512CD_UNSET OPTION_MASK_ISA_AVX512CD
     207                 :            : #define OPTION_MASK_ISA_AVX512PF_UNSET OPTION_MASK_ISA_AVX512PF
     208                 :            : #define OPTION_MASK_ISA_AVX512ER_UNSET OPTION_MASK_ISA_AVX512ER
     209                 :            : #define OPTION_MASK_ISA_AVX512DQ_UNSET OPTION_MASK_ISA_AVX512DQ
     210                 :            : #define OPTION_MASK_ISA_AVX512BW_UNSET \
     211                 :            :   (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VBMI_UNSET)
     212                 :            : #define OPTION_MASK_ISA_AVX512VL_UNSET OPTION_MASK_ISA_AVX512VL
     213                 :            : #define OPTION_MASK_ISA_AVX512IFMA_UNSET OPTION_MASK_ISA_AVX512IFMA
     214                 :            : #define OPTION_MASK_ISA_AVX512VBMI_UNSET OPTION_MASK_ISA_AVX512VBMI
     215                 :            : #define OPTION_MASK_ISA2_AVX5124FMAPS_UNSET OPTION_MASK_ISA2_AVX5124FMAPS
     216                 :            : #define OPTION_MASK_ISA2_AVX5124VNNIW_UNSET OPTION_MASK_ISA2_AVX5124VNNIW
     217                 :            : #define OPTION_MASK_ISA_AVX512VBMI2_UNSET OPTION_MASK_ISA_AVX512VBMI2
     218                 :            : #define OPTION_MASK_ISA_AVX512VNNI_UNSET OPTION_MASK_ISA_AVX512VNNI
     219                 :            : #define OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET OPTION_MASK_ISA_AVX512VPOPCNTDQ
     220                 :            : #define OPTION_MASK_ISA_AVX512BITALG_UNSET OPTION_MASK_ISA_AVX512BITALG
     221                 :            : #define OPTION_MASK_ISA2_AVX512BF16_UNSET OPTION_MASK_ISA2_AVX512BF16
     222                 :            : #define OPTION_MASK_ISA_RTM_UNSET OPTION_MASK_ISA_RTM
     223                 :            : #define OPTION_MASK_ISA_PRFCHW_UNSET OPTION_MASK_ISA_PRFCHW
     224                 :            : #define OPTION_MASK_ISA_RDSEED_UNSET OPTION_MASK_ISA_RDSEED
     225                 :            : #define OPTION_MASK_ISA_ADX_UNSET OPTION_MASK_ISA_ADX
     226                 :            : #define OPTION_MASK_ISA_PREFETCHWT1_UNSET OPTION_MASK_ISA_PREFETCHWT1
     227                 :            : #define OPTION_MASK_ISA_CLFLUSHOPT_UNSET OPTION_MASK_ISA_CLFLUSHOPT
     228                 :            : #define OPTION_MASK_ISA_XSAVEC_UNSET OPTION_MASK_ISA_XSAVEC
     229                 :            : #define OPTION_MASK_ISA_XSAVES_UNSET OPTION_MASK_ISA_XSAVES
     230                 :            : #define OPTION_MASK_ISA_CLWB_UNSET OPTION_MASK_ISA_CLWB
     231                 :            : #define OPTION_MASK_ISA2_MWAITX_UNSET OPTION_MASK_ISA2_MWAITX
     232                 :            : #define OPTION_MASK_ISA2_CLZERO_UNSET OPTION_MASK_ISA2_CLZERO
     233                 :            : #define OPTION_MASK_ISA_PKU_UNSET OPTION_MASK_ISA_PKU
     234                 :            : #define OPTION_MASK_ISA2_RDPID_UNSET OPTION_MASK_ISA2_RDPID
     235                 :            : #define OPTION_MASK_ISA_GFNI_UNSET OPTION_MASK_ISA_GFNI
     236                 :            : #define OPTION_MASK_ISA_SHSTK_UNSET OPTION_MASK_ISA_SHSTK
     237                 :            : #define OPTION_MASK_ISA2_VAES_UNSET OPTION_MASK_ISA2_VAES
     238                 :            : #define OPTION_MASK_ISA_VPCLMULQDQ_UNSET OPTION_MASK_ISA_VPCLMULQDQ
     239                 :            : #define OPTION_MASK_ISA_MOVDIRI_UNSET OPTION_MASK_ISA_MOVDIRI
     240                 :            : #define OPTION_MASK_ISA2_MOVDIR64B_UNSET OPTION_MASK_ISA2_MOVDIR64B
     241                 :            : #define OPTION_MASK_ISA2_WAITPKG_UNSET OPTION_MASK_ISA2_WAITPKG
     242                 :            : #define OPTION_MASK_ISA2_CLDEMOTE_UNSET OPTION_MASK_ISA2_CLDEMOTE
     243                 :            : #define OPTION_MASK_ISA2_ENQCMD_UNSET OPTION_MASK_ISA2_ENQCMD
     244                 :            : #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET OPTION_MASK_ISA2_AVX512VP2INTERSECT
     245                 :            : 
     246                 :            : /* SSE4 includes both SSE4.1 and SSE4.2.  -mno-sse4 should the same
     247                 :            :    as -mno-sse4.1. */
     248                 :            : #define OPTION_MASK_ISA_SSE4_UNSET OPTION_MASK_ISA_SSE4_1_UNSET
     249                 :            : 
     250                 :            : #define OPTION_MASK_ISA_SSE4A_UNSET \
     251                 :            :   (OPTION_MASK_ISA_SSE4A | OPTION_MASK_ISA_FMA4_UNSET)
     252                 :            : 
     253                 :            : #define OPTION_MASK_ISA_FMA4_UNSET \
     254                 :            :   (OPTION_MASK_ISA_FMA4 | OPTION_MASK_ISA_XOP_UNSET)
     255                 :            : #define OPTION_MASK_ISA_XOP_UNSET OPTION_MASK_ISA_XOP
     256                 :            : #define OPTION_MASK_ISA_LWP_UNSET OPTION_MASK_ISA_LWP
     257                 :            : 
     258                 :            : #define OPTION_MASK_ISA_AES_UNSET OPTION_MASK_ISA_AES
     259                 :            : #define OPTION_MASK_ISA_SHA_UNSET OPTION_MASK_ISA_SHA
     260                 :            : #define OPTION_MASK_ISA_PCLMUL_UNSET OPTION_MASK_ISA_PCLMUL
     261                 :            : #define OPTION_MASK_ISA_ABM_UNSET OPTION_MASK_ISA_ABM
     262                 :            : #define OPTION_MASK_ISA2_PCONFIG_UNSET OPTION_MASK_ISA2_PCONFIG
     263                 :            : #define OPTION_MASK_ISA2_WBNOINVD_UNSET OPTION_MASK_ISA2_WBNOINVD
     264                 :            : #define OPTION_MASK_ISA2_SGX_UNSET OPTION_MASK_ISA2_SGX
     265                 :            : #define OPTION_MASK_ISA_BMI_UNSET OPTION_MASK_ISA_BMI
     266                 :            : #define OPTION_MASK_ISA_BMI2_UNSET OPTION_MASK_ISA_BMI2
     267                 :            : #define OPTION_MASK_ISA_LZCNT_UNSET OPTION_MASK_ISA_LZCNT
     268                 :            : #define OPTION_MASK_ISA_TBM_UNSET OPTION_MASK_ISA_TBM
     269                 :            : #define OPTION_MASK_ISA_POPCNT_UNSET OPTION_MASK_ISA_POPCNT
     270                 :            : #define OPTION_MASK_ISA2_CX16_UNSET OPTION_MASK_ISA2_CX16
     271                 :            : #define OPTION_MASK_ISA_SAHF_UNSET OPTION_MASK_ISA_SAHF
     272                 :            : #define OPTION_MASK_ISA2_MOVBE_UNSET OPTION_MASK_ISA2_MOVBE
     273                 :            : #define OPTION_MASK_ISA_CRC32_UNSET OPTION_MASK_ISA_CRC32
     274                 :            : 
     275                 :            : #define OPTION_MASK_ISA_FSGSBASE_UNSET OPTION_MASK_ISA_FSGSBASE
     276                 :            : #define OPTION_MASK_ISA_RDRND_UNSET OPTION_MASK_ISA_RDRND
     277                 :            : #define OPTION_MASK_ISA2_PTWRITE_UNSET OPTION_MASK_ISA2_PTWRITE
     278                 :            : #define OPTION_MASK_ISA_F16C_UNSET OPTION_MASK_ISA_F16C
     279                 :            : 
     280                 :            : #define OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET \
     281                 :            :   (OPTION_MASK_ISA_MMX_UNSET \
     282                 :            :    | OPTION_MASK_ISA_SSE_UNSET)
     283                 :            : 
     284                 :            : #define OPTION_MASK_ISA2_AVX512F_UNSET \
     285                 :            :   (OPTION_MASK_ISA2_AVX512BF16_UNSET \
     286                 :            :    | OPTION_MASK_ISA2_AVX5124FMAPS_UNSET \
     287                 :            :    | OPTION_MASK_ISA2_AVX5124VNNIW_UNSET \
     288                 :            :    | OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET)
     289                 :            : #define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \
     290                 :            :   (OPTION_MASK_ISA2_AVX512F_UNSET)
     291                 :            : 
     292                 :            : #define OPTION_MASK_ISA2_AVX512BW_UNSET OPTION_MASK_ISA2_AVX512BF16_UNSET
     293                 :            : 
     294                 :            : /* Set 1 << value as value of -malign-FLAG option.  */
     295                 :            : 
     296                 :            : static void
     297                 :          1 : set_malign_value (const char **flag, unsigned value)
     298                 :            : {
     299                 :          1 :   char *r = XNEWVEC (char, 6);
     300                 :          1 :   sprintf (r, "%d", 1 << value);
     301                 :          1 :   *flag = r;
     302                 :          1 : }
     303                 :            : 
     304                 :            : /* Implement TARGET_HANDLE_OPTION.  */
     305                 :            : 
     306                 :            : bool
     307                 :   33734100 : ix86_handle_option (struct gcc_options *opts,
     308                 :            :                     struct gcc_options *opts_set ATTRIBUTE_UNUSED,
     309                 :            :                     const struct cl_decoded_option *decoded,
     310                 :            :                     location_t loc)
     311                 :            : {
     312                 :   33734100 :   size_t code = decoded->opt_index;
     313                 :   33734100 :   int value = decoded->value;
     314                 :            : 
     315                 :   33734100 :   switch (code)
     316                 :            :     {
     317                 :        203 :     case OPT_mgeneral_regs_only:
     318                 :        203 :       if (value)
     319                 :            :         {
     320                 :            :           /* Disable MMX, SSE and x87 instructions if only
     321                 :            :              general registers are allowed.  */
     322                 :        203 :           opts->x_ix86_isa_flags
     323                 :        203 :             &= ~OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;
     324                 :        203 :           opts->x_ix86_isa_flags2
     325                 :        203 :             &= ~OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;
     326                 :        203 :           opts->x_ix86_isa_flags_explicit
     327                 :        203 :             |= OPTION_MASK_ISA_GENERAL_REGS_ONLY_UNSET;
     328                 :        203 :           opts->x_ix86_isa_flags2_explicit
     329                 :        203 :             |= OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET;
     330                 :            : 
     331                 :        203 :           opts->x_target_flags &= ~MASK_80387;
     332                 :            :         }
     333                 :            :       else
     334                 :          0 :         gcc_unreachable ();
     335                 :        203 :       return true;
     336                 :            : 
     337                 :      11834 :     case OPT_mmmx:
     338                 :      11834 :       if (value)
     339                 :            :         {
     340                 :      10132 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_MMX_SET;
     341                 :      10132 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_SET;
     342                 :            :         }
     343                 :            :       else
     344                 :            :         {
     345                 :       1702 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_MMX_UNSET;
     346                 :       1702 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_MMX_UNSET;
     347                 :            :         }
     348                 :            :       return true;
     349                 :            : 
     350                 :      63970 :     case OPT_m3dnow:
     351                 :      63970 :       if (value)
     352                 :            :         {
     353                 :      63967 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_SET;
     354                 :      63967 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_SET;
     355                 :            :         }
     356                 :            :       else
     357                 :            :         {
     358                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_UNSET;
     359                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_UNSET;
     360                 :            :         }
     361                 :            :       return true;
     362                 :            : 
     363                 :       4891 :     case OPT_m3dnowa:
     364                 :       4891 :       if (value)
     365                 :            :         {
     366                 :       4890 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_3DNOW_A_SET;
     367                 :       4890 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_A_SET;
     368                 :            :         }
     369                 :            :       else
     370                 :            :         {
     371                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_3DNOW_A_UNSET;
     372                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_3DNOW_A_UNSET;
     373                 :            :         }
     374                 :            :       return true;
     375                 :            : 
     376                 :      52047 :     case OPT_msse:
     377                 :      52047 :       if (value)
     378                 :            :         {
     379                 :      51998 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE_SET;
     380                 :      51998 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_SET;
     381                 :            :         }
     382                 :            :       else
     383                 :            :         {
     384                 :         49 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE_UNSET;
     385                 :         49 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE_UNSET;
     386                 :         49 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     387                 :         49 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     388                 :            :         }
     389                 :            :       return true;
     390                 :            : 
     391                 :     109163 :     case OPT_msse2:
     392                 :     109163 :       if (value)
     393                 :            :         {
     394                 :     109064 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
     395                 :     109064 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
     396                 :            :         }
     397                 :            :       else
     398                 :            :         {
     399                 :         99 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE2_UNSET;
     400                 :         99 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_UNSET;
     401                 :         99 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     402                 :         99 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     403                 :            :         }
     404                 :            :       return true;
     405                 :            : 
     406                 :      16353 :     case OPT_msse3:
     407                 :      16353 :       if (value)
     408                 :            :         {
     409                 :      16292 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE3_SET;
     410                 :      16292 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_SET;
     411                 :            :         }
     412                 :            :       else
     413                 :            :         {
     414                 :         61 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE3_UNSET;
     415                 :         61 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE3_UNSET;
     416                 :         61 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     417                 :         61 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     418                 :            :         }
     419                 :            :       return true;
     420                 :            : 
     421                 :      26977 :     case OPT_mssse3:
     422                 :      26977 :       if (value)
     423                 :            :         {
     424                 :      26974 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSSE3_SET;
     425                 :      26974 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_SET;
     426                 :            :         }
     427                 :            :       else
     428                 :            :         {
     429                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSSE3_UNSET;
     430                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSSE3_UNSET;
     431                 :          3 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     432                 :          3 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     433                 :            :         }
     434                 :            :       return true;
     435                 :            : 
     436                 :      38309 :     case OPT_msse4_1:
     437                 :      38309 :       if (value)
     438                 :            :         {
     439                 :      38303 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4_1_SET;
     440                 :      38303 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_SET;
     441                 :            :         }
     442                 :            :       else
     443                 :            :         {
     444                 :          6 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_1_UNSET;
     445                 :          6 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_1_UNSET;
     446                 :          6 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     447                 :          6 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     448                 :            :         }
     449                 :            :       return true;
     450                 :            : 
     451                 :      24632 :     case OPT_msse4_2:
     452                 :      24632 :       if (value)
     453                 :            :         {
     454                 :      24622 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4_2_SET;
     455                 :      24622 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_SET;
     456                 :            :         }
     457                 :            :       else
     458                 :            :         {
     459                 :         10 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_2_UNSET;
     460                 :         10 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_2_UNSET;
     461                 :         10 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     462                 :         10 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     463                 :            :         }
     464                 :            :       return true;
     465                 :            : 
     466                 :     229340 :     case OPT_mavx:
     467                 :     229340 :       if (value)
     468                 :            :         {
     469                 :     229273 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX_SET;
     470                 :     229273 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_SET;
     471                 :            :         }
     472                 :            :       else
     473                 :            :         {
     474                 :         67 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX_UNSET;
     475                 :         67 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX_UNSET;
     476                 :         67 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     477                 :         67 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     478                 :            :         }
     479                 :            :       return true;
     480                 :            : 
     481                 :     409450 :     case OPT_mavx2:
     482                 :     409450 :       if (value)
     483                 :            :         {
     484                 :     409416 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
     485                 :     409416 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
     486                 :            :         }
     487                 :            :       else
     488                 :            :         {
     489                 :         34 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX2_UNSET;
     490                 :         34 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_UNSET;
     491                 :         34 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     492                 :         34 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     493                 :            :         }
     494                 :            :       return true;
     495                 :            : 
     496                 :    3974050 :     case OPT_mavx512f:
     497                 :    3974050 :       if (value)
     498                 :            :         {
     499                 :    3974020 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;
     500                 :    3974020 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;
     501                 :            :         }
     502                 :            :       else
     503                 :            :         {
     504                 :         27 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512F_UNSET;
     505                 :         27 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_UNSET;
     506                 :         27 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     507                 :         27 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     508                 :            :         }
     509                 :            :       return true;
     510                 :            : 
     511                 :     370743 :     case OPT_mavx512cd:
     512                 :     370743 :       if (value)
     513                 :            :         {
     514                 :     370741 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512CD_SET;
     515                 :     370741 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512CD_SET;
     516                 :            :         }
     517                 :            :       else
     518                 :            :         {
     519                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512CD_UNSET;
     520                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512CD_UNSET;
     521                 :            :         }
     522                 :            :       return true;
     523                 :            : 
     524                 :     171209 :     case OPT_mavx512pf:
     525                 :     171209 :       if (value)
     526                 :            :         {
     527                 :     171207 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512PF_SET;
     528                 :     171207 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512PF_SET;
     529                 :            :         }
     530                 :            :       else
     531                 :            :         {
     532                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512PF_UNSET;
     533                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512PF_UNSET;
     534                 :            :         }
     535                 :            :       return true;
     536                 :            : 
     537                 :     214069 :     case OPT_mavx512er:
     538                 :     214069 :       if (value)
     539                 :            :         {
     540                 :     214065 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512ER_SET;
     541                 :     214065 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512ER_SET;
     542                 :            :         }
     543                 :            :       else
     544                 :            :         {
     545                 :          4 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512ER_UNSET;
     546                 :          4 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512ER_UNSET;
     547                 :            :         }
     548                 :            :       return true;
     549                 :            : 
     550                 :      45091 :     case OPT_mrdpid:
     551                 :      45091 :       if (value)
     552                 :            :         {
     553                 :      45089 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_RDPID_SET;
     554                 :      45089 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_RDPID_SET;
     555                 :            :         }
     556                 :            :       else
     557                 :            :         {
     558                 :          2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_RDPID_UNSET;
     559                 :          2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_RDPID_UNSET;
     560                 :            :         }
     561                 :            :       return true;
     562                 :            : 
     563                 :     268161 :     case OPT_mgfni:
     564                 :     268161 :       if (value)
     565                 :            :         {
     566                 :     268158 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_GFNI_SET;
     567                 :     268158 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_GFNI_SET;
     568                 :            :         }
     569                 :            :       else
     570                 :            :         {
     571                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_GFNI_UNSET;
     572                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_GFNI_UNSET;
     573                 :            :         }
     574                 :            :       return true;
     575                 :            : 
     576                 :      78501 :     case OPT_mshstk:
     577                 :      78501 :       if (value)
     578                 :            :         {
     579                 :      78499 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SHSTK_SET;
     580                 :      78499 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHSTK_SET;
     581                 :            :         }
     582                 :            :       else
     583                 :            :         {
     584                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SHSTK_UNSET;
     585                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHSTK_UNSET;
     586                 :            :         }
     587                 :            :       return true;
     588                 :            : 
     589                 :      67559 :     case OPT_mvaes:
     590                 :      67559 :       if (value)
     591                 :            :         {
     592                 :      67557 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_VAES_SET;
     593                 :      67557 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_VAES_SET;
     594                 :            :         }
     595                 :            :       else
     596                 :            :         {
     597                 :          2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_VAES_UNSET;
     598                 :          2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_VAES_UNSET;
     599                 :            :         }
     600                 :            :       return true;
     601                 :            : 
     602                 :      55528 :     case OPT_mvpclmulqdq:
     603                 :      55528 :       if (value)
     604                 :            :         {
     605                 :      55526 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_VPCLMULQDQ_SET;
     606                 :      55526 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_VPCLMULQDQ_SET;
     607                 :            :         }
     608                 :            :       else
     609                 :            :         {
     610                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_VPCLMULQDQ_UNSET;
     611                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_VPCLMULQDQ_UNSET;
     612                 :            :         }
     613                 :            :       return true;
     614                 :            : 
     615                 :      18679 :     case OPT_mmovdiri:
     616                 :      18679 :       if (value)
     617                 :            :         {
     618                 :      18678 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_MOVDIRI_SET;
     619                 :      18678 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_MOVDIRI_SET;
     620                 :            :         }
     621                 :            :       else
     622                 :            :         {
     623                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_MOVDIRI_UNSET;
     624                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_MOVDIRI_UNSET;
     625                 :            :         }
     626                 :            :       return true;
     627                 :            : 
     628                 :      11263 :     case OPT_mmovdir64b:
     629                 :      11263 :       if (value)
     630                 :            :         {
     631                 :      11262 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MOVDIR64B_SET;
     632                 :      11262 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVDIR64B_SET;
     633                 :            :         }
     634                 :            :       else
     635                 :            :         {
     636                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_MOVDIR64B_UNSET;
     637                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVDIR64B_UNSET;
     638                 :            :         }
     639                 :            :         return true;
     640                 :            : 
     641                 :      11261 :     case OPT_mcldemote:
     642                 :      11261 :       if (value)
     643                 :            :         {
     644                 :      11260 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CLDEMOTE_SET;
     645                 :      11260 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CLDEMOTE_SET;
     646                 :            :         }
     647                 :            :       else
     648                 :            :         {
     649                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_CLDEMOTE_UNSET;
     650                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CLDEMOTE_UNSET;
     651                 :            :         }
     652                 :            :       return true;
     653                 :            : 
     654                 :      26267 :     case OPT_mwaitpkg:
     655                 :      26267 :       if (value)
     656                 :            :         {
     657                 :      26266 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WAITPKG_SET;
     658                 :      26266 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WAITPKG_SET;
     659                 :            :         }
     660                 :            :       else
     661                 :            :         {
     662                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_WAITPKG_UNSET;
     663                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WAITPKG_UNSET;
     664                 :            :         }
     665                 :            :       return true;
     666                 :            : 
     667                 :      52151 :     case OPT_menqcmd:
     668                 :      52151 :       if (value)
     669                 :            :         {
     670                 :      52150 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_ENQCMD_SET;
     671                 :      52150 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_ENQCMD_SET;
     672                 :            :         }
     673                 :            :       else
     674                 :            :         {
     675                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_ENQCMD_UNSET;
     676                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_ENQCMD_UNSET;
     677                 :            :         }
     678                 :            :       return true;
     679                 :            : 
     680                 :     144970 :     case OPT_mavx5124fmaps:
     681                 :     144970 :       if (value)
     682                 :            :         {
     683                 :     144968 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX5124FMAPS_SET;
     684                 :     144968 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX5124FMAPS_SET;
     685                 :     144968 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;
     686                 :     144968 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;
     687                 :            :         }
     688                 :            :       else
     689                 :            :         {
     690                 :          2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX5124FMAPS_UNSET;
     691                 :          2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX5124FMAPS_UNSET;
     692                 :            :         }
     693                 :            :       return true;
     694                 :            : 
     695                 :     100210 :     case OPT_mavx5124vnniw:
     696                 :     100210 :       if (value)
     697                 :            :         {
     698                 :     100208 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX5124VNNIW_SET;
     699                 :     100208 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX5124VNNIW_SET;
     700                 :     100208 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;
     701                 :     100208 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;
     702                 :            :         }
     703                 :            :       else
     704                 :            :         {
     705                 :          2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX5124VNNIW_UNSET;
     706                 :          2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX5124VNNIW_UNSET;
     707                 :            :         }
     708                 :            :       return true;
     709                 :            : 
     710                 :    1167900 :     case OPT_mavx512vbmi2:
     711                 :    1167900 :       if (value)
     712                 :            :         {
     713                 :    1167900 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VBMI2_SET;
     714                 :    1167900 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VBMI2_SET;
     715                 :            :         }
     716                 :            :       else
     717                 :            :         {
     718                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VBMI2_UNSET;
     719                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VBMI2_UNSET;
     720                 :            :         }
     721                 :            :       return true;
     722                 :            : 
     723                 :     277322 :     case OPT_mavx512vnni:
     724                 :     277322 :       if (value)
     725                 :            :         {
     726                 :     277321 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VNNI_SET;
     727                 :     277321 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VNNI_SET;
     728                 :            :         }
     729                 :            :       else
     730                 :            :         {
     731                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VNNI_UNSET;
     732                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VNNI_UNSET;
     733                 :            :         }
     734                 :            :       return true;
     735                 :            : 
     736                 :     193463 :     case OPT_mavx512vpopcntdq:
     737                 :     193463 :       if (value)
     738                 :            :         {
     739                 :     193462 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;
     740                 :     193462 :           opts->x_ix86_isa_flags_explicit
     741                 :     193462 :             |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_SET;
     742                 :            :         }
     743                 :            :       else
     744                 :            :         {
     745                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
     746                 :          1 :           opts->x_ix86_isa_flags_explicit
     747                 :          1 :             |= OPTION_MASK_ISA_AVX512VPOPCNTDQ_UNSET;
     748                 :            :         }
     749                 :            :       return true;
     750                 :            : 
     751                 :     245597 :     case OPT_mavx512bitalg:
     752                 :     245597 :       if (value)
     753                 :            :         {
     754                 :     245596 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BITALG_SET;
     755                 :     245596 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BITALG_SET;
     756                 :            :         }
     757                 :            :       else
     758                 :            :         {
     759                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512BITALG_UNSET;
     760                 :          1 :           opts->x_ix86_isa_flags_explicit
     761                 :          1 :                 |= OPTION_MASK_ISA_AVX512BITALG_UNSET;
     762                 :            :         }
     763                 :            :       return true;
     764                 :            : 
     765                 :     260748 :     case OPT_mavx512bf16:
     766                 :     260748 :       if (value)
     767                 :            :         {
     768                 :     260747 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX512BF16_SET;
     769                 :     260747 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512BF16_SET;
     770                 :     260747 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BW_SET;
     771                 :     260747 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BW_SET;
     772                 :            :         }
     773                 :            :       else
     774                 :            :         {
     775                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512BF16_UNSET;
     776                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512BF16_UNSET;
     777                 :            :         }
     778                 :            :       return true;
     779                 :            : 
     780                 :      59992 :     case OPT_msgx:
     781                 :      59992 :       if (value)
     782                 :            :         {
     783                 :      59990 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_SGX_SET;
     784                 :      59990 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SGX_SET;
     785                 :            :         }
     786                 :            :       else
     787                 :            :         {
     788                 :          2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_SGX_UNSET;
     789                 :          2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_SGX_UNSET;
     790                 :            :         }
     791                 :            :       return true;
     792                 :            : 
     793                 :      44677 :     case OPT_mpconfig:
     794                 :      44677 :       if (value)
     795                 :            :         {
     796                 :      44676 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_PCONFIG_SET;
     797                 :      44676 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PCONFIG_SET;
     798                 :            :         }
     799                 :            :       else
     800                 :            :         {
     801                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_PCONFIG_UNSET;
     802                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PCONFIG_UNSET;
     803                 :            :         }
     804                 :            :       return true;
     805                 :            : 
     806                 :      44677 :     case OPT_mwbnoinvd:
     807                 :      44677 :       if (value)
     808                 :            :         {
     809                 :      44676 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_WBNOINVD_SET;
     810                 :      44676 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WBNOINVD_SET;
     811                 :            :         }
     812                 :            :       else
     813                 :            :         {
     814                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_WBNOINVD_UNSET;
     815                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_WBNOINVD_UNSET;
     816                 :            :         }
     817                 :            :       return true;
     818                 :            : 
     819                 :    2822900 :     case OPT_mavx512dq:
     820                 :    2822900 :       if (value)
     821                 :            :         {
     822                 :    2822880 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512DQ_SET;
     823                 :    2822880 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512DQ_SET;
     824                 :            :         }
     825                 :            :       else
     826                 :            :         {
     827                 :         21 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512DQ_UNSET;
     828                 :         21 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512DQ_UNSET;
     829                 :            :         }
     830                 :            :       return true;
     831                 :            : 
     832                 :    5526700 :     case OPT_mavx512bw:
     833                 :    5526700 :       if (value)
     834                 :            :         {
     835                 :    5526660 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512BW_SET;
     836                 :    5526660 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BW_SET;
     837                 :            :         }
     838                 :            :       else
     839                 :            :         {
     840                 :         33 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512BW_UNSET;
     841                 :         33 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512BW_UNSET;
     842                 :         33 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512BW_UNSET;
     843                 :         33 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512BW_UNSET;
     844                 :            :         }
     845                 :            :       return true;
     846                 :            : 
     847                 :   13058400 :     case OPT_mavx512vl:
     848                 :   13058400 :       if (value)
     849                 :            :         {
     850                 :   13058400 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VL_SET;
     851                 :   13058400 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VL_SET;
     852                 :            :         }
     853                 :            :       else
     854                 :            :         {
     855                 :         26 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VL_UNSET;
     856                 :         26 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VL_UNSET;
     857                 :            :         }
     858                 :            :       return true;
     859                 :            : 
     860                 :     193543 :     case OPT_mavx512ifma:
     861                 :     193543 :       if (value)
     862                 :            :         {
     863                 :     193541 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512IFMA_SET;
     864                 :     193541 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512IFMA_SET;
     865                 :            :         }
     866                 :            :       else
     867                 :            :         {
     868                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512IFMA_UNSET;
     869                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512IFMA_UNSET;
     870                 :            :         }
     871                 :            :       return true;
     872                 :            : 
     873                 :     282842 :     case OPT_mavx512vbmi:
     874                 :     282842 :       if (value)
     875                 :            :         {
     876                 :     282840 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512VBMI_SET;
     877                 :     282840 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VBMI_SET;
     878                 :            :         }
     879                 :            :       else
     880                 :            :         {
     881                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AVX512VBMI_UNSET;
     882                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512VBMI_UNSET;
     883                 :            :         }
     884                 :            :       return true;
     885                 :            : 
     886                 :     103956 :     case OPT_mavx512vp2intersect:
     887                 :     103956 :       if (value)
     888                 :            :         {
     889                 :     103955 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET;
     890                 :     103955 :           opts->x_ix86_isa_flags2_explicit |=
     891                 :            :             OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET;
     892                 :     103955 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX512F_SET;
     893                 :     103955 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX512F_SET;
     894                 :            :         }
     895                 :            :       else
     896                 :            :         {
     897                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET;
     898                 :          1 :           opts->x_ix86_isa_flags2_explicit |=
     899                 :            :             OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET;
     900                 :            :         }
     901                 :            :       return true;
     902                 :            : 
     903                 :     274070 :     case OPT_mfma:
     904                 :     274070 :       if (value)
     905                 :            :         {
     906                 :     274060 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FMA_SET;
     907                 :     274060 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FMA_SET;
     908                 :            :         }
     909                 :            :       else
     910                 :            :         {
     911                 :         10 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_FMA_UNSET;
     912                 :         10 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FMA_UNSET;
     913                 :            :         }
     914                 :            :       return true;
     915                 :            : 
     916                 :      88066 :     case OPT_mrtm:
     917                 :      88066 :       if (value)
     918                 :            :         {
     919                 :      88063 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RTM_SET;
     920                 :      88063 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RTM_SET;
     921                 :            :         }
     922                 :            :       else
     923                 :            :         {
     924                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_RTM_UNSET;
     925                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RTM_UNSET;
     926                 :            :         }
     927                 :            :       return true;
     928                 :            : 
     929                 :        108 :     case OPT_msse4:
     930                 :        108 :       opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4_SET;
     931                 :        108 :       opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_SET;
     932                 :        108 :       return true;
     933                 :            : 
     934                 :         24 :     case OPT_mno_sse4:
     935                 :         24 :       opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4_UNSET;
     936                 :         24 :       opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4_UNSET;
     937                 :         24 :       opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVX512F_UNSET;
     938                 :         24 :       opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVX512F_UNSET;
     939                 :         24 :       return true;
     940                 :            : 
     941                 :      57018 :     case OPT_msse4a:
     942                 :      57018 :       if (value)
     943                 :            :         {
     944                 :      57016 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SSE4A_SET;
     945                 :      57016 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_SET;
     946                 :            :         }
     947                 :            :       else
     948                 :            :         {
     949                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SSE4A_UNSET;
     950                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE4A_UNSET;
     951                 :            :         }
     952                 :            :       return true;
     953                 :            : 
     954                 :      70455 :     case OPT_mfma4:
     955                 :      70455 :       if (value)
     956                 :            :         {
     957                 :      70434 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FMA4_SET;
     958                 :      70434 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FMA4_SET;
     959                 :            :         }
     960                 :            :       else
     961                 :            :         {
     962                 :         21 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_FMA4_UNSET;
     963                 :         21 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FMA4_UNSET;
     964                 :            :         }
     965                 :            :       return true;
     966                 :            : 
     967                 :     142992 :    case OPT_mxop:
     968                 :     142992 :       if (value)
     969                 :            :         {
     970                 :     142975 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XOP_SET;
     971                 :     142975 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XOP_SET;
     972                 :            :         }
     973                 :            :       else
     974                 :            :         {
     975                 :         17 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XOP_UNSET;
     976                 :         17 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XOP_UNSET;
     977                 :            :         }
     978                 :            :       return true;
     979                 :            : 
     980                 :      48819 :    case OPT_mlwp:
     981                 :      48819 :       if (value)
     982                 :            :         {
     983                 :      48816 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_LWP_SET;
     984                 :      48816 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_LWP_SET;
     985                 :            :         }
     986                 :            :       else
     987                 :            :         {
     988                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_LWP_UNSET;
     989                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_LWP_UNSET;
     990                 :            :         }
     991                 :            :       return true;
     992                 :            : 
     993                 :      43236 :     case OPT_mabm:
     994                 :      43236 :       if (value)
     995                 :            :         {
     996                 :      43234 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_ABM_SET;
     997                 :      43234 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ABM_SET;
     998                 :            :         }
     999                 :            :       else
    1000                 :            :         {
    1001                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_ABM_UNSET;
    1002                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ABM_UNSET;
    1003                 :            :         }
    1004                 :            :       return true;
    1005                 :            : 
    1006                 :     215748 :     case OPT_mbmi:
    1007                 :     215748 :       if (value)
    1008                 :            :         {
    1009                 :     215747 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_BMI_SET;
    1010                 :     215747 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_BMI_SET;
    1011                 :            :         }
    1012                 :            :       else
    1013                 :            :         {
    1014                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_BMI_UNSET;
    1015                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_BMI_UNSET;
    1016                 :            :         }
    1017                 :            :       return true;
    1018                 :            : 
    1019                 :      98893 :     case OPT_mbmi2:
    1020                 :      98893 :       if (value)
    1021                 :            :         {
    1022                 :      98888 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_BMI2_SET;
    1023                 :      98888 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_BMI2_SET;
    1024                 :            :         }
    1025                 :            :       else
    1026                 :            :         {
    1027                 :          5 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_BMI2_UNSET;
    1028                 :          5 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_BMI2_UNSET;
    1029                 :            :         }
    1030                 :            :       return true;
    1031                 :            : 
    1032                 :      84259 :     case OPT_mlzcnt:
    1033                 :      84259 :       if (value)
    1034                 :            :         {
    1035                 :      84258 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_LZCNT_SET;
    1036                 :      84258 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_LZCNT_SET;
    1037                 :            :         }
    1038                 :            :       else
    1039                 :            :         {
    1040                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_LZCNT_UNSET;
    1041                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_LZCNT_UNSET;
    1042                 :            :         }
    1043                 :            :       return true;
    1044                 :            : 
    1045                 :      60425 :     case OPT_mtbm:
    1046                 :      60425 :       if (value)
    1047                 :            :         {
    1048                 :      60422 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_TBM_SET;
    1049                 :      60422 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_TBM_SET;
    1050                 :            :         }
    1051                 :            :       else
    1052                 :            :         {
    1053                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_TBM_UNSET;
    1054                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_TBM_UNSET;
    1055                 :            :         }
    1056                 :            :       return true;
    1057                 :            : 
    1058                 :      45450 :     case OPT_mpopcnt:
    1059                 :      45450 :       if (value)
    1060                 :            :         {
    1061                 :      45443 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_POPCNT_SET;
    1062                 :      45443 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_POPCNT_SET;
    1063                 :            :         }
    1064                 :            :       else
    1065                 :            :         {
    1066                 :          7 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_POPCNT_UNSET;
    1067                 :          7 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_POPCNT_UNSET;
    1068                 :            :         }
    1069                 :            :       return true;
    1070                 :            : 
    1071                 :          8 :     case OPT_msahf:
    1072                 :          8 :       if (value)
    1073                 :            :         {
    1074                 :          6 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SAHF_SET;
    1075                 :          6 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SAHF_SET;
    1076                 :            :         }
    1077                 :            :       else
    1078                 :            :         {
    1079                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SAHF_UNSET;
    1080                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SAHF_UNSET;
    1081                 :            :         }
    1082                 :            :       return true;
    1083                 :            : 
    1084                 :         35 :     case OPT_mcx16:
    1085                 :         35 :       if (value)
    1086                 :            :         {
    1087                 :         34 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CX16_SET;
    1088                 :         34 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CX16_SET;
    1089                 :            :         }
    1090                 :            :       else
    1091                 :            :         {
    1092                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_CX16_UNSET;
    1093                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CX16_UNSET;
    1094                 :            :         }
    1095                 :            :       return true;
    1096                 :            : 
    1097                 :         17 :     case OPT_mmovbe:
    1098                 :         17 :       if (value)
    1099                 :            :         {
    1100                 :         16 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MOVBE_SET;
    1101                 :         16 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVBE_SET;
    1102                 :            :         }
    1103                 :            :       else
    1104                 :            :         {
    1105                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_MOVBE_UNSET;
    1106                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MOVBE_UNSET;
    1107                 :            :         }
    1108                 :            :       return true;
    1109                 :            : 
    1110                 :         16 :     case OPT_mcrc32:
    1111                 :         16 :       if (value)
    1112                 :            :         {
    1113                 :         14 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CRC32_SET;
    1114                 :         14 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CRC32_SET;
    1115                 :            :         }
    1116                 :            :       else
    1117                 :            :         {
    1118                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_CRC32_UNSET;
    1119                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CRC32_UNSET;
    1120                 :            :         }
    1121                 :            :       return true;
    1122                 :            : 
    1123                 :      91995 :     case OPT_maes:
    1124                 :      91995 :       if (value)
    1125                 :            :         {
    1126                 :      91994 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AES_SET;
    1127                 :      91994 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AES_SET;
    1128                 :            :         }
    1129                 :            :       else
    1130                 :            :         {
    1131                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_AES_UNSET;
    1132                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AES_UNSET;
    1133                 :            :         }
    1134                 :            :       return true;
    1135                 :            : 
    1136                 :     107333 :     case OPT_msha:
    1137                 :     107333 :       if (value)
    1138                 :            :         {
    1139                 :     107332 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_SHA_SET;
    1140                 :     107332 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHA_SET;
    1141                 :            :         }
    1142                 :            :       else
    1143                 :            :         {
    1144                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_SHA_UNSET;
    1145                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_SHA_UNSET;
    1146                 :            :         }
    1147                 :            :       return true;
    1148                 :            : 
    1149                 :      54640 :     case OPT_mpclmul:
    1150                 :      54640 :       if (value)
    1151                 :            :         {
    1152                 :      54639 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PCLMUL_SET;
    1153                 :      54639 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCLMUL_SET;
    1154                 :            :         }
    1155                 :            :       else
    1156                 :            :         {
    1157                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PCLMUL_UNSET;
    1158                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PCLMUL_UNSET;
    1159                 :            :         }
    1160                 :            :       return true;
    1161                 :            : 
    1162                 :     113942 :     case OPT_mfsgsbase:
    1163                 :     113942 :       if (value)
    1164                 :            :         {
    1165                 :     113941 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FSGSBASE_SET;
    1166                 :     113941 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FSGSBASE_SET;
    1167                 :            :         }
    1168                 :            :       else
    1169                 :            :         {
    1170                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_FSGSBASE_UNSET;
    1171                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FSGSBASE_UNSET;
    1172                 :            :         }
    1173                 :            :       return true;
    1174                 :            : 
    1175                 :      81223 :     case OPT_mrdrnd:
    1176                 :      81223 :       if (value)
    1177                 :            :         {
    1178                 :      81222 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RDRND_SET;
    1179                 :      81222 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDRND_SET;
    1180                 :            :         }
    1181                 :            :       else
    1182                 :            :         {
    1183                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_RDRND_UNSET;
    1184                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDRND_UNSET;
    1185                 :            :         }
    1186                 :            :       return true;
    1187                 :            : 
    1188                 :      18681 :     case OPT_mptwrite:
    1189                 :      18681 :       if (value)
    1190                 :            :         {
    1191                 :      18680 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_PTWRITE_SET;
    1192                 :      18680 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PTWRITE_SET;
    1193                 :            :         }
    1194                 :            :       else
    1195                 :            :         {
    1196                 :          1 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_PTWRITE_UNSET;
    1197                 :          1 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PTWRITE_UNSET;
    1198                 :            :         }
    1199                 :            :       return true;
    1200                 :            : 
    1201                 :      99185 :     case OPT_mf16c:
    1202                 :      99185 :       if (value)
    1203                 :            :         {
    1204                 :      99184 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_F16C_SET;
    1205                 :      99184 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_F16C_SET;
    1206                 :            :         }
    1207                 :            :       else
    1208                 :            :         {
    1209                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_F16C_UNSET;
    1210                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_F16C_UNSET;
    1211                 :            :         }
    1212                 :            :       return true;
    1213                 :            : 
    1214                 :      43868 :     case OPT_mfxsr:
    1215                 :      43868 :       if (value)
    1216                 :            :         {
    1217                 :      43866 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_FXSR_SET;
    1218                 :      43866 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FXSR_SET;
    1219                 :            :         }
    1220                 :            :       else
    1221                 :            :         {
    1222                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_FXSR_UNSET;
    1223                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_FXSR_UNSET;
    1224                 :            :         }
    1225                 :            :       return true;
    1226                 :            : 
    1227                 :       3419 :     case OPT_mxsave:
    1228                 :       3419 :       if (value)
    1229                 :            :         {
    1230                 :       3416 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVE_SET;
    1231                 :       3416 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVE_SET;
    1232                 :            :         }
    1233                 :            :       else
    1234                 :            :         {
    1235                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVE_UNSET;
    1236                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVE_UNSET;
    1237                 :            :         }
    1238                 :            :       return true;
    1239                 :            : 
    1240                 :      62130 :     case OPT_mxsaveopt:
    1241                 :      62130 :       if (value)
    1242                 :            :         {
    1243                 :      62129 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVEOPT_SET;
    1244                 :      62129 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVEOPT_SET;
    1245                 :            :         }
    1246                 :            :       else
    1247                 :            :         {
    1248                 :          1 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVEOPT_UNSET;
    1249                 :          1 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVEOPT_UNSET;
    1250                 :            :         }
    1251                 :            :       return true;
    1252                 :            : 
    1253                 :      52440 :     case OPT_mxsavec:
    1254                 :      52440 :       if (value)
    1255                 :            :         {
    1256                 :      52438 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVEC_SET;
    1257                 :      52438 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVEC_SET;
    1258                 :            :         }
    1259                 :            :       else
    1260                 :            :         {
    1261                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVEC_UNSET;
    1262                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVEC_UNSET;
    1263                 :            :         }
    1264                 :            :       return true;
    1265                 :            : 
    1266                 :      67271 :     case OPT_mxsaves:
    1267                 :      67271 :       if (value)
    1268                 :            :         {
    1269                 :      67269 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_XSAVES_SET;
    1270                 :      67269 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVES_SET;
    1271                 :            :         }
    1272                 :            :       else
    1273                 :            :         {
    1274                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_XSAVES_UNSET;
    1275                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_XSAVES_UNSET;
    1276                 :            :         }
    1277                 :            :       return true;
    1278                 :            : 
    1279                 :      69644 :     case OPT_mrdseed:
    1280                 :      69644 :       if (value)
    1281                 :            :         {
    1282                 :      69642 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_RDSEED_SET;
    1283                 :      69642 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDSEED_SET;
    1284                 :            :         }
    1285                 :            :       else
    1286                 :            :         {
    1287                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_RDSEED_UNSET;
    1288                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_RDSEED_UNSET;
    1289                 :            :         }
    1290                 :            :       return true;
    1291                 :            : 
    1292                 :      43645 :     case OPT_mprfchw:
    1293                 :      43645 :       if (value)
    1294                 :            :         {
    1295                 :      43643 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PRFCHW_SET;
    1296                 :      43643 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PRFCHW_SET;
    1297                 :            :         }
    1298                 :            :       else
    1299                 :            :         {
    1300                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PRFCHW_UNSET;
    1301                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PRFCHW_UNSET;
    1302                 :            :         }
    1303                 :            :       return true;
    1304                 :            : 
    1305                 :      43652 :     case OPT_madx:
    1306                 :      43652 :       if (value)
    1307                 :            :         {
    1308                 :      43648 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_ADX_SET;
    1309                 :      43648 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ADX_SET;
    1310                 :            :         }
    1311                 :            :       else
    1312                 :            :         {
    1313                 :          4 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_ADX_UNSET;
    1314                 :          4 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_ADX_UNSET;
    1315                 :            :         }
    1316                 :            :       return true;
    1317                 :            : 
    1318                 :      43228 :     case OPT_mprefetchwt1:
    1319                 :      43228 :       if (value)
    1320                 :            :         {
    1321                 :      43225 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PREFETCHWT1_SET;
    1322                 :      43225 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PREFETCHWT1_SET;
    1323                 :            :         }
    1324                 :            :       else
    1325                 :            :         {
    1326                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PREFETCHWT1_UNSET;
    1327                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PREFETCHWT1_UNSET;
    1328                 :            :         }
    1329                 :            :       return true;
    1330                 :            : 
    1331                 :      45069 :     case OPT_mclflushopt:
    1332                 :      45069 :       if (value)
    1333                 :            :         {
    1334                 :      45067 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CLFLUSHOPT_SET;
    1335                 :      45067 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CLFLUSHOPT_SET;
    1336                 :            :         }
    1337                 :            :       else
    1338                 :            :         {
    1339                 :          2 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_CLFLUSHOPT_UNSET;
    1340                 :          2 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CLFLUSHOPT_UNSET;
    1341                 :            :         }
    1342                 :            :       return true;
    1343                 :            : 
    1344                 :      45069 :     case OPT_mclwb:
    1345                 :      45069 :       if (value)
    1346                 :            :         {
    1347                 :      45066 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_CLWB_SET;
    1348                 :      45066 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CLWB_SET;
    1349                 :            :         }
    1350                 :            :       else
    1351                 :            :         {
    1352                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_CLWB_UNSET;
    1353                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_CLWB_UNSET;
    1354                 :            :         }
    1355                 :            :       return true;
    1356                 :            : 
    1357                 :      35663 :     case OPT_mmwaitx:
    1358                 :      35663 :       if (value)
    1359                 :            :         {
    1360                 :      35661 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_MWAITX_SET;
    1361                 :      35661 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MWAITX_SET;
    1362                 :            :         }
    1363                 :            :       else
    1364                 :            :         {
    1365                 :          2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_MWAITX_UNSET;
    1366                 :          2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_MWAITX_UNSET;
    1367                 :            :         }
    1368                 :            :       return true;
    1369                 :            : 
    1370                 :      34783 :     case OPT_mclzero:
    1371                 :      34783 :       if (value)
    1372                 :            :         {
    1373                 :      34781 :           opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CLZERO_SET;
    1374                 :      34781 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CLZERO_SET;
    1375                 :            :         }
    1376                 :            :       else
    1377                 :            :         {
    1378                 :          2 :           opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_CLZERO_UNSET;
    1379                 :          2 :           opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CLZERO_UNSET;
    1380                 :            :         }
    1381                 :            :       return true;
    1382                 :            : 
    1383                 :      52527 :     case OPT_mpku:
    1384                 :      52527 :       if (value)
    1385                 :            :         {
    1386                 :      52524 :           opts->x_ix86_isa_flags |= OPTION_MASK_ISA_PKU_SET;
    1387                 :      52524 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PKU_SET;
    1388                 :            :         }
    1389                 :            :       else
    1390                 :            :         {
    1391                 :          3 :           opts->x_ix86_isa_flags &= ~OPTION_MASK_ISA_PKU_UNSET;
    1392                 :          3 :           opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_PKU_UNSET;
    1393                 :            :         }
    1394                 :            :       return true;
    1395                 :            : 
    1396                 :            : 
    1397                 :          1 :     case OPT_malign_loops_:
    1398                 :          1 :       warning_at (loc, 0, "%<-malign-loops%> is obsolete, "
    1399                 :            :                   "use %<-falign-loops%>");
    1400                 :          1 :       if (value > MAX_CODE_ALIGN)
    1401                 :          0 :         error_at (loc, "%<-malign-loops=%d%> is not between 0 and %d",
    1402                 :            :                   value, MAX_CODE_ALIGN);
    1403                 :            :       else
    1404                 :          1 :         set_malign_value (&opts->x_str_align_loops, value);
    1405                 :            :       return true;
    1406                 :            : 
    1407                 :          0 :     case OPT_malign_jumps_:
    1408                 :          0 :       warning_at (loc, 0, "%<-malign-jumps%> is obsolete, "
    1409                 :            :                   "use %<-falign-jumps%>");
    1410                 :          0 :       if (value > MAX_CODE_ALIGN)
    1411                 :          0 :         error_at (loc, "%<-malign-jumps=%d%> is not between 0 and %d",
    1412                 :            :                   value, MAX_CODE_ALIGN);
    1413                 :            :       else
    1414                 :          0 :         set_malign_value (&opts->x_str_align_jumps, value);
    1415                 :            :       return true;
    1416                 :            : 
    1417                 :          0 :     case OPT_malign_functions_:
    1418                 :          0 :       warning_at (loc, 0,
    1419                 :            :                   "%<-malign-functions%> is obsolete, "
    1420                 :            :                   "use %<-falign-functions%>");
    1421                 :          0 :       if (value > MAX_CODE_ALIGN)
    1422                 :          0 :         error_at (loc, "%<-malign-functions=%d%> is not between 0 and %d",
    1423                 :            :                   value, MAX_CODE_ALIGN);
    1424                 :            :       else
    1425                 :          0 :         set_malign_value (&opts->x_str_align_functions, value);
    1426                 :            :       return true;
    1427                 :            : 
    1428                 :         20 :     case OPT_mbranch_cost_:
    1429                 :         20 :       if (value > 5)
    1430                 :            :         {
    1431                 :          0 :           error_at (loc, "%<-mbranch-cost=%d%> is not between 0 and 5", value);
    1432                 :          0 :           opts->x_ix86_branch_cost = 5;
    1433                 :            :         }
    1434                 :            :       return true;
    1435                 :            : 
    1436                 :            :     default:
    1437                 :            :       return true;
    1438                 :            :     }
    1439                 :            : }
    1440                 :            : 
    1441                 :            : static const struct default_options ix86_option_optimization_table[] =
    1442                 :            :   {
    1443                 :            :     /* Enable redundant extension instructions removal at -O2 and higher.  */
    1444                 :            :     { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 },
    1445                 :            :     /* Enable function splitting at -O2 and higher.  */
    1446                 :            :     { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_and_partition, NULL, 1 },
    1447                 :            :     /* The STC algorithm produces the smallest code at -Os, for x86.  */
    1448                 :            :     { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_algorithm_, NULL,
    1449                 :            :       REORDER_BLOCKS_ALGORITHM_STC },
    1450                 :            :     /* Turn off -fschedule-insns by default.  It tends to make the
    1451                 :            :        problem with not enough registers even worse.  */
    1452                 :            :     { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 },
    1453                 :            : 
    1454                 :            : #ifdef SUBTARGET_OPTIMIZATION_OPTIONS
    1455                 :            :     SUBTARGET_OPTIMIZATION_OPTIONS,
    1456                 :            : #endif
    1457                 :            :     { OPT_LEVELS_NONE, 0, NULL, 0 }
    1458                 :            :   };
    1459                 :            : 
    1460                 :            : /* Implement TARGET_OPTION_INIT_STRUCT.  */
    1461                 :            : 
    1462                 :            : static void
    1463                 :   23846200 : ix86_option_init_struct (struct gcc_options *opts)
    1464                 :            : {
    1465                 :   23846200 :   if (TARGET_MACHO)
    1466                 :            :     /* The Darwin libraries never set errno, so we might as well
    1467                 :            :        avoid calling them when that's the only reason we would.  */
    1468                 :            :     opts->x_flag_errno_math = 0;
    1469                 :            : 
    1470                 :   23846200 :   opts->x_flag_pcc_struct_return = 2;
    1471                 :   23846200 :   opts->x_flag_asynchronous_unwind_tables = 2;
    1472                 :   23846200 : }
    1473                 :            : 
    1474                 :            : /* On the x86 -fsplit-stack and -fstack-protector both use the same
    1475                 :            :    field in the TCB, so they cannot be used together.  */
    1476                 :            : 
    1477                 :            : static bool
    1478                 :       4793 : ix86_supports_split_stack (bool report ATTRIBUTE_UNUSED,
    1479                 :            :                            struct gcc_options *opts ATTRIBUTE_UNUSED)
    1480                 :            : {
    1481                 :       4793 :   bool ret = true;
    1482                 :            : 
    1483                 :            : #ifndef TARGET_THREAD_SPLIT_STACK_OFFSET
    1484                 :            :   if (report)
    1485                 :            :     error ("%<-fsplit-stack%> currently only supported on GNU/Linux");
    1486                 :            :   ret = false;
    1487                 :            : #else
    1488                 :       4793 :   if (!HAVE_GAS_CFI_PERSONALITY_DIRECTIVE)
    1489                 :            :     {
    1490                 :            :       if (report)
    1491                 :            :         error ("%<-fsplit-stack%> requires "
    1492                 :            :                "assembler support for CFI directives");
    1493                 :            :       ret = false;
    1494                 :            :     }
    1495                 :            : #endif
    1496                 :            : 
    1497                 :       4793 :   return ret;
    1498                 :            : }
    1499                 :            : 
    1500                 :            : /* Implement TARGET_EXCEPT_UNWIND_INFO.  */
    1501                 :            : 
    1502                 :            : static enum unwind_info_type
    1503                 :    4986080 : i386_except_unwind_info (struct gcc_options *opts)
    1504                 :            : {
    1505                 :            :   /* Honor the --enable-sjlj-exceptions configure switch.  */
    1506                 :            : #ifdef CONFIG_SJLJ_EXCEPTIONS
    1507                 :            :   if (CONFIG_SJLJ_EXCEPTIONS)
    1508                 :            :     return UI_SJLJ;
    1509                 :            : #endif
    1510                 :            : 
    1511                 :            :   /* On windows 64, prefer SEH exceptions over anything else.  */
    1512                 :    4986080 :   if (TARGET_64BIT && DEFAULT_ABI == MS_ABI && opts->x_flag_unwind_tables)
    1513                 :            :     return UI_SEH;
    1514                 :            : 
    1515                 :    4986080 :   if (DWARF2_UNWIND_INFO)
    1516                 :    4986080 :     return UI_DWARF2;
    1517                 :            : 
    1518                 :            :   return UI_SJLJ;
    1519                 :            : }
    1520                 :            : 
    1521                 :            : #undef  TARGET_EXCEPT_UNWIND_INFO
    1522                 :            : #define TARGET_EXCEPT_UNWIND_INFO  i386_except_unwind_info
    1523                 :            : 
    1524                 :            : #undef TARGET_DEFAULT_TARGET_FLAGS
    1525                 :            : #define TARGET_DEFAULT_TARGET_FLAGS     \
    1526                 :            :   (TARGET_DEFAULT                       \
    1527                 :            :    | TARGET_SUBTARGET_DEFAULT           \
    1528                 :            :    | TARGET_TLS_DIRECT_SEG_REFS_DEFAULT)
    1529                 :            : 
    1530                 :            : #undef TARGET_HANDLE_OPTION
    1531                 :            : #define TARGET_HANDLE_OPTION ix86_handle_option
    1532                 :            : 
    1533                 :            : #undef TARGET_OPTION_OPTIMIZATION_TABLE
    1534                 :            : #define TARGET_OPTION_OPTIMIZATION_TABLE ix86_option_optimization_table
    1535                 :            : #undef TARGET_OPTION_INIT_STRUCT
    1536                 :            : #define TARGET_OPTION_INIT_STRUCT ix86_option_init_struct
    1537                 :            : 
    1538                 :            : #undef TARGET_SUPPORTS_SPLIT_STACK
    1539                 :            : #define TARGET_SUPPORTS_SPLIT_STACK ix86_supports_split_stack
    1540                 :            : 
    1541                 :            : /* This table must be in sync with enum processor_type in i386.h.  */
    1542                 :            : const char *const processor_names[] =
    1543                 :            : {
    1544                 :            :   "generic",
    1545                 :            :   "i386",
    1546                 :            :   "i486",
    1547                 :            :   "pentium",
    1548                 :            :   "lakemont",
    1549                 :            :   "pentiumpro",
    1550                 :            :   "pentium4",
    1551                 :            :   "nocona",
    1552                 :            :   "core2",
    1553                 :            :   "nehalem",
    1554                 :            :   "sandybridge",
    1555                 :            :   "haswell",
    1556                 :            :   "bonnell",
    1557                 :            :   "silvermont",
    1558                 :            :   "goldmont",
    1559                 :            :   "goldmont-plus",
    1560                 :            :   "tremont",
    1561                 :            :   "knl",
    1562                 :            :   "knm",
    1563                 :            :   "skylake",
    1564                 :            :   "skylake-avx512",
    1565                 :            :   "cannonlake",
    1566                 :            :   "icelake-client",
    1567                 :            :   "icelake-server",
    1568                 :            :   "cascadelake",
    1569                 :            :   "tigerlake",
    1570                 :            :   "cooperlake",
    1571                 :            :   "intel",
    1572                 :            :   "geode",
    1573                 :            :   "k6",
    1574                 :            :   "athlon",
    1575                 :            :   "k8",
    1576                 :            :   "amdfam10",
    1577                 :            :   "bdver1",
    1578                 :            :   "bdver2",
    1579                 :            :   "bdver3",
    1580                 :            :   "bdver4",
    1581                 :            :   "btver1",
    1582                 :            :   "btver2",
    1583                 :            :   "znver1",
    1584                 :            :   "znver2"
    1585                 :            : };
    1586                 :            : 
    1587                 :            : /* Guarantee that the array is aligned with enum processor_type.  */
    1588                 :            : STATIC_ASSERT (ARRAY_SIZE (processor_names) == PROCESSOR_max);
    1589                 :            : 
    1590                 :            : const pta processor_alias_table[] =
    1591                 :            : {
    1592                 :            :   {"i386", PROCESSOR_I386, CPU_NONE, 0},
    1593                 :            :   {"i486", PROCESSOR_I486, CPU_NONE, 0},
    1594                 :            :   {"i586", PROCESSOR_PENTIUM, CPU_PENTIUM, 0},
    1595                 :            :   {"pentium", PROCESSOR_PENTIUM, CPU_PENTIUM, 0},
    1596                 :            :   {"lakemont", PROCESSOR_LAKEMONT, CPU_PENTIUM, PTA_NO_80387},
    1597                 :            :   {"pentium-mmx", PROCESSOR_PENTIUM, CPU_PENTIUM, PTA_MMX},
    1598                 :            :   {"winchip-c6", PROCESSOR_I486, CPU_NONE, PTA_MMX},
    1599                 :            :   {"winchip2", PROCESSOR_I486, CPU_NONE, PTA_MMX | PTA_3DNOW},
    1600                 :            :   {"c3", PROCESSOR_I486, CPU_NONE, PTA_MMX | PTA_3DNOW},
    1601                 :            :   {"samuel-2", PROCESSOR_I486, CPU_NONE, PTA_MMX | PTA_3DNOW},
    1602                 :            :   {"c3-2", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    1603                 :            :     PTA_MMX | PTA_SSE | PTA_FXSR},
    1604                 :            :   {"nehemiah", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    1605                 :            :     PTA_MMX | PTA_SSE | PTA_FXSR},
    1606                 :            :   {"c7", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    1607                 :            :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR},
    1608                 :            :   {"esther", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    1609                 :            :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR},
    1610                 :            :   {"i686", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO, 0},
    1611                 :            :   {"pentiumpro", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO, 0},
    1612                 :            :   {"pentium2", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO, PTA_MMX | PTA_FXSR},
    1613                 :            :   {"pentium3", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    1614                 :            :     PTA_MMX | PTA_SSE | PTA_FXSR},
    1615                 :            :   {"pentium3m", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    1616                 :            :     PTA_MMX | PTA_SSE | PTA_FXSR},
    1617                 :            :   {"pentium-m", PROCESSOR_PENTIUMPRO, CPU_PENTIUMPRO,
    1618                 :            :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_FXSR},
    1619                 :            :   {"pentium4", PROCESSOR_PENTIUM4, CPU_NONE,
    1620                 :            :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_FXSR},
    1621                 :            :   {"pentium4m", PROCESSOR_PENTIUM4, CPU_NONE,
    1622                 :            :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_FXSR},
    1623                 :            :   {"prescott", PROCESSOR_NOCONA, CPU_NONE,
    1624                 :            :     PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR},
    1625                 :            :   {"nocona", PROCESSOR_NOCONA, CPU_NONE,
    1626                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1627                 :            :       | PTA_CX16 | PTA_NO_SAHF | PTA_FXSR},
    1628                 :            :   {"core2", PROCESSOR_CORE2, CPU_CORE2, PTA_CORE2},
    1629                 :            :   {"nehalem", PROCESSOR_NEHALEM, CPU_NEHALEM, PTA_NEHALEM},
    1630                 :            :   {"corei7", PROCESSOR_NEHALEM, CPU_NEHALEM, PTA_NEHALEM},
    1631                 :            :   {"westmere", PROCESSOR_NEHALEM, CPU_NEHALEM, PTA_WESTMERE},
    1632                 :            :   {"sandybridge", PROCESSOR_SANDYBRIDGE, CPU_NEHALEM,
    1633                 :            :     PTA_SANDYBRIDGE},
    1634                 :            :   {"corei7-avx", PROCESSOR_SANDYBRIDGE, CPU_NEHALEM,
    1635                 :            :     PTA_SANDYBRIDGE},
    1636                 :            :   {"ivybridge", PROCESSOR_SANDYBRIDGE, CPU_NEHALEM,
    1637                 :            :     PTA_IVYBRIDGE},
    1638                 :            :   {"core-avx-i", PROCESSOR_SANDYBRIDGE, CPU_NEHALEM,
    1639                 :            :     PTA_IVYBRIDGE},
    1640                 :            :   {"haswell", PROCESSOR_HASWELL, CPU_HASWELL, PTA_HASWELL},
    1641                 :            :   {"core-avx2", PROCESSOR_HASWELL, CPU_HASWELL, PTA_HASWELL},
    1642                 :            :   {"broadwell", PROCESSOR_HASWELL, CPU_HASWELL, PTA_BROADWELL},
    1643                 :            :   {"skylake", PROCESSOR_SKYLAKE, CPU_HASWELL, PTA_SKYLAKE},
    1644                 :            :   {"skylake-avx512", PROCESSOR_SKYLAKE_AVX512, CPU_HASWELL,
    1645                 :            :     PTA_SKYLAKE_AVX512},
    1646                 :            :   {"cannonlake", PROCESSOR_CANNONLAKE, CPU_HASWELL, PTA_CANNONLAKE},
    1647                 :            :   {"icelake-client", PROCESSOR_ICELAKE_CLIENT, CPU_HASWELL,
    1648                 :            :     PTA_ICELAKE_CLIENT},
    1649                 :            :   {"icelake-server", PROCESSOR_ICELAKE_SERVER, CPU_HASWELL,
    1650                 :            :     PTA_ICELAKE_SERVER},
    1651                 :            :   {"cascadelake", PROCESSOR_CASCADELAKE, CPU_HASWELL,
    1652                 :            :     PTA_CASCADELAKE},
    1653                 :            :   {"tigerlake", PROCESSOR_TIGERLAKE, CPU_HASWELL, PTA_TIGERLAKE},
    1654                 :            :   {"cooperlake", PROCESSOR_COOPERLAKE, CPU_HASWELL, PTA_COOPERLAKE},
    1655                 :            :   {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL},
    1656                 :            :   {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL},
    1657                 :            :   {"silvermont", PROCESSOR_SILVERMONT, CPU_SLM, PTA_SILVERMONT},
    1658                 :            :   {"slm", PROCESSOR_SILVERMONT, CPU_SLM, PTA_SILVERMONT},
    1659                 :            :   {"goldmont", PROCESSOR_GOLDMONT, CPU_GLM, PTA_GOLDMONT},
    1660                 :            :   {"goldmont-plus", PROCESSOR_GOLDMONT_PLUS, CPU_GLM, PTA_GOLDMONT_PLUS},
    1661                 :            :   {"tremont", PROCESSOR_TREMONT, CPU_GLM, PTA_TREMONT},
    1662                 :            :   {"knl", PROCESSOR_KNL, CPU_SLM, PTA_KNL},
    1663                 :            :   {"knm", PROCESSOR_KNM, CPU_SLM, PTA_KNM},
    1664                 :            :   {"intel", PROCESSOR_INTEL, CPU_SLM, PTA_NEHALEM},
    1665                 :            :   {"geode", PROCESSOR_GEODE, CPU_GEODE,
    1666                 :            :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_PREFETCH_SSE},
    1667                 :            :   {"k6", PROCESSOR_K6, CPU_K6, PTA_MMX},
    1668                 :            :   {"k6-2", PROCESSOR_K6, CPU_K6, PTA_MMX | PTA_3DNOW},
    1669                 :            :   {"k6-3", PROCESSOR_K6, CPU_K6, PTA_MMX | PTA_3DNOW},
    1670                 :            :   {"athlon", PROCESSOR_ATHLON, CPU_ATHLON,
    1671                 :            :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_PREFETCH_SSE},
    1672                 :            :   {"athlon-tbird", PROCESSOR_ATHLON, CPU_ATHLON,
    1673                 :            :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_PREFETCH_SSE},
    1674                 :            :   {"athlon-4", PROCESSOR_ATHLON, CPU_ATHLON,
    1675                 :            :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR},
    1676                 :            :   {"athlon-xp", PROCESSOR_ATHLON, CPU_ATHLON,
    1677                 :            :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR},
    1678                 :            :   {"athlon-mp", PROCESSOR_ATHLON, CPU_ATHLON,
    1679                 :            :     PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_FXSR},
    1680                 :            :   {"x86-64", PROCESSOR_K8, CPU_K8,
    1681                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR},
    1682                 :            :   {"eden-x2", PROCESSOR_K8, CPU_K8,
    1683                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3 | PTA_FXSR},
    1684                 :            :   {"nano", PROCESSOR_K8, CPU_K8,
    1685                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1686                 :            :       | PTA_SSSE3 | PTA_FXSR},
    1687                 :            :   {"nano-1000", PROCESSOR_K8, CPU_K8,
    1688                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1689                 :            :       | PTA_SSSE3 | PTA_FXSR},
    1690                 :            :   {"nano-2000", PROCESSOR_K8, CPU_K8,
    1691                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1692                 :            :       | PTA_SSSE3 | PTA_FXSR},
    1693                 :            :   {"nano-3000", PROCESSOR_K8, CPU_K8,
    1694                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1695                 :            :       | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR},
    1696                 :            :   {"nano-x2", PROCESSOR_K8, CPU_K8,
    1697                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1698                 :            :       | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR},
    1699                 :            :   {"eden-x4", PROCESSOR_K8, CPU_K8,
    1700                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1701                 :            :       | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR},
    1702                 :            :   {"nano-x4", PROCESSOR_K8, CPU_K8,
    1703                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1704                 :            :       | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR},
    1705                 :            :   {"k8", PROCESSOR_K8, CPU_K8,
    1706                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    1707                 :            :       | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR},
    1708                 :            :   {"k8-sse3", PROCESSOR_K8, CPU_K8,
    1709                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    1710                 :            :       | PTA_SSE2 | PTA_SSE3 | PTA_NO_SAHF | PTA_FXSR},
    1711                 :            :   {"opteron", PROCESSOR_K8, CPU_K8,
    1712                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    1713                 :            :       | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR},
    1714                 :            :   {"opteron-sse3", PROCESSOR_K8, CPU_K8,
    1715                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    1716                 :            :       | PTA_SSE2 | PTA_SSE3 | PTA_NO_SAHF | PTA_FXSR},
    1717                 :            :   {"athlon64", PROCESSOR_K8, CPU_K8,
    1718                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    1719                 :            :       | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR},
    1720                 :            :   {"athlon64-sse3", PROCESSOR_K8, CPU_K8,
    1721                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    1722                 :            :       | PTA_SSE2 | PTA_SSE3 | PTA_NO_SAHF | PTA_FXSR},
    1723                 :            :   {"athlon-fx", PROCESSOR_K8, CPU_K8,
    1724                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
    1725                 :            :       | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR},
    1726                 :            :   {"amdfam10", PROCESSOR_AMDFAM10, CPU_AMDFAM10,
    1727                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_SSE2
    1728                 :            :       | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_PRFCHW | PTA_FXSR},
    1729                 :            :   {"barcelona", PROCESSOR_AMDFAM10, CPU_AMDFAM10,
    1730                 :            :     PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE | PTA_SSE2
    1731                 :            :       | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_PRFCHW | PTA_FXSR},
    1732                 :            :   {"bdver1", PROCESSOR_BDVER1, CPU_BDVER1,
    1733                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1734                 :            :       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
    1735                 :            :       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_FMA4
    1736                 :            :       | PTA_XOP | PTA_LWP | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE},
    1737                 :            :   {"bdver2", PROCESSOR_BDVER2, CPU_BDVER2,
    1738                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1739                 :            :       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
    1740                 :            :       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_FMA4
    1741                 :            :       | PTA_XOP | PTA_LWP | PTA_BMI | PTA_TBM | PTA_F16C
    1742                 :            :       | PTA_FMA | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE},
    1743                 :            :   {"bdver3", PROCESSOR_BDVER3, CPU_BDVER3,
    1744                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1745                 :            :       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
    1746                 :            :       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_FMA4
    1747                 :            :       | PTA_XOP | PTA_LWP | PTA_BMI | PTA_TBM | PTA_F16C
    1748                 :            :       | PTA_FMA | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE
    1749                 :            :       | PTA_XSAVEOPT | PTA_FSGSBASE},
    1750                 :            :   {"bdver4", PROCESSOR_BDVER4, CPU_BDVER4,
    1751                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1752                 :            :       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
    1753                 :            :       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2
    1754                 :            :       | PTA_FMA4 | PTA_XOP | PTA_LWP | PTA_BMI | PTA_BMI2
    1755                 :            :       | PTA_TBM | PTA_F16C | PTA_FMA | PTA_PRFCHW | PTA_FXSR
    1756                 :            :       | PTA_XSAVE | PTA_XSAVEOPT | PTA_FSGSBASE | PTA_RDRND
    1757                 :            :       | PTA_MOVBE | PTA_MWAITX},
    1758                 :            :   {"znver1", PROCESSOR_ZNVER1, CPU_ZNVER1,
    1759                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1760                 :            :       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
    1761                 :            :       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2
    1762                 :            :       | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_PRFCHW
    1763                 :            :       | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT | PTA_FSGSBASE
    1764                 :            :       | PTA_RDRND | PTA_MOVBE | PTA_MWAITX | PTA_ADX | PTA_RDSEED
    1765                 :            :       | PTA_CLZERO | PTA_CLFLUSHOPT | PTA_XSAVEC | PTA_XSAVES
    1766                 :            :       | PTA_SHA | PTA_LZCNT | PTA_POPCNT},
    1767                 :            :   {"znver2", PROCESSOR_ZNVER2, CPU_ZNVER2,
    1768                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1769                 :            :       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
    1770                 :            :       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2
    1771                 :            :       | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_PRFCHW
    1772                 :            :       | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT | PTA_FSGSBASE
    1773                 :            :       | PTA_RDRND | PTA_MOVBE | PTA_MWAITX | PTA_ADX | PTA_RDSEED
    1774                 :            :       | PTA_CLZERO | PTA_CLFLUSHOPT | PTA_XSAVEC | PTA_XSAVES
    1775                 :            :       | PTA_SHA | PTA_LZCNT | PTA_POPCNT | PTA_CLWB | PTA_RDPID
    1776                 :            :       | PTA_WBNOINVD},
    1777                 :            :   {"btver1", PROCESSOR_BTVER1, CPU_GENERIC,
    1778                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1779                 :            :       | PTA_SSSE3 | PTA_SSE4A | PTA_ABM | PTA_CX16 | PTA_PRFCHW
    1780                 :            :       | PTA_FXSR | PTA_XSAVE},
    1781                 :            :   {"btver2", PROCESSOR_BTVER2, CPU_BTVER2,
    1782                 :            :     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
    1783                 :            :       | PTA_SSSE3 | PTA_SSE4A | PTA_ABM | PTA_CX16 | PTA_SSE4_1
    1784                 :            :       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX
    1785                 :            :       | PTA_BMI | PTA_F16C | PTA_MOVBE | PTA_PRFCHW
    1786                 :            :       | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT},
    1787                 :            : 
    1788                 :            :   {"generic", PROCESSOR_GENERIC, CPU_GENERIC,
    1789                 :            :     PTA_64BIT
    1790                 :            :       | PTA_HLE /* flags are only used for -march switch.  */ },
    1791                 :            : };
    1792                 :            : 
    1793                 :            : int const pta_size = ARRAY_SIZE (processor_alias_table);
    1794                 :            : 
    1795                 :            : /* Provide valid option values for -march and -mtune options.  */
    1796                 :            : 
    1797                 :            : vec<const char *>
    1798                 :      78760 : ix86_get_valid_option_values (int option_code,
    1799                 :            :                               const char *prefix ATTRIBUTE_UNUSED)
    1800                 :            : {
    1801                 :      78760 :   vec<const char *> v;
    1802                 :      78760 :   v.create (0);
    1803                 :      78760 :   opt_code opt = (opt_code) option_code;
    1804                 :            : 
    1805                 :      78760 :   switch (opt)
    1806                 :            :     {
    1807                 :            :     case OPT_march_:
    1808                 :      32220 :       for (unsigned i = 0; i < pta_size; i++)
    1809                 :            :         {
    1810                 :      31862 :           const char *name = processor_alias_table[i].name;
    1811                 :      31862 :           gcc_checking_assert (name != NULL);
    1812                 :      31862 :           v.safe_push (name);
    1813                 :            :         }
    1814                 :            : #ifdef HAVE_LOCAL_CPU_DETECT
    1815                 :            :       /* Add also "native" as possible value.  */
    1816                 :        358 :       v.safe_push ("native");
    1817                 :            : #endif
    1818                 :            : 
    1819                 :        358 :       break;
    1820                 :            :     case OPT_mtune_:
    1821                 :      15036 :       for (unsigned i = 0; i < PROCESSOR_max; i++)
    1822                 :            :         {
    1823                 :      14678 :           const char *name = processor_names[i];
    1824                 :      14678 :           gcc_checking_assert (name != NULL);
    1825                 :      14678 :           v.safe_push (name);
    1826                 :            :         }
    1827                 :            :       break;
    1828                 :            :     default:
    1829                 :            :       break;
    1830                 :            :     }
    1831                 :            : 
    1832                 :      78760 :   return v;
    1833                 :            : }
    1834                 :            : 
    1835                 :            : #undef  TARGET_GET_VALID_OPTION_VALUES
    1836                 :            : #define TARGET_GET_VALID_OPTION_VALUES ix86_get_valid_option_values
    1837                 :            : 
    1838                 :            : struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;

Generated by: LCOV version 1.0

LCOV profile is generated on x86_64 machine using following configure options: configure --disable-bootstrap --enable-coverage=opt --enable-languages=c,c++,fortran,go,jit,lto --enable-host-shared. GCC test suite is run with the built compiler.